Annotation of coherent/d/usr/bin/elvis/vi.h, revision 1.1

1.1     ! root        1: /* vi.h */
        !             2: 
        !             3: /* Author:
        !             4:  *     Steve Kirkendall
        !             5:  *     16820 SW Tallac Way
        !             6:  *     Beaverton, OR 97006
        !             7:  *     [email protected], or ...uunet!tektronix!psueea!jove!kirkenda
        !             8:  */
        !             9: 
        !            10: 
        !            11: /* This is the header file for my version of vi. */
        !            12: 
        !            13: #define VERSION "ELVIS 1.4, by Steve Kirkendall"
        !            14: #define COPYING        "This version of ELVIS is freely redistributable."
        !            15: 
        !            16: #include <errno.h>
        !            17: extern int errno;
        !            18: #if TOS
        !            19: #define ENOENT (-AEFILNF)
        !            20: #endif
        !            21: 
        !            22: #if TOS
        !            23: # include <types.h>
        !            24: # define O_RDONLY      0
        !            25: # define O_WRONLY      1
        !            26: # define O_RDWR                2
        !            27: #else
        !            28: # if OSK
        !            29: #  include <modes.h>
        !            30: #  define O_RDONLY     S_IREAD
        !            31: #  define O_WRONLY     S_IWRITE
        !            32: #  define O_RDWR       (S_IREAD | S_IWRITE)
        !            33: #  define ENOENT       E_PNNF
        !            34: # else
        !            35: #  include <sys/types.h>
        !            36: #  if COHERENT
        !            37: #   include <sys/fcntl.h>
        !            38: #  else
        !            39: #   include <fcntl.h>
        !            40: #  endif
        !            41: # endif
        !            42: #endif
        !            43: 
        !            44: #ifndef O_BINARY
        !            45: # define O_BINARY      0
        !            46: #endif
        !            47: 
        !            48: #include "curses.h"
        !            49: 
        !            50: /*------------------------------------------------------------------------*/
        !            51: /* Miscellaneous constants.                                              */
        !            52: 
        !            53: #define INFINITY       2000000001L     /* a very large integer */
        !            54: #define LONGKEY                10              /* longest possible raw :map key */
        !            55: #ifndef MAXRCLEN
        !            56: # define MAXRCLEN      1000            /* longest possible .exrc file */
        !            57: #endif
        !            58: 
        !            59: /*------------------------------------------------------------------------*/
        !            60: /* These describe how temporary files are divided into blocks             */
        !            61: 
        !            62: #define BLKSIZE        1024            /* size of blocks */
        !            63: #define MAXBLKS        (BLKSIZE / sizeof(unsigned short))
        !            64: typedef union
        !            65: {
        !            66:        char            c[BLKSIZE];     /* for text blocks */
        !            67:        unsigned short  n[MAXBLKS];     /* for the header block */
        !            68: }
        !            69:        BLK;
        !            70: 
        !            71: /*------------------------------------------------------------------------*/
        !            72: /* These are used manipulate BLK buffers.                                 */
        !            73: 
        !            74: extern BLK     hdr;            /* buffer for the header block */
        !            75: extern BLK     *blkget();      /* given index into hdr.c[], reads block */
        !            76: extern BLK     *blkadd();      /* inserts a new block into hdr.c[] */
        !            77: 
        !            78: /*------------------------------------------------------------------------*/
        !            79: /* These are used to keep track of various flags                          */
        !            80: extern struct _viflags
        !            81: {
        !            82:        short   file;           /* file flags */
        !            83: }
        !            84:        viflags;
        !            85: 
        !            86: /* file flags */
        !            87: #define NEWFILE                0x0001  /* the file was just created */
        !            88: #define READONLY       0x0002  /* the file is read-only */
        !            89: #define HADNUL         0x0004  /* the file contained NUL characters */
        !            90: #define MODIFIED       0x0008  /* the file has been modified */
        !            91: #define NOFILE         0x0010  /* no name is known for the current text */
        !            92: #define ADDEDNL                0x0020  /* newlines were added to the file */
        !            93: 
        !            94: /* macros used to set/clear/test flags */
        !            95: #define setflag(x,y)   viflags.x |= y
        !            96: #define clrflag(x,y)   viflags.x &= ~y
        !            97: #define tstflag(x,y)   (viflags.x & y)
        !            98: #define initflags()    viflags.file = 0;
        !            99: 
        !           100: /* The options */
        !           101: extern char    o_autoindent[1];
        !           102: extern char    o_autoprint[1];
        !           103: extern char    o_autowrite[1];
        !           104: #ifndef NO_ERRLIST
        !           105: extern char    o_cc[30];
        !           106: #endif
        !           107: #ifndef NO_CHARATTR
        !           108: extern char    o_charattr[1];
        !           109: #endif
        !           110: extern char    o_columns[3];
        !           111: extern char    o_digraph[1];
        !           112: extern char    o_directory[30];
        !           113: extern char    o_edcompatible[1];
        !           114: extern char    o_errorbells[1];
        !           115: extern char    o_exrefresh[1];
        !           116: #ifndef NO_DIGRAPH
        !           117: extern char    o_flipcase[80];
        !           118: #endif
        !           119: #ifndef NO_SENTENCE
        !           120: extern char    o_hideformat[1];
        !           121: #endif
        !           122: extern char    o_ignorecase[1];
        !           123: #ifndef NO_EXTENSIONS
        !           124: extern char    o_inputmode[1];
        !           125: #endif
        !           126: extern char    o_keytime[3];
        !           127: extern char    o_keywordprg[80];
        !           128: extern char    o_lines[3];
        !           129: extern char    o_list[1];
        !           130: #ifndef NO_MAGIC
        !           131: extern char    o_magic[1];
        !           132: #endif
        !           133: #ifndef NO_ERRLIST
        !           134: extern char    o_make[30];
        !           135: #endif
        !           136: #ifndef NO_MODELINE
        !           137: extern char    o_modeline[1];
        !           138: #endif
        !           139: #ifndef NO_SENTENCE
        !           140: extern char    o_paragraphs[30];
        !           141: #endif
        !           142: #if MSDOS
        !           143: extern char    o_pcbios[1];
        !           144: #endif
        !           145: extern char    o_readonly[1];
        !           146: extern char    o_report[3];
        !           147: extern char    o_scroll[3];
        !           148: #ifndef NO_SENTENCE
        !           149: extern char    o_sections[30];
        !           150: #endif
        !           151: extern char    o_shell[60];
        !           152: #ifndef NO_SHOWMATCH
        !           153: extern char    o_showmatch[1];
        !           154: #endif
        !           155: #ifndef NO_SHOWMODE
        !           156: extern char    o_smd[1];
        !           157: #endif
        !           158: extern char    o_shiftwidth[3];
        !           159: extern char    o_sidescroll[3];
        !           160: extern char    o_sync[1];
        !           161: extern char    o_tabstop[3];
        !           162: extern char    o_term[30];
        !           163: extern char    o_vbell[1];
        !           164: extern char    o_warn[1];
        !           165: extern char    o_wrapmargin[3];
        !           166: extern char    o_wrapscan[1];
        !           167: 
        !           168: /*------------------------------------------------------------------------*/
        !           169: /* These help support the single-line multi-change "undo" -- shift-U      */
        !           170: 
        !           171: extern char    U_text[BLKSIZE];
        !           172: extern long    U_line;
        !           173: 
        !           174: /*------------------------------------------------------------------------*/
        !           175: /* These are used to refer to places in the text                         */
        !           176: 
        !           177: typedef long   MARK;
        !           178: #define markline(x)    (long)((x) / BLKSIZE)
        !           179: #define markidx(x)     (int)((x) & (BLKSIZE - 1))
        !           180: #define MARK_UNSET     ((MARK)0)
        !           181: #define MARK_FIRST     ((MARK)BLKSIZE)
        !           182: #define MARK_LAST      ((MARK)(nlines * BLKSIZE))
        !           183: #define MARK_AT_LINE(x)        ((MARK)((x) * BLKSIZE))
        !           184: 
        !           185: #define NMARKS 29
        !           186: extern MARK    mark[NMARKS];   /* marks a-z, plus mark ' and two temps */
        !           187: extern MARK    cursor;         /* mark where line is */
        !           188: 
        !           189: /*------------------------------------------------------------------------*/
        !           190: /* These are used to keep track of the current & previous files.         */
        !           191: 
        !           192: extern long    origtime;       /* modification date&time of the current file */
        !           193: extern char    origname[256];  /* name of the current file */
        !           194: extern char    prevorig[256];  /* name of the preceding file */
        !           195: extern long    prevline;       /* line number from preceding file */
        !           196: 
        !           197: /*------------------------------------------------------------------------*/
        !           198: /* misc housekeeping variables & functions                               */
        !           199: 
        !           200: extern int     tmpfd;          /* fd used to access the tmp file */
        !           201: extern long    lnum[MAXBLKS];  /* last line# of each block */
        !           202: extern long    nlines;         /* number of lines in the file */
        !           203: extern char    args[BLKSIZE];  /* file names given on the command line */
        !           204: extern int     argno;          /* the current element of args[] */
        !           205: extern int     nargs;          /* number of filenames in args */
        !           206: extern long    changes;        /* counts changes, to prohibit short-cuts */
        !           207: extern int     significant;    /* boolean: was a *REAL* change made? */
        !           208: extern int     mustredraw;     /* boolean: force total redraw of screen? */
        !           209: extern BLK     tmpblk;         /* a block used to accumulate changes */
        !           210: extern long    topline;        /* file line number of top line */
        !           211: extern int     leftcol;        /* column number of left col */
        !           212: #define                botline  (topline + LINES - 2)
        !           213: #define                rightcol (leftcol + COLS - 1)
        !           214: extern int     physcol;        /* physical column number that cursor is on */
        !           215: extern int     physrow;        /* physical row number that cursor is on */
        !           216: extern int     exwrote;        /* used to detect verbose ex commands */
        !           217: extern int     doingdot;       /* boolean: are we doing the "." command? */
        !           218: extern int     doingglobal;    /* boolean: are doing a ":g" command? */
        !           219: extern long    rptlines;       /* number of lines affected by a command */
        !           220: extern char    *rptlabel;      /* description of how lines were affected */
        !           221: extern char    *fetchline();   /* read a given line from tmp file */
        !           222: extern char    *parseptrn();   /* isolate a regexp in a line */
        !           223: extern MARK    paste();        /* paste from cut buffer to a given point */
        !           224: extern char    *wildcard();    /* expand wildcards in filenames */
        !           225: extern MARK    input();        /* inserts characters from keyboard */
        !           226: extern char    *linespec();    /* finds the end of a /regexp/ string */
        !           227: #define                ctrl(ch) ((ch)&037)
        !           228: #ifndef NO_RECYCLE
        !           229: extern long    allocate();     /* allocate a free block of the tmp file */
        !           230: #endif
        !           231: extern int     trapint();      /* trap handler for SIGINT */
        !           232: extern void    blkdirty();     /* marks a block as being "dirty" */
        !           233: extern void    blkflush();     /* writes a single dirty block to the disk */
        !           234: extern void    blksync();      /* forces all "dirty" blocks to disk */
        !           235: extern void    blkinit();      /* resets the block cache to "empty" state */
        !           236: extern void    beep();         /* rings the terminal's bell */
        !           237: extern void    exrefresh();    /* writes text to the screen */
        !           238: extern void    msg();          /* writes a printf-style message to the screen */
        !           239: extern void    reset_msg();    /* resets the "manymsgs" flag */
        !           240: extern void    endmsgs();      /* if "manymsgs" is set, then scroll up 1 line */
        !           241: extern void    garbage();      /* reclaims any garbage blocks */
        !           242: extern void    redraw();       /* updates the screen after a change */
        !           243: extern void    resume_curses();/* puts the terminal in "cbreak" mode */
        !           244: extern void    beforedo();     /* saves current revision before a new change */
        !           245: extern void    afterdo();      /* marks end of a beforedo() change */
        !           246: extern void    abortdo();      /* like "afterdo()" followed by "undo()" */
        !           247: extern int     undo();         /* restores file to previous undo() */
        !           248: extern void    dumpkey();      /* lists key mappings to the screen */
        !           249: extern void    mapkey();       /* defines a new key mapping */
        !           250: extern void    savekeys();     /* lists key mappings to a file */
        !           251: extern void    redrawrange();  /* records clues from modify.c */
        !           252: extern void    cut();          /* saves text in a cut buffer */
        !           253: extern void    delete();       /* deletes text */
        !           254: extern void    add();          /* adds text */
        !           255: extern void    change();       /* deletes text, and then adds other text */
        !           256: extern void    cutswitch();    /* updates cut buffers when we switch files */
        !           257: extern void    do_abbr();      /* defines or lists abbreviations */
        !           258: extern void    do_digraph();   /* defines or lists digraphs */
        !           259: extern void    exstring();     /* execute a string as EX commands */
        !           260: extern void    dumpopts();
        !           261: extern void    setopts();
        !           262: extern void    saveopts();
        !           263: #ifndef NO_DIGRAPH
        !           264: extern void    savedigs();
        !           265: #endif
        !           266: #ifndef NO_ABBR
        !           267: extern void    saveabbr();
        !           268: #endif
        !           269: extern void    cutname();
        !           270: extern void    cutname();
        !           271: extern void    initopts();
        !           272: extern void    cutend();
        !           273: 
        !           274: /*------------------------------------------------------------------------*/
        !           275: /* macros that are used as control structures                             */
        !           276: 
        !           277: #define BeforeAfter(before, after) for((before),bavar=1;bavar;(after),bavar=0)
        !           278: #define ChangeText     BeforeAfter(beforedo(FALSE),afterdo())
        !           279: 
        !           280: extern int     bavar;          /* used only in BeforeAfter macros */
        !           281: 
        !           282: /*------------------------------------------------------------------------*/
        !           283: /* These are the movement commands.  Each accepts a mark for the starting */
        !           284: /* location & number and returns a mark for the destination.             */
        !           285: 
        !           286: extern MARK    m_updnto();             /* k j G */
        !           287: extern MARK    m_right();              /* h */
        !           288: extern MARK    m_left();               /* l */
        !           289: extern MARK    m_tocol();              /* | */
        !           290: extern MARK    m_front();              /* ^ */
        !           291: extern MARK    m_rear();               /* $ */
        !           292: extern MARK    m_fword();              /* w */
        !           293: extern MARK    m_bword();              /* b */
        !           294: extern MARK    m_eword();              /* e */
        !           295: extern MARK    m_fWord();              /* W */
        !           296: extern MARK    m_bWord();              /* B */
        !           297: extern MARK    m_eWord();              /* E */
        !           298: extern MARK    m_fparagraph();         /* } */
        !           299: extern MARK    m_bparagraph();         /* { */
        !           300: extern MARK    m_fsection();           /* ]] */
        !           301: extern MARK    m_bsection();           /* [[ */
        !           302: extern MARK    m_match();              /* % */
        !           303: #ifndef NO_SENTENCE
        !           304:  extern MARK   m_fsentence();          /* ) */
        !           305:  extern MARK   m_bsentence();          /* ( */
        !           306: #endif
        !           307: extern MARK    m_tomark();             /* 'm */
        !           308: extern MARK    m_nsrch();              /* n */
        !           309: extern MARK    m_Nsrch();              /* N */
        !           310: extern MARK    m_fsrch();              /* /regexp */
        !           311: extern MARK    m_bsrch();              /* ?regexp */
        !           312: #ifndef NO_CHARSEARCH
        !           313:  extern MARK   m__ch();                /* ; , */
        !           314:  extern MARK   m_fch();                /* f */
        !           315:  extern MARK   m_tch();                /* t */
        !           316:  extern MARK   m_Fch();                /* F */
        !           317:  extern MARK   m_Tch();                /* T */
        !           318: #endif
        !           319: extern MARK    m_row();                /* H L M */
        !           320: extern MARK    m_z();                  /* z */
        !           321: extern MARK    m_scroll();             /* ^B ^F ^E ^Y ^U ^D */
        !           322: 
        !           323: /* Some stuff that is used by movement functions... */
        !           324: 
        !           325: extern MARK    adjmove();              /* a helper fn, used by move fns */
        !           326: 
        !           327: /* This macro is used to set the default value of cnt */
        !           328: #define DEFAULT(val)   if (cnt < 1) cnt = (val)
        !           329: 
        !           330: /* These are used to minimize calls to fetchline() */
        !           331: extern int     plen;   /* length of the line */
        !           332: extern long    pline;  /* line number that len refers to */
        !           333: extern long    pchgs;  /* "changes" level that len refers to */
        !           334: extern char    *ptext; /* text of previous line, if valid */
        !           335: extern void    pfetch();
        !           336: extern char    digraph();
        !           337: 
        !           338: /* This is used to build a MARK that corresponds to a specific point in the
        !           339:  * line that was most recently pfetch'ed.
        !           340:  */
        !           341: #define buildmark(text)        (MARK)(BLKSIZE * pline + (int)((text) - ptext))
        !           342: 
        !           343: 
        !           344: /*------------------------------------------------------------------------*/
        !           345: /* These are used to handle EX commands.                                 */
        !           346: 
        !           347: #define  CMD_NULL      0       /* NOT A VALID COMMAND */
        !           348: #define  CMD_ABBR      1       /* "define an abbreviation" */
        !           349: #define  CMD_ARGS      2       /* "show me the args" */
        !           350: #define  CMD_APPEND    3       /* "insert lines after this line" */
        !           351: #define  CMD_AT                4       /* "execute a cut buffer's contents via EX" */
        !           352: #define  CMD_BANG      5       /* "run a single shell command" */
        !           353: #define  CMD_CC                6       /* "run `cc` and then do CMD_ERRLIST" */
        !           354: #define  CMD_CD                7       /* "change directories" */
        !           355: #define  CMD_CHANGE    8       /* "change some lines" */
        !           356: #define  CMD_COPY      9       /* "copy the selected text to a given place" */
        !           357: #define  CMD_DELETE    10      /* "delete the selected text" */
        !           358: #define  CMD_DIGRAPH   11      /* "add a digraph, or display them all" */
        !           359: #define  CMD_EDIT      12      /* "switch to a different file" */
        !           360: #define  CMD_EQUAL     13      /* "display a line number" */
        !           361: #define  CMD_ERRLIST   14      /* "locate the next error in a list" */
        !           362: #define  CMD_FILE      15      /* "show the file's status" */
        !           363: #define  CMD_GLOBAL    16      /* "globally search & do a command" */
        !           364: #define  CMD_INSERT    17      /* "insert lines before the current line" */
        !           365: #define  CMD_JOIN      18      /* "join the selected line & the one after" */
        !           366: #define  CMD_LIST      19      /* "print lines, making control chars visible" */
        !           367: #define  CMD_MAKE      20      /* "run `make` and then do CMD_ERRLIST" */
        !           368: #define  CMD_MAP       21      /* "adjust the keyboard map" */
        !           369: #define  CMD_MARK      22      /* "mark this line" */
        !           370: #define  CMD_MKEXRC    23      /* "make a .exrc file" */
        !           371: #define  CMD_MOVE      24      /* "move the selected text to a given place" */
        !           372: #define  CMD_NEXT      25      /* "switch to next file in args" */
        !           373: #define  CMD_NUMBER    26      /* "print lines from the file w/ line numbers" */
        !           374: #define  CMD_PRESERVE  27      /* "act as though vi crashed" */
        !           375: #define  CMD_PREVIOUS  28      /* "switch to the previous file in args" */
        !           376: #define  CMD_PRINT     29      /* "print the selected text" */
        !           377: #define  CMD_PUT       30      /* "insert any cut lines before this line" */
        !           378: #define  CMD_QUIT      31      /* "quit without writing the file" */
        !           379: #define  CMD_READ      32      /* "append the given file after this line */
        !           380: #define  CMD_RECOVER   33      /* "recover file after vi crashes" - USE -r FLAG */
        !           381: #define  CMD_REWIND    34      /* "rewind to first file" */
        !           382: #define  CMD_SET       35      /* "set a variable's value" */
        !           383: #define  CMD_SHELL     36      /* "run some lines through a command" */
        !           384: #define  CMD_SHIFTL    37      /* "shift lines left" */
        !           385: #define  CMD_SHIFTR    38      /* "shift lines right" */
        !           386: #define  CMD_SOURCE    39      /* "interpret a file's contents as ex commands" */
        !           387: #define  CMD_STOP      40      /* same as CMD_SUSPEND */
        !           388: #define  CMD_SUBAGAIN  41      /* "repeat the previous substitution" */
        !           389: #define  CMD_SUBSTITUTE        42      /* "substitute text in this line" */
        !           390: #define  CMD_SUSPEND   43      /* "suspend the vi session" */
        !           391: #define  CMD_TR                44      /* "transliterate chars in the selected lines" */
        !           392: #define  CMD_TAG       45      /* "go to a particular tag" */
        !           393: #define  CMD_UNABBR    46      /* "remove an abbreviation definition" */
        !           394: #define  CMD_UNDO      47      /* "undo the previous command" */
        !           395: #define  CMD_UNMAP     48      /* "remove a key sequence map */
        !           396: #define  CMD_VERSION   49      /* "describe which version this is" */
        !           397: #define  CMD_VGLOBAL   50      /* "apply a cmd to lines NOT containing an RE" */
        !           398: #define  CMD_VISUAL    51      /* "go into visual mode" */
        !           399: #define  CMD_WQUIT     52      /* "write this file out (any case) & quit" */
        !           400: #define  CMD_WRITE     53      /* "write the selected(?) text to a given file" */
        !           401: #define  CMD_XIT       54      /* "write this file out (if modified) & quit" */
        !           402: #define  CMD_YANK      55      /* "copy the selected text into the cut buffer" */
        !           403: #ifdef DEBUG
        !           404: # define CMD_DEBUG     56      /* access to internal data structures */
        !           405: # define CMD_VALIDATE  57      /* check for internal consistency */
        !           406: #endif
        !           407: typedef int CMD;
        !           408: 
        !           409: extern void    ex();
        !           410: extern void    vi();
        !           411: extern void    doexcmd();
        !           412: 
        !           413: #ifndef NO_ABBR
        !           414: extern void    cmd_abbr();
        !           415: #endif
        !           416: extern void    cmd_append();
        !           417: extern void    cmd_args();
        !           418: #ifndef NO_AT
        !           419: extern void    cmd_at();
        !           420: #endif
        !           421: extern void    cmd_cd();
        !           422: extern void    cmd_delete();
        !           423: #ifndef NO_DIGRAPH
        !           424: extern void    cmd_digraph();
        !           425: #endif
        !           426: extern void    cmd_edit();
        !           427: #ifndef NO_ERRLIST
        !           428: extern void    cmd_errlist();
        !           429: #endif
        !           430: extern void    cmd_file();
        !           431: extern void    cmd_global();
        !           432: extern void    cmd_join();
        !           433: extern void    cmd_mark();
        !           434: #ifndef NO_ERRLIST
        !           435: extern void    cmd_make();
        !           436: #endif
        !           437: extern void    cmd_map();
        !           438: #ifndef NO_MKEXRC
        !           439: extern void    cmd_mkexrc();
        !           440: #endif
        !           441: extern void    cmd_next();
        !           442: extern void    cmd_print();
        !           443: extern void    cmd_put();
        !           444: extern void    cmd_read();
        !           445: extern void    cmd_set();
        !           446: extern void    cmd_shell();
        !           447: extern void    cmd_shift();
        !           448: extern void    cmd_source();
        !           449: extern void    cmd_substitute();
        !           450: extern void    cmd_tag();
        !           451: extern void    cmd_undo();
        !           452: extern void    cmd_version();
        !           453: extern void    cmd_visual();
        !           454: extern void    cmd_write();
        !           455: extern void    cmd_xit();
        !           456: extern void    cmd_move();
        !           457: #ifdef DEBUG
        !           458: extern void    cmd_debug();
        !           459: extern void    cmd_validate();
        !           460: #endif
        !           461: 
        !           462: /*----------------------------------------------------------------------*/
        !           463: /* These are used to handle VI commands                                */
        !           464: 
        !           465: extern MARK    v_1ex();        /* : */
        !           466: extern MARK    v_mark();       /* m */
        !           467: extern MARK    v_quit();       /* Q */
        !           468: extern MARK    v_redraw();     /* ^L ^R */
        !           469: extern MARK    v_ulcase();     /* ~ */
        !           470: extern MARK    v_undo();       /* u */
        !           471: extern MARK    v_xchar();      /* x */
        !           472: extern MARK    v_Xchar();      /* X */
        !           473: extern MARK    v_replace();    /* r */
        !           474: extern MARK    v_overtype();   /* R */
        !           475: extern MARK    v_selcut();     /* " */
        !           476: extern MARK    v_paste();      /* p P */
        !           477: extern MARK    v_yank();       /* y Y */
        !           478: extern MARK    v_delete();     /* d D */
        !           479: extern MARK    v_join();       /* J */
        !           480: extern MARK    v_insert();     /* a A i I o O */
        !           481: extern MARK    v_change();     /* c C */
        !           482: extern MARK    v_subst();      /* s */
        !           483: extern MARK    v_lshift();     /* < */
        !           484: extern MARK    v_rshift();     /* > */
        !           485: extern MARK    v_filter();     /* ! */
        !           486: extern MARK    v_status();     /* ^G */
        !           487: extern MARK    v_switch();     /* ^^ */
        !           488: extern MARK    v_tag();        /* ^] */
        !           489: extern MARK    v_xit();        /* ZZ */
        !           490: extern MARK    v_undoline();   /* U */
        !           491: extern MARK    v_again();      /* & */
        !           492: #ifndef NO_EXTENSIONS
        !           493:  extern MARK   v_keyword();    /* ^K */
        !           494:  extern MARK   v_increment();  /* * */
        !           495: #endif
        !           496: #ifndef NO_ERRLIST
        !           497:  extern MARK   v_errlist();    /* * */
        !           498: #endif
        !           499: #ifndef NO_AT
        !           500:  extern MARK   v_at();         /* @ */
        !           501: #endif
        !           502: 
        !           503: /*----------------------------------------------------------------------*/
        !           504: /* These describe what mode we're in */
        !           505: 
        !           506: #define MODE_EX                1       /* executing ex commands */
        !           507: #define        MODE_VI         2       /* executing vi commands */
        !           508: #define        MODE_COLON      3       /* executing an ex command from vi mode */
        !           509: #define        MODE_QUIT       4
        !           510: extern int     mode;
        !           511: 
        !           512: #define WHEN_VICMD     1       /* getkey: we're reading a VI command */
        !           513: #define WHEN_VIINP     2       /* getkey: we're in VI's INPUT mode */
        !           514: #define WHEN_VIREP     4       /* getkey: we're in VI's REPLACE mode */
        !           515: #define WHEN_EX                8       /* getkey: we're in EX mode */
        !           516: #define WHEN_MSG       16      /* getkey: we're at a "more" prompt */
        !           517: #define WHEN_INMV      256     /* in input mode, interpret the key in VICMD mode */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.