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

1.1     ! root        1: /* vi.h */
        !             2: 
        !             3: /* Author:
        !             4:  *     Steve Kirkendall
        !             5:  *     14407 SW Teal Blvd. #C
        !             6:  *     Beaverton, OR 97005
        !             7:  *     [email protected]
        !             8:  */
        !             9: 
        !            10: #define VERSION "ELVIS 1.6, by Steve Kirkendall (27 April 1992)"
        !            11: #define COPYING        "This version of ELVIS is freely redistributable."
        !            12: 
        !            13: #include <errno.h>
        !            14: extern int errno;
        !            15: #if TOS
        !            16: # ifndef __GNUC__
        !            17: #  define ENOENT (-AEFILNF)
        !            18: # endif
        !            19: #endif
        !            20: 
        !            21: #if TOS || VMS
        !            22: # include <types.h>
        !            23: # define O_RDONLY      0
        !            24: # define O_WRONLY      1
        !            25: # define O_RDWR                2
        !            26: # ifdef __GNUC__
        !            27: #  define S_IJDIR      S_IFDIR
        !            28: # endif
        !            29: #else
        !            30: # if OSK
        !            31: #  include <modes.h>
        !            32: #  define O_RDONLY     S_IREAD
        !            33: #  define O_WRONLY     S_IWRITE
        !            34: #  define O_RDWR       (S_IREAD | S_IWRITE)
        !            35: #  define ENOENT       E_PNNF
        !            36: #  define sprintf      Sprintf
        !            37: # else
        !            38: #  if !AMIGA
        !            39: #   include <sys/types.h>
        !            40: #  endif
        !            41: #  include <fcntl.h>
        !            42: # endif
        !            43: #endif
        !            44: 
        !            45: #ifndef O_BINARY
        !            46: # define O_BINARY      0
        !            47: #endif
        !            48: 
        !            49: #include "curses.h"
        !            50: 
        !            51: #include <signal.h>
        !            52: #ifdef __STDC__
        !            53: # include <stdio.h>    /* for [v]sprintf prototype             */
        !            54: # include <string.h>   /* for str* prototypes                  */
        !            55: # include <stdlib.h>   /* for atoi, system, malloc, free       */
        !            56: # include <stdarg.h>   /* for vararg definitions               */
        !            57: # if ANY_UNIX
        !            58: #  include <unistd.h>  /* for read, write, ... prototypes      */
        !            59: # include <sys/wait.h> /* for wait prototype                   */
        !            60: # endif
        !            61: #endif
        !            62: 
        !            63: /*------------------------------------------------------------------------*/
        !            64: /* Miscellaneous constants.                                              */
        !            65: 
        !            66: #define INFINITY       2000000001L     /* a very large integer */
        !            67: #define LONGKEY                10              /* longest possible raw :map key */
        !            68: #ifndef MAXRCLEN
        !            69: # define MAXRCLEN      1000            /* longest possible :@ command */
        !            70: #endif
        !            71: 
        !            72: /*------------------------------------------------------------------------*/
        !            73: /* These describe how temporary files are divided into blocks             */
        !            74: 
        !            75: #define MAXBLKS        (BLKSIZE / sizeof(unsigned short))
        !            76: typedef union
        !            77: {
        !            78:        char            c[BLKSIZE];     /* for text blocks */
        !            79:        unsigned short  n[MAXBLKS];     /* for the header block */
        !            80: }
        !            81:        BLK;
        !            82: 
        !            83: /*------------------------------------------------------------------------*/
        !            84: /* These are used manipulate BLK buffers.                                 */
        !            85: 
        !            86: extern BLK     hdr;            /* buffer for the header block */
        !            87: extern BLK *blkget P_((int));  /* given index into hdr.c[], reads block */
        !            88: extern BLK *blkadd P_((int));  /* inserts a new block into hdr.c[] */
        !            89: 
        !            90: /*------------------------------------------------------------------------*/
        !            91: /* These are used to keep track of various flags                          */
        !            92: extern struct _viflags
        !            93: {
        !            94:        short   file;           /* file flags */
        !            95: }
        !            96:        viflags;
        !            97: 
        !            98: /* file flags */
        !            99: #define NEWFILE                0x0001  /* the file was just created */
        !           100: #define READONLY       0x0002  /* the file is read-only */
        !           101: #define HADNUL         0x0004  /* the file contained NUL characters */
        !           102: #define MODIFIED       0x0008  /* the file has been modified, but not saved */
        !           103: #define NOFILE         0x0010  /* no name is known for the current text */
        !           104: #define ADDEDNL                0x0020  /* newlines were added to the file */
        !           105: #define HADBS          0x0040  /* backspace chars were lost from the file */
        !           106: #define UNDOABLE       0x0080  /* file has been modified */
        !           107: #define NOTEDITED      0x0100  /* the :file command has been used */
        !           108: 
        !           109: /* macros used to set/clear/test flags */
        !           110: #define setflag(x,y)   viflags.x |= y
        !           111: #define clrflag(x,y)   viflags.x &= ~y
        !           112: #define tstflag(x,y)   (viflags.x & y)
        !           113: #define initflags()    viflags.file = 0;
        !           114: 
        !           115: /* The options */
        !           116: extern char    o_autoindent[1];
        !           117: extern char    o_autoprint[1];
        !           118: extern char    o_autotab[1];
        !           119: extern char    o_autowrite[1];
        !           120: extern char    o_columns[3];
        !           121: extern char    o_directory[30];
        !           122: extern char    o_edcompatible[1];
        !           123: extern char    o_equalprg[80];
        !           124: extern char    o_errorbells[1];
        !           125: extern char    o_exrefresh[1];
        !           126: extern char    o_ignorecase[1];
        !           127: extern char    o_keytime[3];
        !           128: extern char    o_keywordprg[80];
        !           129: extern char    o_lines[3];
        !           130: extern char    o_list[1];
        !           131: extern char    o_number[1];
        !           132: extern char    o_readonly[1];
        !           133: extern char    o_remap[1];
        !           134: extern char    o_report[3];
        !           135: extern char    o_scroll[3];
        !           136: extern char    o_shell[60];
        !           137: extern char    o_shiftwidth[3];
        !           138: extern char    o_sidescroll[3];
        !           139: extern char    o_sync[1];
        !           140: extern char    o_tabstop[3];
        !           141: extern char    o_term[30];
        !           142: extern char    o_flash[1];
        !           143: extern char    o_warn[1];
        !           144: extern char    o_wrapscan[1];
        !           145: 
        !           146: #ifndef CRUNCH
        !           147: extern char    o_beautify[1];
        !           148: extern char    o_exrc[1];
        !           149: extern char    o_mesg[1];
        !           150: extern char    o_more[1];
        !           151: extern char    o_nearscroll[3];
        !           152: extern char    o_novice[1];
        !           153: extern char    o_prompt[1];
        !           154: extern char    o_taglength[3];
        !           155: extern char    o_terse[1];
        !           156: extern char    o_window[3];
        !           157: extern char    o_wrapmargin[3];
        !           158: extern char    o_writeany[1];
        !           159: #endif
        !           160: 
        !           161: #ifndef NO_ERRLIST
        !           162: extern char    o_cc[30];
        !           163: extern char    o_make[30];
        !           164: #endif
        !           165: 
        !           166: #ifndef NO_CHARATTR
        !           167: extern char    o_charattr[1];
        !           168: #endif
        !           169: 
        !           170: #ifndef NO_DIGRAPH
        !           171: extern char    o_digraph[1];
        !           172: extern char    o_flipcase[80];
        !           173: #endif
        !           174: 
        !           175: #ifndef NO_SENTENCE
        !           176: extern char    o_hideformat[1];
        !           177: #endif
        !           178: 
        !           179: #ifndef NO_EXTENSIONS
        !           180: extern char    o_inputmode[1];
        !           181: extern char    o_ruler[1];
        !           182: #endif
        !           183: 
        !           184: #ifndef NO_MAGIC
        !           185: extern char    o_magic[1];
        !           186: #endif
        !           187: 
        !           188: #ifndef NO_MODELINES
        !           189: extern char    o_modelines[1];
        !           190: #endif
        !           191: 
        !           192: #ifndef NO_SENTENCE
        !           193: extern char    o_paragraphs[30];
        !           194: extern char    o_sections[30];
        !           195: #endif
        !           196: 
        !           197: #if MSDOS
        !           198: extern char    o_pcbios[1];
        !           199: #endif
        !           200: 
        !           201: #ifndef NO_SHOWMATCH
        !           202: extern char    o_showmatch[1];
        !           203: #endif
        !           204: 
        !           205: #ifndef        NO_SHOWMODE
        !           206: extern char    o_smd[1];
        !           207: #endif
        !           208: 
        !           209: /*------------------------------------------------------------------------*/
        !           210: /* These help support the single-line multi-change "undo" -- shift-U      */
        !           211: 
        !           212: extern char    U_text[BLKSIZE];
        !           213: extern long    U_line;
        !           214: 
        !           215: /*------------------------------------------------------------------------*/
        !           216: /* These are used to refer to places in the text                         */
        !           217: 
        !           218: typedef long   MARK;
        !           219: #define markline(x)    (long)((x) / BLKSIZE)
        !           220: #define markidx(x)     (int)((x) & (BLKSIZE - 1))
        !           221: #define MARK_UNSET     ((MARK)0)
        !           222: #define MARK_FIRST     ((MARK)BLKSIZE)
        !           223: #define MARK_LAST      ((MARK)(nlines * BLKSIZE))
        !           224: #define MARK_EOF       ((MARK)((nlines + 1) * BLKSIZE))
        !           225: #define MARK_AT_LINE(x)        ((MARK)(x) * BLKSIZE)
        !           226: 
        !           227: #define NMARKS 29
        !           228: extern MARK    mark[NMARKS];   /* marks a-z, plus mark ' and two temps */
        !           229: extern MARK    cursor;         /* mark where line is */
        !           230: 
        !           231: /*------------------------------------------------------------------------*/
        !           232: /* These are used to keep track of the current & previous files.         */
        !           233: 
        !           234: extern long    origtime;       /* modification date&time of the current file */
        !           235: extern char    origname[256];  /* name of the current file */
        !           236: extern char    prevorig[256];  /* name of the preceding file */
        !           237: extern long    prevline;       /* line number from preceding file */
        !           238: 
        !           239: /*------------------------------------------------------------------------*/
        !           240: /* misc housekeeping variables & functions                               */
        !           241: 
        !           242: extern int     tmpfd;                          /* fd used to access the tmp file */
        !           243: extern int     tmpnum;                         /* counter used to generate unique filenames */
        !           244: extern long    lnum[MAXBLKS];                  /* last line# of each block */
        !           245: extern long    nlines;                         /* number of lines in the file */
        !           246: extern char    args[BLKSIZE];                  /* file names given on the command line */
        !           247: extern int     argno;                          /* the current element of args[] */
        !           248: extern int     nargs;                          /* number of filenames in args */
        !           249: extern long    changes;                        /* counts changes, to prohibit short-cuts */
        !           250: extern int     significant;                    /* boolean: was a *REAL* change made? */
        !           251: extern int     exitcode;                       /* 0=not updated, 1=overwritten, else error */
        !           252: extern BLK     tmpblk;                         /* a block used to accumulate changes */
        !           253: extern long    topline;                        /* file line number of top line */
        !           254: extern int     leftcol;                        /* column number of left col */
        !           255: #define                botline  (topline + LINES - 2)
        !           256: #define                rightcol (leftcol + COLS - (*o_number ? 9 : 1))
        !           257: extern int     physcol;                        /* physical column number that cursor is on */
        !           258: extern int     physrow;                        /* physical row number that cursor is on */
        !           259: extern int     exwrote;                        /* used to detect verbose ex commands */
        !           260: extern int     doingdot;                       /* boolean: are we doing the "." command? */
        !           261: extern int     doingglobal;                    /* boolean: are doing a ":g" command? */
        !           262: extern long    rptlines;                       /* number of lines affected by a command */
        !           263: extern char    *rptlabel;                      /* description of how lines were affected */
        !           264: extern char    *fetchline P_((long));          /* read a given line from tmp file */
        !           265: extern char    *parseptrn P_((REG char *));    /* isolate a regexp in a line */
        !           266: extern MARK    paste P_((MARK, int, int));     /* paste from cut buffer to a given point */
        !           267: extern char    *wildcard P_((char *));         /* expand wildcards in filenames */
        !           268: extern MARK    input P_((MARK, MARK, int, int));       /* inserts characters from keyboard */
        !           269: extern char    *linespec P_((REG char *, MARK *));     /* finds the end of a /regexp/ string */
        !           270: #define                ctrl(ch) ((ch)&037)
        !           271: #ifndef NO_RECYCLE
        !           272: extern long    allocate P_((void));            /* allocate a free block of the tmp file */
        !           273: #endif
        !           274: extern int     trapint P_((int));              /* trap handler for SIGINT */
        !           275: extern int     deathtrap P_((int));            /* trap handler for deadly signals */
        !           276: extern void    blkdirty P_((BLK *));           /* marks a block as being "dirty" */
        !           277: extern void    blksync P_((void));             /* forces all "dirty" blocks to disk */
        !           278: extern void    blkinit P_((void));             /* resets the block cache to "empty" state */
        !           279: extern void    beep P_((void));                /* rings the terminal's bell */
        !           280: extern void    exrefresh P_((void));           /* writes text to the screen */
        !           281: #ifdef __STDC__
        !           282: extern void    msg (char *, ...);              /* writes a printf-style message to the screen */
        !           283: #else
        !           284: extern void    msg ();                         /* writes a printf-style message to the screen */
        !           285: #endif
        !           286: extern void    endmsgs P_((void));             /* if "manymsgs" is set, then scroll up 1 line */
        !           287: extern void    garbage P_((void));             /* reclaims any garbage blocks */
        !           288: extern void    redraw P_((MARK, int));         /* updates the screen after a change */
        !           289: extern void    resume_curses P_((int));        /* puts the terminal in "cbreak" mode */
        !           290: extern void    beforedo P_((int));             /* saves current revision before a new change */
        !           291: extern void    afterdo P_((void));             /* marks end of a beforedo() change */
        !           292: extern void    abortdo P_((void));             /* like "afterdo()" followed by "undo()" */
        !           293: extern int     undo P_((void));                /* restores file to previous undo() */
        !           294: extern void    dumpkey P_((int, int));         /* lists key mappings to the screen */
        !           295: extern void    mapkey P_((char *, char *, int, char *));       /* defines a new key mapping */
        !           296: extern void    redrawrange P_((long, long, long));     /* records clues from modify.c */
        !           297: extern void    cut P_((MARK, MARK));           /* saves text in a cut buffer */
        !           298: extern void    delete P_((MARK, MARK));        /* deletes text */
        !           299: extern void    add P_((MARK, char *));         /* adds text */
        !           300: extern void    change P_((MARK, MARK, char *));/* deletes text, and then adds other text */
        !           301: extern void    cutswitch P_((void));           /* updates cut buffers when we switch files */
        !           302: extern void    do_digraph P_((int, char []));  /* defines or lists digraphs */
        !           303: extern void    exstring P_((char *, int, int));/* execute a string as EX commands */
        !           304: extern void    dumpopts P_((int));             /* display current option settings on the screen */
        !           305: extern void    setopts P_((char *));           /* assign new values to options */
        !           306: extern void    saveopts P_((int));             /* save current option values to a given fd */
        !           307: extern void    savedigs P_((int));             /* save current non-standard digraphs to fd */
        !           308: extern void    savecolor P_((int));            /* save current color settings (if any) to fd */
        !           309: extern void    cutname P_((int));              /* select cut buffer for next cut/paste */
        !           310: extern void    initopts P_((void));            /* initialize options */
        !           311: extern void    cutend P_((void));              /* free all cut buffers & delete temp files */
        !           312: extern int     storename P_((char *));         /* stamp temp file with pathname of text file */
        !           313: extern int     tmpstart P_((char *));          /* load a text file into edit buffer */
        !           314: extern int     tmpsave P_((char *, int));      /* write edit buffer out to text file */
        !           315: extern int     tmpend P_((int));               /* call tmpsave(), and then tmpabort */
        !           316: extern int     tmpabort P_((int));             /* abandon the current edit buffer */
        !           317: extern void    savemaps P_((int, int));        /* write current :map or :ab commands to fd */
        !           318: extern int     ansicolor P_((int, int));       /* emit ANSI color command to terminal */
        !           319: extern int     filter P_((MARK, MARK, char *, int)); /* I/O though another program */
        !           320: extern int     getkey P_((int));               /* return a keystroke, interpretting maps */
        !           321: extern int     vgets P_((int, char *, int));   /* read a single line from keyboard */
        !           322: extern int     doexrc P_((char *));            /* execute a string as a sequence of EX commands */
        !           323: extern int     cb2str P_((int, char *, unsigned));/* return a string containing cut buffer's contents */
        !           324: extern int     ansiquit P_((void));            /* neutralize previous ansicolor() call */
        !           325: extern int     ttyread P_((char *, int, int)); /* read from keyboard with optional timeout */
        !           326: extern int     tgetent P_((char *, char *));   /* start termcap */
        !           327: extern int     tgetnum P_((char *));           /* get a termcap number */
        !           328: extern int     tgetflag P_((char *));          /* get a termcap boolean */
        !           329: extern int     getsize P_((int));              /* determine how big the screen is */
        !           330: extern int     endcolor P_((void));            /* used during color output */
        !           331: extern int     getabkey P_((int, char *, int));/* like getkey(), but also does abbreviations */
        !           332: extern int     idx2col P_((MARK, REG char *, int)); /* returns column# of a given MARK */
        !           333: extern int     cutneeds P_((BLK *));           /* returns bitmap of blocks needed to hold cutbuffer text */
        !           334: extern void    execmap P_((int, char *, int)); /* replaces "raw" keys with "mapped" keys */
        !           335: #ifndef CRUNCH
        !           336: extern int     wset;                           /* boolean: has the "window" size been set? */
        !           337: #endif
        !           338: 
        !           339: /*------------------------------------------------------------------------*/
        !           340: /* macros that are used as control structures                             */
        !           341: 
        !           342: #define BeforeAfter(before, after) for((before),bavar=1;bavar;(after),bavar=0)
        !           343: #define ChangeText     BeforeAfter(beforedo(FALSE),afterdo())
        !           344: 
        !           345: extern int     bavar;          /* used only in BeforeAfter macros */
        !           346: 
        !           347: /*------------------------------------------------------------------------*/
        !           348: /* These are the movement commands.  Each accepts a mark for the starting */
        !           349: /* location & number and returns a mark for the destination.             */
        !           350: 
        !           351: extern MARK    m_updnto P_((MARK, long, int));         /* k j G */
        !           352: extern MARK    m_right P_((MARK, long, int, int));     /* h */
        !           353: extern MARK    m_left P_((MARK, long));                /* l */
        !           354: extern MARK    m_tocol P_((MARK, long, int));          /* | */
        !           355: extern MARK    m_front P_((MARK, long));               /* ^ */
        !           356: extern MARK    m_rear P_((MARK, long));                /* $ */
        !           357: extern MARK    m_fword P_((MARK, long, int, int));     /* w */
        !           358: extern MARK    m_bword P_((MARK, long, int));          /* b */
        !           359: extern MARK    m_eword P_((MARK, long, int));          /* e */
        !           360: extern MARK    m_paragraph P_((MARK, long, int));      /* { } [[ ]] */
        !           361: extern MARK    m_match P_((MARK, long));               /* % */
        !           362: #ifndef NO_SENTENCE
        !           363: extern MARK    m_sentence P_((MARK, long, int));       /* ( ) */
        !           364: #endif
        !           365: extern MARK    m_tomark P_((MARK, long, int));         /* 'm */
        !           366: #ifndef NO_EXTENSIONS
        !           367: extern MARK    m_wsrch P_((char *, MARK, int));        /* ^A */
        !           368: #endif
        !           369: extern MARK    m_nsrch P_((MARK));                     /* n */
        !           370: extern MARK    m_Nsrch P_((MARK));                     /* N */
        !           371: extern MARK    m_fsrch P_((MARK, char *));             /* /regexp */
        !           372: extern MARK    m_bsrch P_((MARK, char *));             /* ?regexp */
        !           373: #ifndef NO_CHARSEARCH
        !           374: extern MARK    m__ch P_((MARK, long, int));            /* ; , */
        !           375: extern MARK    m_fch P_((MARK, long, int));            /* f */
        !           376: extern MARK    m_tch P_((MARK, long, int));            /* t */
        !           377: extern MARK    m_Fch P_((MARK, long, int));            /* F */
        !           378: extern MARK    m_Tch P_((MARK, long, int));            /* T */
        !           379: #endif
        !           380: extern MARK    m_row P_((MARK, long, int));            /* H L M */
        !           381: extern MARK    m_z P_((MARK, long, int));              /* z */
        !           382: extern MARK    m_scroll P_((MARK, long, int));         /* ^B ^F ^E ^Y ^U ^D */
        !           383: 
        !           384: /* Some stuff that is used by movement functions... */
        !           385: 
        !           386: extern MARK    adjmove P_((MARK, REG MARK, int));      /* a helper fn, used by move fns */
        !           387: 
        !           388: /* This macro is used to set the default value of cnt */
        !           389: #define DEFAULT(val)   if (cnt < 1) cnt = (val)
        !           390: 
        !           391: /* These are used to minimize calls to fetchline() */
        !           392: extern int     plen;   /* length of the line */
        !           393: extern long    pline;  /* line number that len refers to */
        !           394: extern long    pchgs;  /* "changes" level that len refers to */
        !           395: extern char    *ptext; /* text of previous line, if valid */
        !           396: extern void    pfetch P_((long));
        !           397: extern char    digraph P_((int, int));
        !           398: 
        !           399: /* This is used to build a MARK that corresponds to a specific point in the
        !           400:  * line that was most recently pfetch'ed.
        !           401:  */
        !           402: #define buildmark(text)        (MARK)(BLKSIZE * pline + (int)((text) - ptext))
        !           403: 
        !           404: 
        !           405: /*------------------------------------------------------------------------*/
        !           406: /* These are used to handle EX commands.                                 */
        !           407: 
        !           408: #define  CMD_NULL      0       /* NOT A VALID COMMAND */
        !           409: #define  CMD_ABBR      1       /* "define an abbreviation" */
        !           410: #define  CMD_ARGS      2       /* "show me the args" */
        !           411: #define  CMD_APPEND    3       /* "insert lines after this line" */
        !           412: #define  CMD_AT                4       /* "execute a cut buffer's contents via EX" */
        !           413: #define  CMD_BANG      5       /* "run a single shell command" */
        !           414: #define  CMD_CC                6       /* "run `cc` and then do CMD_ERRLIST" */
        !           415: #define  CMD_CD                7       /* "change directories" */
        !           416: #define  CMD_CHANGE    8       /* "change some lines" */
        !           417: #define         CMD_COLOR      9       /* "change the default colors" */
        !           418: #define  CMD_COPY      10      /* "copy the selected text to a given place" */
        !           419: #define  CMD_DELETE    11      /* "delete the selected text" */
        !           420: #define  CMD_DIGRAPH   12      /* "add a digraph, or display them all" */
        !           421: #define  CMD_EDIT      13      /* "switch to a different file" */
        !           422: #define  CMD_EQUAL     14      /* "display a line number" */
        !           423: #define  CMD_ERRLIST   15      /* "locate the next error in a list" */
        !           424: #define  CMD_FILE      16      /* "show the file's status" */
        !           425: #define  CMD_GLOBAL    17      /* "globally search & do a command" */
        !           426: #define  CMD_INSERT    18      /* "insert lines before the current line" */
        !           427: #define  CMD_JOIN      19      /* "join the selected line & the one after" */
        !           428: #define  CMD_LIST      20      /* "print lines, making control chars visible" */
        !           429: #define  CMD_MAKE      21      /* "run `make` and then do CMD_ERRLIST" */
        !           430: #define  CMD_MAP       22      /* "adjust the keyboard map" */
        !           431: #define  CMD_MARK      23      /* "mark this line" */
        !           432: #define  CMD_MKEXRC    24      /* "make a .exrc file" */
        !           433: #define  CMD_MOVE      25      /* "move the selected text to a given place" */
        !           434: #define  CMD_NEXT      26      /* "switch to next file in args" */
        !           435: #define  CMD_NUMBER    27      /* "print lines from the file w/ line numbers" */
        !           436: #define  CMD_PRESERVE  28      /* "act as though vi crashed" */
        !           437: #define  CMD_PREVIOUS  29      /* "switch to the previous file in args" */
        !           438: #define  CMD_PRINT     30      /* "print the selected text" */
        !           439: #define  CMD_PUT       31      /* "insert any cut lines before this line" */
        !           440: #define  CMD_QUIT      32      /* "quit without writing the file" */
        !           441: #define  CMD_READ      33      /* "append the given file after this line */
        !           442: #define  CMD_RECOVER   34      /* "recover file after vi crashes" - USE -r FLAG */
        !           443: #define  CMD_REWIND    35      /* "rewind to first file" */
        !           444: #define  CMD_SET       36      /* "set a variable's value" */
        !           445: #define  CMD_SHELL     37      /* "run some lines through a command" */
        !           446: #define  CMD_SHIFTL    38      /* "shift lines left" */
        !           447: #define  CMD_SHIFTR    39      /* "shift lines right" */
        !           448: #define  CMD_SOURCE    40      /* "interpret a file's contents as ex commands" */
        !           449: #define  CMD_STOP      41      /* same as CMD_SUSPEND */
        !           450: #define  CMD_SUBAGAIN  42      /* "repeat the previous substitution" */
        !           451: #define  CMD_SUBSTITUTE        43      /* "substitute text in this line" */
        !           452: #define  CMD_SUSPEND   44      /* "suspend the vi session" */
        !           453: #define  CMD_TR                45      /* "transliterate chars in the selected lines" */
        !           454: #define  CMD_TAG       46      /* "go to a particular tag" */
        !           455: #define  CMD_UNABBR    47      /* "remove an abbreviation definition" */
        !           456: #define  CMD_UNDO      48      /* "undo the previous command" */
        !           457: #define  CMD_UNMAP     49      /* "remove a key sequence map */
        !           458: #define  CMD_VERSION   50      /* "describe which version this is" */
        !           459: #define  CMD_VGLOBAL   51      /* "apply a cmd to lines NOT containing an RE" */
        !           460: #define  CMD_VISUAL    52      /* "go into visual mode" */
        !           461: #define  CMD_WQUIT     53      /* "write this file out (any case) & quit" */
        !           462: #define  CMD_WRITE     54      /* "write the selected(?) text to a given file" */
        !           463: #define  CMD_XIT       55      /* "write this file out (if modified) & quit" */
        !           464: #define  CMD_YANK      56      /* "copy the selected text into the cut buffer" */
        !           465: #ifdef DEBUG
        !           466: # define CMD_DEBUG     57      /* access to internal data structures */
        !           467: # define CMD_VALIDATE  58      /* check for internal consistency */
        !           468: #endif
        !           469: typedef int CMD;
        !           470: 
        !           471: extern void    ex P_((void));
        !           472: extern void    vi P_((void));
        !           473: extern void    doexcmd P_((char *));
        !           474: 
        !           475: extern void    cmd_append P_((MARK, MARK, CMD, int, char *));
        !           476: extern void    cmd_args P_((MARK, MARK, CMD, int, char *));
        !           477: #ifndef NO_AT
        !           478:  extern void   cmd_at P_((MARK, MARK, CMD, int, char *));
        !           479: #endif
        !           480: extern void    cmd_cd P_((MARK, MARK, CMD, int, char *));
        !           481: #ifndef NO_COLOR
        !           482:  extern void   cmd_color P_((MARK, MARK, CMD, int, char *));
        !           483: #endif
        !           484: extern void    cmd_delete P_((MARK, MARK, CMD, int, char *));
        !           485: #ifndef NO_DIGRAPH
        !           486:  extern void   cmd_digraph P_((MARK, MARK, CMD, int, char *));
        !           487: #endif
        !           488: extern void    cmd_edit P_((MARK, MARK, CMD, int, char *));
        !           489: #ifndef NO_ERRLIST
        !           490:  extern void   cmd_errlist P_((MARK, MARK, CMD, int, char *));
        !           491: #endif
        !           492: extern void    cmd_file P_((MARK, MARK, CMD, int, char *));
        !           493: extern void    cmd_global P_((MARK, MARK, CMD, int, char *));
        !           494: extern void    cmd_join P_((MARK, MARK, CMD, int, char *));
        !           495: extern void    cmd_mark P_((MARK, MARK, CMD, int, char *));
        !           496: #ifndef NO_ERRLIST
        !           497:  extern void   cmd_make P_((MARK, MARK, CMD, int, char *));
        !           498: #endif
        !           499: extern void    cmd_map P_((MARK, MARK, CMD, int, char *));
        !           500: #ifndef NO_MKEXRC
        !           501:  extern void   cmd_mkexrc P_((MARK, MARK, CMD, int, char *));
        !           502: #endif
        !           503: extern void    cmd_next P_((MARK, MARK, CMD, int, char *));
        !           504: extern void    cmd_print P_((MARK, MARK, CMD, int, char *));
        !           505: extern void    cmd_put P_((MARK, MARK, CMD, int, char *));
        !           506: extern void    cmd_read P_((MARK, MARK, CMD, int, char *));
        !           507: extern void    cmd_set P_((MARK, MARK, CMD, int, char *));
        !           508: extern void    cmd_shell P_((MARK, MARK, CMD, int, char *));
        !           509: extern void    cmd_shift P_((MARK, MARK, CMD, int, char *));
        !           510: extern void    cmd_source P_((MARK, MARK, CMD, int, char *));
        !           511: extern void    cmd_substitute P_((MARK, MARK, CMD, int, char *));
        !           512: extern void    cmd_tag P_((MARK, MARK, CMD, int, char *));
        !           513: extern void    cmd_undo P_((MARK, MARK, CMD, int, char *));
        !           514: extern void    cmd_version P_((MARK, MARK, CMD, int, char *));
        !           515: extern void    cmd_write P_((MARK, MARK, CMD, int, char *));
        !           516: extern void    cmd_xit P_((MARK, MARK, CMD, int, char *));
        !           517: extern void    cmd_move P_((MARK, MARK, CMD, int, char *));
        !           518: #ifdef DEBUG
        !           519:  extern void   cmd_debug P_((MARK, MARK, CMD, int, char *));
        !           520:  extern void   cmd_validate P_((MARK, MARK, CMD, int, char *));
        !           521: #endif
        !           522: #ifdef SIGTSTP
        !           523:  extern void   cmd_suspend P_((MARK, MARK, CMD, int, char *));
        !           524: #endif
        !           525: 
        !           526: /*----------------------------------------------------------------------*/
        !           527: /* These are used to handle VI commands                                */
        !           528: 
        !           529: extern MARK    v_1ex P_((MARK, char *));       /* : */
        !           530: extern MARK    v_mark P_((MARK, long, int));   /* m */
        !           531: extern MARK    v_quit P_((void));              /* Q */
        !           532: extern MARK    v_redraw P_((void));            /* ^L ^R */
        !           533: extern MARK    v_ulcase P_((MARK, long));      /* ~ */
        !           534: extern MARK    v_undo P_((MARK));              /* u */
        !           535: extern MARK    v_xchar P_((MARK, long, int));  /* x X */
        !           536: extern MARK    v_replace P_((MARK, long, int));/* r */
        !           537: extern MARK    v_overtype P_((MARK));          /* R */
        !           538: extern MARK    v_selcut P_((MARK, long, int)); /* " */
        !           539: extern MARK    v_paste P_((MARK, long, int));  /* p P */
        !           540: extern MARK    v_yank P_((MARK, MARK));        /* y Y */
        !           541: extern MARK    v_delete P_((MARK, MARK));      /* d D */
        !           542: extern MARK    v_join P_((MARK, long));        /* J */
        !           543: extern MARK    v_insert P_((MARK, long, int)); /* a A i I o O */
        !           544: extern MARK    v_change P_((MARK, MARK));      /* c C */
        !           545: extern MARK    v_subst P_((MARK, long));       /* s */
        !           546: extern MARK    v_lshift P_((MARK, MARK));      /* < */
        !           547: extern MARK    v_rshift P_((MARK, MARK));      /* > */
        !           548: extern MARK    v_reformat P_((MARK, MARK));    /* = */
        !           549: extern MARK    v_filter P_((MARK, MARK));      /* ! */
        !           550: extern MARK    v_status P_((void));            /* ^G */
        !           551: extern MARK    v_switch P_((void));            /* ^^ */
        !           552: extern MARK    v_tag P_((char *, MARK, long)); /* ^] */
        !           553: extern MARK    v_xit P_((MARK, long, int));    /* ZZ */
        !           554: extern MARK    v_undoline P_((MARK));          /* U */
        !           555: extern MARK    v_again P_((MARK, MARK));       /* & */
        !           556: #ifndef NO_EXTENSIONS
        !           557: extern MARK    v_keyword P_((char *, MARK, long));     /* K */
        !           558: extern MARK    v_increment P_((char *, MARK, long));   /* * */
        !           559: #endif
        !           560: #ifndef NO_ERRLIST
        !           561: extern MARK    v_errlist P_((MARK));           /* * */
        !           562: #endif
        !           563: #ifndef NO_AT
        !           564: extern MARK    v_at P_((MARK, long, int));     /* @ */
        !           565: #endif
        !           566: #ifdef SIGTSTP
        !           567: extern MARK    v_suspend P_((void));           /* ^Z */
        !           568: #endif
        !           569: #ifndef NO_POPUP
        !           570: extern MARK    v_popup P_((MARK, MARK));       /* \ */
        !           571: #endif
        !           572: 
        !           573: /*----------------------------------------------------------------------*/
        !           574: /* These flags describe the quirks of the individual visual commands */
        !           575: #define NO_FLAGS       0x00
        !           576: #define        MVMT            0x01    /* this is a movement command */
        !           577: #define PTMV           0x02    /* this can be *part* of a movement command */
        !           578: #define FRNT           0x04    /* after move, go to front of line */
        !           579: #define INCL           0x08    /* include last char when used with c/d/y */
        !           580: #define LNMD           0x10    /* use line mode of c/d/y */
        !           581: #define NCOL           0x20    /* this command can't change the column# */
        !           582: #define NREL           0x40    /* this is "non-relative" -- set the '' mark */
        !           583: #define SDOT           0x80    /* set the "dot" variables, for the "." cmd */
        !           584: #define FINL           0x100   /* final testing, more strict! */
        !           585: #define NWRP           0x200   /* no line-wrap (used for 'w' and 'W') */
        !           586: #ifndef NO_VISIBLE
        !           587: # define VIZ           0x400   /* commands which can be used with 'v' */
        !           588: #else
        !           589: # define VIZ           0
        !           590: #endif
        !           591: 
        !           592: /* This variable is zeroed before a command executes, and later ORed with the
        !           593:  * command's flags after the command has been executed.  It is used to force
        !           594:  * certain flags to be TRUE for *some* invocations of a particular command.
        !           595:  * For example, "/regexp/+offset" forces the LNMD flag, and sometimes a "p"
        !           596:  * or "P" command will force FRNT.
        !           597:  */
        !           598: extern int     force_flags;
        !           599: 
        !           600: /*----------------------------------------------------------------------*/
        !           601: /* These describe what mode we're in */
        !           602: 
        !           603: #define MODE_EX                1       /* executing ex commands */
        !           604: #define        MODE_VI         2       /* executing vi commands */
        !           605: #define        MODE_COLON      3       /* executing an ex command from vi mode */
        !           606: #define        MODE_QUIT       4
        !           607: extern int     mode;
        !           608: 
        !           609: #define WHEN_VICMD     1       /* getkey: we're reading a VI command */
        !           610: #define WHEN_VIINP     2       /* getkey: we're in VI's INPUT mode */
        !           611: #define WHEN_VIREP     4       /* getkey: we're in VI's REPLACE mode */
        !           612: #define WHEN_EX                8       /* getkey: we're in EX mode */
        !           613: #define WHEN_MSG       16      /* getkey: we're at a "more" prompt */
        !           614: #define WHEN_POPUP     32      /* getkey: we're in the pop-up menu */
        !           615: #define WHEN_REP1      64      /* getkey: we're getting a single char for 'r' */
        !           616: #define WHEN_CUT       128     /* getkey: we're getting a cut buffer name */
        !           617: #define WHEN_MARK      256     /* getkey: we're getting a mark name */
        !           618: #define WHEN_CHAR      512     /* getkey: we're getting a destination for f/F/t/T */
        !           619: #define WHEN_INMV      4096    /* in input mode, interpret the key in VICMD mode */
        !           620: #define WHEN_FREE      8192    /* free the keymap after doing it once */
        !           621: #define WHENMASK       (WHEN_VICMD|WHEN_VIINP|WHEN_VIREP|WHEN_REP1|WHEN_CUT|WHEN_MARK|WHEN_CHAR)
        !           622: 
        !           623: #ifndef NO_VISIBLE
        !           624: extern MARK    V_from;
        !           625: extern int     V_linemd;
        !           626: extern MARK v_start P_((MARK m, long cnt, int cmd));
        !           627: #endif
        !           628: 
        !           629: #ifdef DEBUG
        !           630: # define malloc(size)  dbmalloc(size, __FILE__, __LINE__)
        !           631: # define free(ptr)     dbfree(ptr, __FILE__, __LINE__)
        !           632: # define checkmem()    dbcheckmem(__FILE__, __LINE__)
        !           633: extern char    *dbmalloc P_((int, char *, int));
        !           634: #else
        !           635: # define checkmem()
        !           636: #endif

unix.superglobalmegacorp.com

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