[BACK]Return to def.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Annotation of src/usr.bin/mg/def.h, Revision 1.75

1.75    ! kjell       1: /*     $OpenBSD: def.h,v 1.74 2005/11/18 20:56:52 deraadt Exp $        */
1.64      kjell       2:
                      3: /* This file is in the public domain. */
1.30      vincent     4:
                      5: #include <sys/queue.h>
1.6       niklas      6:
1.1       deraadt     7: /*
                      8:  * This file is the general header file for all parts
1.4       millert     9:  * of the Mg display editor. It contains all of the
1.1       deraadt    10:  * general definitions and macros. It also contains some
                     11:  * conditional compilation flags. All of the per-system and
                     12:  * per-terminal definitions are in special header files.
                     13:  */
1.58      henning    14:
1.4       millert    15: #include       "sysdef.h"      /* Order is critical.            */
1.1       deraadt    16: #include       "ttydef.h"
                     17: #include       "chrdef.h"
                     18:
                     19: #ifdef NO_MACRO
                     20: #ifndef NO_STARTUP
1.4       millert    21: #define NO_STARTUP             /* NO_MACRO implies NO_STARTUP */
1.1       deraadt    22: #endif
                     23: #endif
                     24:
1.47      vincent    25: typedef int    (*PF)(int, int);        /* generally useful type */
1.1       deraadt    26:
                     27: /*
                     28:  * Table sizes, etc.
                     29:  */
1.7       art        30: #define NFILEN 1024            /* Length, file name.            */
                     31: #define NBUFN  NFILEN          /* Length, buffer name.          */
1.4       millert    32: #define NLINE  256             /* Length, line.                 */
                     33: #define PBMODES 4              /* modes per buffer              */
                     34: #define NKBDM  256             /* Length, keyboard macro.       */
                     35: #define NPAT   80              /* Length, pattern.              */
                     36: #define HUGE   1000            /* A rather large number.        */
                     37: #define NSRCH  128             /* Undoable search commands.     */
                     38: #define NXNAME 64              /* Length, extended command.     */
1.60      db         39: #define NKNAME 20              /* Length, key names.            */
1.68      kjell      40: #define NTIME  50              /* Length, timestamp string.     */
1.1       deraadt    41: /*
                     42:  * Universal.
                     43:  */
1.4       millert    44: #define FALSE  0               /* False, no, bad, etc.          */
                     45: #define TRUE   1               /* True, yes, good, etc.         */
                     46: #define ABORT  2               /* Death, ^G, abort, etc.        */
1.1       deraadt    47:
1.4       millert    48: #define KPROMPT 2              /* keyboard prompt               */
1.1       deraadt    49:
                     50: /*
                     51:  * These flag bits keep track of
                     52:  * some aspects of the last command. The CFCPCN
                     53:  * flag controls goal column setting. The CFKILL
                     54:  * flag controls the clearing versus appending
                     55:  * of data in the kill buffer.
                     56:  */
1.4       millert    57: #define CFCPCN 0x0001          /* Last command was C-P, C-N     */
                     58: #define CFKILL 0x0002          /* Last command was a kill       */
1.60      db         59: #define CFINS  0x0004          /* Last command was self-insert  */
1.1       deraadt    60:
                     61: /*
                     62:  * File I/O.
                     63:  */
1.4       millert    64: #define FIOSUC 0               /* Success.                      */
                     65: #define FIOFNF 1               /* File not found.               */
                     66: #define FIOEOF 2               /* End of file.                  */
                     67: #define FIOERR 3               /* Error.                        */
                     68: #define FIOLONG 4              /* long line partially read      */
1.69      kjell      69: #ifndef NO_DIRED
                     70: # define FIODIR 5              /* File is a directory           */
                     71: #endif /* !NO_DIRED */
1.1       deraadt    72:
                     73: /*
                     74:  * Directory I/O.
                     75:  */
1.4       millert    76: #define DIOSUC 0               /* Success.                      */
                     77: #define DIOEOF 1               /* End of file.                  */
                     78: #define DIOERR 2               /* Error.                        */
1.1       deraadt    79:
                     80: /*
                     81:  * Display colors.
                     82:  */
1.4       millert    83: #define CNONE  0               /* Unknown color.                */
                     84: #define CTEXT  1               /* Text color.                   */
                     85: #define CMODE  2               /* Mode line color.              */
                     86:
                     87: /*
1.22      millert    88:  * Flags for keyboard invoked functions.
1.4       millert    89:  */
                     90: #define FFUNIV         1       /* universal argument            */
1.27      deraadt    91: #define FFNEGARG       2       /* negative only argument        */
1.4       millert    92: #define FFOTHARG       4       /* other argument                */
                     93: #define FFARG          7       /* any argument                  */
                     94: #define FFRAND         8       /* Called by other function      */
1.1       deraadt    95:
                     96: /*
                     97:  * Flags for "eread".
                     98:  */
1.4       millert    99: #define EFFUNC 0x0001          /* Autocomplete functions.       */
                    100: #define EFBUF  0x0002          /* Autocomplete buffers.         */
                    101: #define EFFILE 0x0004          /* " files (maybe someday)       */
1.60      db        102: #define EFAUTO 0x0007          /* Some autocompletion on        */
1.4       millert   103: #define EFNEW  0x0008          /* New prompt.                   */
                    104: #define EFCR   0x0010          /* Echo CR at end; last read.    */
1.20      art       105: #define EFDEF  0x0020          /* buffer contains default args  */
1.63      kjell     106: #define EFNUL  0x0040          /* Null Minibuffer OK            */
1.1       deraadt   107:
                    108: /*
1.75    ! kjell     109:  * Direction of insert into kill ring
1.1       deraadt   110:  */
                    111: #define KNONE  0
                    112: #define KFORW  1
                    113: #define KBACK  2
                    114:
1.49      vincent   115: /*
                    116:  * This structure holds the starting position
                    117:  * (as a line/offset pair) and the number of characters in a
                    118:  * region of a buffer. This makes passing the specification
                    119:  * of a region around a little bit easier.
                    120:  */
1.74      deraadt   121: struct region {
                    122:        struct line     *r_linep;       /* Origin line address.          */
                    123:        int              r_offset;      /* Origin line offset.           */
1.60      db        124:        RSIZE            r_size;        /* Length in characters.         */
1.74      deraadt   125: };
1.49      vincent   126:
                    127:
1.1       deraadt   128: /*
                    129:  * All text is kept in circularly linked
1.75    ! kjell     130:  * lists of "line" structures. These begin at the
1.1       deraadt   131:  * header line (which is the blank line beyond the
                    132:  * end of the buffer). This line is pointed to by
1.75    ! kjell     133:  * the "buffer" structure. Each line contains the number of
1.1       deraadt   134:  * bytes in the line (the "used" size), the size
                    135:  * of the text array, and the text. The end of line
                    136:  * is not stored as a byte; it's implied. Future
                    137:  * additions will include update hints, and a
                    138:  * list of marks into the line.
                    139:  */
1.74      deraadt   140: struct line {
                    141:        struct line     *l_fp;          /* Link to the next line         */
                    142:        struct line     *l_bp;          /* Link to the previous line     */
1.60      db        143:        int              l_size;        /* Allocated size                */
                    144:        int              l_used;        /* Used size                     */
                    145:        char            *l_text;        /* Content of the line           */
1.74      deraadt   146: };
1.1       deraadt   147:
                    148: /*
                    149:  * The rationale behind these macros is that you
                    150:  * could (with some editing, like changing the type of a line
1.75    ! kjell     151:  * link from a "struct line *" to a "REFLINE", and fixing the commands
1.1       deraadt   152:  * like file reading that break the rules) change the actual
                    153:  * storage representation of lines to use something fancy on
                    154:  * machines with small address spaces.
                    155:  */
                    156: #define lforw(lp)      ((lp)->l_fp)
                    157: #define lback(lp)      ((lp)->l_bp)
                    158: #define lgetc(lp, n)   (CHARMASK((lp)->l_text[(n)]))
                    159: #define lputc(lp, n, c) ((lp)->l_text[(n)]=(c))
                    160: #define llength(lp)    ((lp)->l_used)
                    161: #define ltext(lp)      ((lp)->l_text)
                    162:
                    163: /*
                    164:  * All repeated structures are kept as linked lists of structures.
                    165:  * All of these start with a LIST structure (except lines, which
                    166:  * have their own abstraction). This will allow for
                    167:  * later conversion to generic list manipulation routines should
1.60      db        168:  * I decide to do that. It does mean that there are four extra
1.1       deraadt   169:  * bytes per window. I feel that this is an acceptable price,
                    170:  * considering that there are usually only one or two windows.
                    171:  */
1.74      deraadt   172: struct list {
1.1       deraadt   173:        union {
1.74      deraadt   174:                struct mgwin    *l_wp;
1.75    ! kjell     175:                struct buffer   *x_bp;  /* l_bp is used by struct line */
1.74      deraadt   176:                struct list     *l_nxt;
1.1       deraadt   177:        } l_p;
1.36      vincent   178:        const char *l_name;
1.74      deraadt   179: };
1.4       millert   180:
1.1       deraadt   181: /*
                    182:  * Usual hack - to keep from uglifying the code with lotsa
                    183:  * references through the union, we #define something for it.
                    184:  */
                    185: #define l_next l_p.l_nxt
                    186:
                    187: /*
                    188:  * There is a window structure allocated for
                    189:  * every active display window. The windows are kept in a
                    190:  * big list, in top to bottom screen order, with the listhead at
                    191:  * "wheadp". Each window contains its own values of dot and mark.
                    192:  * The flag field contains some bits that are set by commands
                    193:  * to guide redisplay; although this is a bit of a compromise in
                    194:  * terms of decoupling, the full blown redisplay is just too
                    195:  * expensive to run for every input character.
                    196:  */
1.74      deraadt   197: struct mgwin {
                    198:        struct list      w_list;        /* List header                  */
                    199:        struct buffer   *w_bufp;        /* Buffer displayed in window   */
                    200:        struct line     *w_linep;       /* Top line in the window       */
                    201:        struct line     *w_dotp;        /* Line containing "."          */
                    202:        struct line     *w_markp;       /* Line containing "mark"       */
1.60      db        203:        int              w_doto;        /* Byte offset for "."          */
                    204:        int              w_marko;       /* Byte offset for "mark"       */
                    205:        char             w_toprow;      /* Origin 0 top row of window   */
                    206:        char             w_ntrows;      /* # of rows of text in window  */
                    207:        char             w_force;       /* If NZ, forcing row.          */
                    208:        char             w_flag;        /* Flags.                       */
1.74      deraadt   209:        struct line     *w_wrapline;
                    210: };
1.1       deraadt   211: #define w_wndp w_list.l_p.l_wp
                    212: #define w_name w_list.l_name
                    213:
                    214: /*
                    215:  * Window flags are set by command processors to
                    216:  * tell the display system what has happened to the buffer
                    217:  * mapped by the window. Setting "WFHARD" is always a safe thing
                    218:  * to do, but it may do more work than is necessary. Always try
                    219:  * to set the simplest action that achieves the required update.
                    220:  * Because commands set bits in the "w_flag", update will see
                    221:  * all change flags, and do the most general one.
                    222:  */
1.43      vincent   223: #define WFFORCE 0x01                   /* Force reframe.                */
                    224: #define WFMOVE 0x02                    /* Movement from line to line.   */
                    225: #define WFEDIT 0x04                    /* Editing within a line.        */
                    226: #define WFHARD 0x08                    /* Better to a full display.     */
                    227: #define WFMODE 0x10                    /* Update mode line.             */
1.1       deraadt   228:
1.35      vincent   229: struct undo_rec;
                    230:
1.1       deraadt   231: /*
                    232:  * Text is kept in buffers. A buffer header, described
                    233:  * below, exists for every buffer in the system. The buffers are
                    234:  * kept in a big list, so that commands that search for a buffer by
                    235:  * name can find the buffer header. There is a safe store for the
                    236:  * dot and mark in the header, but this is only valid if the buffer
                    237:  * is not being displayed (that is, if "b_nwnd" is 0). The text for
                    238:  * the buffer is kept in a circularly linked list of lines, with
                    239:  * a pointer to the header line in "b_linep".
                    240:  */
1.74      deraadt   241: struct buffer {
                    242:        struct list      b_list;        /* buffer list pointer           */
                    243:        struct buffer   *b_altb;        /* Link to alternate buffer      */
1.75    ! kjell     244:        struct line     *b_dotp;        /* Link to "." line structure    */
1.74      deraadt   245:        struct line     *b_markp;       /* ditto for mark                */
1.75    ! kjell     246:        struct line     *b_linep;       /* Link to the header line       */
1.74      deraadt   247:        struct maps_s   *b_modes[PBMODES]; /* buffer modes               */
1.75    ! kjell     248:        int              b_doto;        /* Offset of "." in above line   */
1.60      db        249:        int              b_marko;       /* ditto for the "mark"          */
                    250:        short            b_nmodes;      /* number of non-fundamental modes */
                    251:        char             b_nwnd;        /* Count of windows on buffer    */
                    252:        char             b_flag;        /* Flags                         */
                    253:        char             b_fname[NFILEN]; /* File name                   */
                    254:        struct fileinfo  b_fi;          /* File attributes               */
1.67      kjell     255:        LIST_HEAD(, undo_rec) b_undo;   /* Undo actions list            */
                    256:        int              b_undopos;     /* Where we were during the     */
                    257:                                         /* last undo action.           */
                    258:        struct undo_rec *b_undoptr;
1.74      deraadt   259: };
1.1       deraadt   260: #define b_bufp b_list.l_p.x_bp
                    261: #define b_bname b_list.l_name
                    262:
1.43      vincent   263: #define BFCHG  0x01                    /* Changed.                      */
                    264: #define BFBAK  0x02                    /* Need to make a backup.        */
1.1       deraadt   265: #ifdef NOTAB
1.43      vincent   266: #define BFNOTAB 0x04                   /* no tab mode                   */
1.1       deraadt   267: #endif
1.43      vincent   268: #define BFOVERWRITE 0x08               /* overwrite mode                */
1.60      db        269: #define BFREADONLY  0x10               /* read only mode                */
1.1       deraadt   270:
                    271: /*
1.30      vincent   272:  * This structure holds information about recent actions for the Undo command.
                    273:  */
                    274: struct undo_rec {
1.34      deraadt   275:        LIST_ENTRY(undo_rec) next;
1.30      vincent   276:        enum {
                    277:                INSERT = 1,
                    278:                DELETE,
                    279:                BOUNDARY
                    280:        } type;
1.74      deraadt   281:        struct region    region;
1.30      vincent   282:        int              pos;
1.34      deraadt   283:        char            *content;
1.30      vincent   284: };
                    285:
                    286: /*
1.4       millert   287:  * Prototypes.
                    288:  */
                    289:
1.5       millert   290: /* tty.c X */
1.74      deraadt   291: void            ttinit(void);
                    292: void            ttreinit(void);
                    293: void            tttidy(void);
                    294: void            ttmove(int, int);
                    295: void            tteeol(void);
                    296: void            tteeop(void);
                    297: void            ttbeep(void);
                    298: void            ttinsl(int, int, int);
                    299: void            ttdell(int, int, int);
                    300: void            ttwindow(int, int);
                    301: void            ttnowindow(void);
                    302: void            ttcolor(int);
                    303: void            ttresize(void);
1.31      deraadt   304:
                    305: volatile sig_atomic_t winch_flag;
1.4       millert   306:
                    307: /* ttyio.c */
1.74      deraadt   308: void            ttopen(void);
                    309: int             ttraw(void);
                    310: void            ttclose(void);
                    311: int             ttcooked(void);
                    312: int             ttputc(int);
                    313: void            ttflush(void);
                    314: int             ttgetc(void);
                    315: int             ttwait(int);
                    316: int             typeahead(void);
1.4       millert   317:
                    318: /* dir.c */
1.74      deraadt   319: void            dirinit(void);
                    320: int             changedir(int, int);
                    321: int             showcwdir(int, int);
1.4       millert   322:
1.71      kjell     323: #ifndef NO_DIRED
1.4       millert   324: /* dired.c */
1.74      deraadt   325: struct buffer  *dired_(char *);
1.71      kjell     326: #endif /* !NO_DIRED */
1.5       millert   327:
                    328: /* file.c X */
1.74      deraadt   329: int             fileinsert(int, int);
                    330: int             filevisit(int, int);
                    331: int             filevisitalt(int, int);
                    332: int             filevisitro(int, int);
                    333: int             poptofile(int, int);
                    334: struct buffer  *findbuffer(char *);
                    335: int             readin(char *);
                    336: int             insertfile(char *, char *, int);
                    337: int             filewrite(int, int);
                    338: int             filesave(int, int);
                    339: int             buffsave(struct buffer *);
                    340: int             makebkfile(int, int);
                    341: int             writeout(struct buffer *, char *);
                    342: void            upmodes(struct buffer *);
1.5       millert   343:
                    344: /* line.c X */
1.74      deraadt   345: struct line    *lalloc(int);
                    346: int             lrealloc(struct line *, int);
                    347: void            lfree(struct line *);
                    348: void            lchange(int);
                    349: int             linsert_str(const char *, int);
                    350: int             linsert(int, int);
                    351: int             lnewline_at(struct line *, int);
                    352: int             lnewline(void);
                    353: int             ldelete(RSIZE, int);
                    354: int             ldelnewline(void);
                    355: int             lreplace(RSIZE, char *);
                    356: void            kdelete(void);
                    357: int             kinsert(int, int);
                    358: int             kremove(int);
1.5       millert   359:
                    360: /* window.c X */
1.74      deraadt   361: struct mgwin   *new_window(struct buffer *);
                    362: void            free_window(struct mgwin *);
                    363: int             reposition(int, int);
                    364: int             refresh(int, int);
                    365: int             nextwind(int, int);
                    366: int             prevwind(int, int);
                    367: int             onlywind(int, int);
                    368: int             splitwind(int, int);
                    369: int             enlargewind(int, int);
                    370: int             shrinkwind(int, int);
                    371: int             delwind(int, int);
                    372: struct mgwin   *wpopup(void);
1.4       millert   373:
                    374: /* buffer.c */
1.74      deraadt   375: int             togglereadonly(int, int);
                    376: struct buffer  *bfind(const char *, int);
                    377: int             poptobuffer(int, int);
                    378: int             killbuffer(struct buffer *);
                    379: int             killbuffer_cmd(int, int);
                    380: int             savebuffers(int, int);
                    381: int             listbuffers(int, int);
                    382: int             addlinef(struct buffer *, char *, ...);
1.12      art       383: #define         addline(bp, text)      addlinef(bp, "%s", text)
1.74      deraadt   384: int             anycb(int);
                    385: int             bclear(struct buffer *);
                    386: int             showbuffer(struct buffer *, struct mgwin *, int);
                    387: struct mgwin   *popbuf(struct buffer *);
                    388: int             bufferinsert(int, int);
                    389: int             usebuffer(int, int);
                    390: int             notmodified(int, int);
                    391: int             popbuftop(struct buffer *);
1.4       millert   392:
                    393: /* display.c */
1.74      deraadt   394: int            vtresize(int, int, int);
                    395: void           vtinit(void);
                    396: void           vttidy(void);
                    397: void           update(void);
1.5       millert   398:
                    399: /* echo.c X */
1.74      deraadt   400: void            eerase(void);
                    401: int             eyorn(const char *);
                    402: int             eyesno(const char *);
                    403: void            ewprintf(const char *fmt, ...);
                    404: char           *ereply(const char *, char *, size_t, ...);
                    405: char           *eread(const char *, char *, size_t, int, ...);
                    406: int             getxtra(struct list *, struct list *, int, int);
                    407: void            free_file_list(struct list *);
1.4       millert   408:
                    409: /* fileio.c */
1.74      deraadt   410: int             ffropen(const char *, struct buffer *);
                    411: int             ffwopen(const char *, struct buffer *);
                    412: int             ffclose(struct buffer *);
                    413: int             ffputbuf(struct buffer *);
                    414: int             ffgetline(char *, int, int *);
                    415: int             fbackupfile(const char *);
                    416: char           *adjustname(const char *);
                    417: char           *startupfile(char *);
                    418: int             copy(char *, char *);
                    419: struct list    *make_file_list(char *);
                    420: int             fisdir(const char *);
1.4       millert   421:
1.5       millert   422: /* kbd.c X */
1.74      deraadt   423: int             do_meta(int, int);
                    424: int             bsmap(int, int);
                    425: void            ungetkey(int);
                    426: int             getkey(int);
                    427: int             doin(void);
                    428: int             rescan(int, int);
                    429: int             universal_argument(int, int);
                    430: int             digit_argument(int, int);
                    431: int             negative_argument(int, int);
                    432: int             selfinsert(int, int);
                    433: int             quote(int, int);
1.4       millert   434:
                    435: /* main.c */
1.74      deraadt   436: int             ctrlg(int, int);
                    437: int             quit(int, int);
1.4       millert   438:
                    439: /* ttyio.c */
1.74      deraadt   440: void            panic(char *);
1.4       millert   441:
                    442: /* cinfo.c */
1.74      deraadt   443: char           *keyname(char  *, size_t, int);
1.4       millert   444:
                    445: /* basic.c */
1.74      deraadt   446: int             gotobol(int, int);
                    447: int             backchar(int, int);
                    448: int             gotoeol(int, int);
                    449: int             forwchar(int, int);
                    450: int             gotobob(int, int);
                    451: int             gotoeob(int, int);
                    452: int             forwline(int, int);
                    453: int             backline(int, int);
                    454: void            setgoal(void);
                    455: int             getgoal(struct line *);
                    456: int             forwpage(int, int);
                    457: int             backpage(int, int);
                    458: int             forw1page(int, int);
                    459: int             back1page(int, int);
                    460: int             pagenext(int, int);
                    461: void            isetmark(void);
                    462: int             setmark(int, int);
                    463: int             swapmark(int, int);
                    464: int             gotoline(int, int);
1.5       millert   465:
                    466: /* random.c X */
1.74      deraadt   467: int             showcpos(int, int);
                    468: int             getcolpos(void);
                    469: int             twiddle(int, int);
                    470: int             openline(int, int);
                    471: int             newline(int, int);
                    472: int             deblank(int, int);
                    473: int             justone(int, int);
                    474: int             delwhite(int, int);
                    475: int             indent(int, int);
                    476: int             forwdel(int, int);
                    477: int             backdel(int, int);
                    478: int             killline(int, int);
                    479: int             yank(int, int);
                    480: int             space_to_tabstop(int, int);
1.5       millert   481:
                    482: /* extend.c X */
1.74      deraadt   483: int             insert(int, int);
                    484: int             bindtokey(int, int);
                    485: int             localbind(int, int);
                    486: int             define_key(int, int);
                    487: int             unbindtokey(int, int);
                    488: int             localunbind(int, int);
                    489: int             extend(int, int);
                    490: int             evalexpr(int, int);
                    491: int             evalbuffer(int, int);
                    492: int             evalfile(int, int);
                    493: int             load(const char *);
                    494: int             excline(char *);
1.5       millert   495:
                    496: /* help.c X */
1.74      deraadt   497: int             desckey(int, int);
                    498: int             wallchart(int, int);
                    499: int             help_help(int, int);
                    500: int             apropos_command(int, int);
1.5       millert   501:
                    502: /* paragraph.c X */
1.74      deraadt   503: int             gotobop(int, int);
                    504: int             gotoeop(int, int);
                    505: int             fillpara(int, int);
                    506: int             killpara(int, int);
                    507: int             fillword(int, int);
                    508: int             setfillcol(int, int);
1.5       millert   509:
                    510: /* word.c X */
1.74      deraadt   511: int             backword(int, int);
                    512: int             forwword(int, int);
                    513: int             upperword(int, int);
                    514: int             lowerword(int, int);
                    515: int             capword(int, int);
                    516: int             delfword(int, int);
                    517: int             delbword(int, int);
                    518: int             inword(void);
1.5       millert   519:
                    520: /* region.c X */
1.74      deraadt   521: int             killregion(int, int);
                    522: int             copyregion(int, int);
                    523: int             lowerregion(int, int);
                    524: int             upperregion(int, int);
                    525: int             prefixregion(int, int);
                    526: int             setprefix(int, int);
                    527: int             region_get_data(struct region *, char *, int);
                    528: int             region_put_data(const char *, int);
1.5       millert   529:
                    530: /* search.c X */
1.74      deraadt   531: int             forwsearch(int, int);
                    532: int             backsearch(int, int);
                    533: int             searchagain(int, int);
                    534: int             forwisearch(int, int);
                    535: int             backisearch(int, int);
                    536: int             queryrepl(int, int);
                    537: int             forwsrch(void);
                    538: int             backsrch(void);
                    539: int             readpattern(char *);
1.5       millert   540:
                    541: /* spawn.c X */
1.74      deraadt   542: int             spawncli(int, int);
1.5       millert   543:
                    544: /* ttykbd.c X */
1.74      deraadt   545: void            ttykeymapinit(void);
                    546: void            ttykeymaptidy(void);
1.5       millert   547:
                    548: /* match.c X */
1.74      deraadt   549: int             showmatch(int, int);
1.5       millert   550:
                    551: /* version.c X */
1.74      deraadt   552: int             showversion(int, int);
1.5       millert   553:
                    554: #ifndef NO_MACRO
                    555: /* macro.c X */
1.74      deraadt   556: int             definemacro(int, int);
                    557: int             finishmacro(int, int);
                    558: int             executemacro(int, int);
1.5       millert   559: #endif /* !NO_MACRO */
                    560:
                    561: /* modes.c X */
1.74      deraadt   562: int             indentmode(int, int);
                    563: int             fillmode(int, int);
                    564: int             blinkparen(int, int);
1.5       millert   565: #ifdef NOTAB
1.74      deraadt   566: int             notabmode(int, int);
1.5       millert   567: #endif /* NOTAB */
1.74      deraadt   568: int             overwrite(int, int);
                    569: int             set_default_mode(int,int);
1.5       millert   570:
                    571: #ifdef REGEX
                    572: /* re_search.c X */
1.74      deraadt   573: int             re_forwsearch(int, int);
                    574: int             re_backsearch(int, int);
                    575: int             re_searchagain(int, int);
                    576: int             re_queryrepl(int, int);
                    577: int             replstr(int, int);
                    578: int             setcasefold(int, int);
                    579: int             delmatchlines(int, int);
                    580: int             delnonmatchlines(int, int);
                    581: int             cntmatchlines(int, int);
                    582: int             cntnonmatchlines(int, int);
1.5       millert   583: #endif /* REGEX */
1.1       deraadt   584:
1.30      vincent   585: /* undo.c X */
1.74      deraadt   586: void            free_undo_record(struct undo_rec *);
                    587: int             undo_dump(int, int);
                    588: int             undo_enable(int);
                    589: int             undo_add_boundary(void);
                    590: int             undo_add_insert(struct line *, int, int);
                    591: int             undo_add_delete(struct line *, int, int);
                    592: void            undo_no_boundary(int);
                    593: int             undo_add_change(struct line *, int, int);
                    594: int             undo(int, int);
1.41      vincent   595:
                    596: /* autoexec.c X */
1.74      deraadt   597: int             auto_execute(int, int);
                    598: PF             *find_autoexec(const char *);
                    599: int             add_autoexec(const char *, const char *);
1.46      vincent   600:
                    601: /* mail.c X */
1.74      deraadt   602: void            mail_init(void);
1.66      kjell     603:
                    604: /* grep.c X */
1.74      deraadt   605: int             next_error(int, int);
1.30      vincent   606:
1.1       deraadt   607: /*
                    608:  * Externals.
                    609:  */
1.74      deraadt   610: extern struct buffer   *bheadp;
                    611: extern struct buffer   *curbp;
                    612: extern struct mgwin    *curwp;
                    613: extern struct mgwin    *wheadp;
                    614: extern int              thisflag;
                    615: extern int              lastflag;
                    616: extern int              curgoal;
                    617: extern int              startrow;
                    618: extern int              epresf;
                    619: extern int              sgarbf;
                    620: extern int              mode;
                    621: extern int              nrow;
                    622: extern int              ncol;
                    623: extern int              ttrow;
                    624: extern int              ttcol;
                    625: extern int              tttop;
                    626: extern int              ttbot;
                    627: extern int              tthue;
                    628: extern int              defb_nmodes;
                    629: extern int              defb_flag;
                    630: extern const char       cinfo[];
                    631: extern char            *keystrings[];
                    632: extern char             pat[NPAT];
1.5       millert   633: #ifndef NO_DPROMPT
1.74      deraadt   634: extern char             prompt[];
1.5       millert   635: #endif /* !NO_DPROMPT */
                    636:
                    637: /*
                    638:  * Globals.
                    639:  */
1.74      deraadt   640: int             tceeol;
                    641: int             tcinsl;
                    642: int             tcdell;