/************************************************************************* *** command.c (JJB TEMPLAR) *** *** Date modifications begun: 7/8/89. *** *** Last modified: 27/8/89. *** *************************************************************************/ /*** User-level command processor. *** *************************************************************************/ #include "less.h" #include #include #include "win.h" #include "cmd.h" extern struct Window *Window; extern struct Requester req; extern int quit_at_eof; extern int hit_eof; extern int sc_height; extern int top_scroll; extern int l_start; extern char version[]; extern char current_file[]; int has_resized; /* Used by getc() to indicate if user resized */ /*** Main command processor. *** *** Accept and execute commands until a quit command, then return. ***/ void commands() /*====================================================*/ { has_resized = 0; while (1) { if (has_resized) { /* In case user resizes during getc */ has_resized = 0; resize(); repaint(); setbar(1); } if (quit_at_eof && (hit_eof > 1)) next_file(1); SetWindowTitles(Window,pr_string(),(char *)-1L); /* Prompt */ switch (getcmd()) { case (C_FORW_PAGE): forward(sc_height-1, 1); setbar(1); break; case (C_BACK_PAGE): backward(sc_height-1, 1); setbar(1); break; case (C_FORW_LINE): forward(1, 0); setbar(0); break; case (C_BACK_LINE): backward(1, 0); setbar(0); break; case (C_TOP): jump_back(1); setbar(1); break; case (C_BOTTOM): jump_forw(); setbar(1); break; case (C_HELP): help(); repaint(); break; case (C_ABOUT): about(); repaint(); break; case (C_FORW_FILE): next_file(1); break; case (C_BACK_FILE): prev_file(1); break; case (C_VERSION): error(version,0); break; case (C_QUIT): return; /* so infinite while() loop */ case (C_REPAINT): repaint(); break; case (C_INFO): error(eq_message(),0); break; case (C_BOOM): doboom(); break; /* Don't fall through. It appears a NEWSIZE message is * still posted by Intuition. */ case (C_RESIZE): resize(); repaint(); setbar(1); break; case (C_SRIGHT): l_start = MAXHORIZ; /* Fall thru */ case (C_RIGHT): horiz(1); repaint(); break; case (C_SLEFT): l_start = 0; /* Fall thru */ case (C_LEFT): horiz(0); repaint(); break; case (C_SCROLL): usebar(); break; case (C_HSCROLL): usehbar(); repaint(); break; case (C_SEARCH_F): search_forw(1); break; case (C_SEARCH_B): search_back(1); break; case (C_SEARCH_FNC):search_forw(0); break; case (C_SEARCH_BNC):search_back(0); break; case (C_SET_MARK): setmark(); break; case (C_GO_MARK): gomark(); break; case (C_PERCENT): jump_percent(); break; case (C_ICONIFY): doiconify(); break; case (C_PRINT): print(); break; case (C_MODE_ON): domode(1); repaint(); break; case (C_MODE_OFF): domode(0); repaint(); break; case (C_NEWCLI): newcli(); break; case (C_EDITOR): editor(); break; case (C_ADDFILE): add_file(); break; case (C_INNOCUOUS): r_bool("Not implemented"); break; default: bell(); break; } } }