windows-nt/Source/XPSP1/NT/sdktools/vi/help.c
2020-09-26 16:20:57 +08:00

308 lines
8.9 KiB
C

/* $Header: /nw/tony/src/stevie/src/RCS/help.c,v 1.9 89/08/06 09:50:09 tony Exp $
*
* Routine to display a command summary.
*/
#include "stevie.h"
extern char *Version;
static int helprow;
#ifdef HELP
static void longline();
bool_t
help()
{
/***********************************************************************
* First Screen: Positioning within file, Adjusting the Screen
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Positioning within file\n"
" =======================\n"
" ^F Forward screenfull Developed by:\n"
" ^B Backward screenfull Tony Andrews\n");
longline(
" ^D scroll down half screen\n"
" ^U scroll up half screen Based on a program by:\n");
longline(
" G Goto line (end default) Tim Thompson\n"
" ]] next function\n"
" [[ previous function\n"
" /re next occurence of regular expression 're'\n");
longline(
" ?re prior occurence of regular expression 're'\n"
" n repeat last / or ?\n"
" N reverse last / or ?\n"
" % find matching (, ), {, }, [, or ]\n");
longline(
"\n"
" Adjusting the screen\n"
" ====================\n"
" ^L Redraw the screen\n"
" ^E scroll window down 1 line\n"
" ^Y scroll window up 1 line\n");
longline(
" z<RETURN> redraw, current line at top\n"
" z- ... at bottom\n"
" z. ... at center\n");
windgoto(0, 52);
longline(Version);
windgoto(helprow = Rows-2, 47);
longline("<Press space bar to continue>\n");
windgoto(helprow = Rows-1, 47);
longline("<Any other key will quit>");
if ( vgetc() != ' ' )
return TRUE;
/***********************************************************************
* Second Screen: Character positioning
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Character Positioning\n"
" =====================\n"
" ^ first non-white\n"
" 0 beginning of line\n"
" $ end of line\n"
" h backward\n");
longline(
" l forward\n"
" ^H same as h\n"
" space same as l\n"
" fx find 'x' forward\n");
longline(
" Fx find 'x' backward\n"
" tx upto 'x' forward\n"
" Tx upto 'x' backward\n"
" ; Repeat last f, F, t, or T\n");
longline(
" , inverse of ;\n"
" | to specified column\n"
" % find matching (, ), {, }, [, or ]\n");
windgoto(helprow = Rows-2, 47);
longline("<Press space bar to continue>\n");
windgoto(helprow = Rows-1, 47);
longline("<Any other key will quit>");
if ( vgetc() != ' ' )
return TRUE;
/***********************************************************************
* Third Screen: Line Positioning, Marking and Returning
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Line Positioning\n"
" ================\n"
" H home window line\n"
" L last window line\n"
" M middle window line\n");
longline(
" + next line, at first non-white\n"
" - previous line, at first non-white\n"
" CR return, same as +\n"
" j next line, same column\n"
" k previous line, same column\n");
longline(
"\n"
" Marking and Returning\n"
" =====================\n"
" `` previous context\n"
" '' ... at first non-white in line\n");
longline(
" mx mark position with letter 'x'\n"
" `x to mark 'x'\n"
" 'x ... at first non-white in line\n");
longline("\n"
" Undo & Redo\n"
" =============\n"
" u undo last change\n"
" U restore current line\n"
" . repeat last change\n");
windgoto(helprow = Rows-2, 47);
longline("<Press space bar to continue>\n");
windgoto(helprow = Rows-1, 47);
longline("<Any other key will quit>");
if ( vgetc() != ' ' )
return TRUE;
/***********************************************************************
* Fourth Screen: Insert & Replace,
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Insert and Replace\n"
" ==================\n"
" a append after cursor\n"
" i insert before cursor\n"
" A append at end of line\n"
" I insert before first non-blank\n");
longline(
" o open line below\n"
" O open line above\n"
" rx replace single char with 'x'\n"
" R replace characters\n");
longline(
"\n"
" Words, sentences, paragraphs\n"
" ============================\n"
" w word forward\n"
" b back word\n"
" e end of word\n"
" ) to next sentence (not yet)\n"
" } to next paragraph (not yet)\n");
longline(
" ( back sentence (not yet)\n"
" { back paragraph (not yet)\n"
" W blank delimited word\n"
" B back W\n"
" E to end of W\n");
windgoto(helprow = Rows-2, 47);
longline("<Press space bar to continue>\n");
windgoto(helprow = Rows-1, 47);
longline("<Any other key will quit>");
if ( vgetc() != ' ' )
return TRUE;
/***********************************************************************
* Fifth Screen: Misc. operations,
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Miscellaneous Commands\n"
" ======================\n");
longline(
" :w write back changes\n"
" :wq write and quit\n"
" :x write if modified, and quit\n"
" :q quit\n"
" :q! quit, discard changes\n"
" :e name edit file 'name'\n");
longline(
" :e! reedit, discard changes\n"
" :e # edit alternate file\n"
" :w name write file 'name'\n");
longline(
" :n edit next file in arglist\n"
" :N edit prior file in arglist\n"
" :n args specify new arglist (not yet)\n"
" :rew rewind arglist\n"
" :f show current file and lines\n");
longline(
" :f file change current file name\n"
" :g/pat/p|d global command (print or delete only)\n"
" :s/p1/p2/ text substitution (trailing 'g' optional)\n"
"");
longline(
" :ta tag to tag file entry 'tag'\n"
" ^] :ta, current word is tag\n"
" :sh run an interactive shell\n"
" :!cmd execute a shell command\n"
"");
windgoto(helprow = Rows-2, 47);
longline("<Press space bar to continue>\n");
windgoto(helprow = Rows-1, 47);
longline("<Any other key will quit>");
if ( vgetc() != ' ' )
return TRUE;
/***********************************************************************
* Sixth Screen: Operators, Misc. operations, Yank & Put
***********************************************************************/
ClearDisplay();
windgoto(helprow = 0, 0);
longline(
" Operators (double to affect lines)\n"
" ==================================\n"
" d delete\n"
" c change\n");
longline(
" < left shift\n"
" > right shift\n"
" y yank to buffer\n"
" ! filter lines\n");
longline("\n"
" Miscellaneous operations\n"
" ========================\n"
" C change rest of line\n"
" D delete rest of line\n"
" s substitute chars\n");
longline(
" S substitute lines (not yet)\n"
" J join lines\n"
" x delete characters\n"
" X ... before cursor\n");
longline("\n"
" Yank and Put\n"
" ============\n"
" p put back text\n"
" P put before\n"
" Y yank lines");
windgoto(helprow = Rows-1, 47);
longline("<Press any key>");
(void) vgetc();
return TRUE;
}
static void
longline(p)
char *p;
{
register char *s;
for ( s = p; *s ;s++ ) {
if ( *s == '\n' )
windgoto(++helprow, 0);
else
outchar(*s);
}
}
#else
bool_t
help()
{
msg("Sorry, help not configured");
return FALSE;
}
#endif