[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.180

1.180   ! op          1: /*     $OpenBSD: def.h,v 1.179 2023/04/17 09:49:04 op Exp $    */
1.64      kjell       2:
                      3: /* This file is in the public domain. */
1.6       niklas      4:
1.1       deraadt     5: /*
                      6:  * This file is the general header file for all parts
1.4       millert     7:  * of the Mg display editor. It contains all of the
1.1       deraadt     8:  * general definitions and macros. It also contains some
                      9:  * conditional compilation flags. All of the per-system and
                     10:  * per-terminal definitions are in special header files.
                     11:  */
1.58      henning    12:
1.143     bcallah    13: #include       "chrdef.h"
1.1       deraadt    14:
1.47      vincent    15: typedef int    (*PF)(int, int);        /* generally useful type */
1.1       deraadt    16:
                     17: /*
                     18:  * Table sizes, etc.
                     19:  */
1.7       art        20: #define NFILEN 1024            /* Length, file name.            */
                     21: #define NBUFN  NFILEN          /* Length, buffer name.          */
1.4       millert    22: #define NLINE  256             /* Length, line.                 */
                     23: #define PBMODES 4              /* modes per buffer              */
                     24: #define NPAT   80              /* Length, pattern.              */
                     25: #define HUGE   1000            /* A rather large number.        */
                     26: #define NSRCH  128             /* Undoable search commands.     */
                     27: #define NXNAME 64              /* Length, extended command.     */
1.60      db         28: #define NKNAME 20              /* Length, key names.            */
1.68      kjell      29: #define NTIME  50              /* Length, timestamp string.     */
1.147     bcallah    30:
1.1       deraadt    31: /*
                     32:  * Universal.
                     33:  */
1.4       millert    34: #define FALSE  0               /* False, no, bad, etc.          */
                     35: #define TRUE   1               /* True, yes, good, etc.         */
                     36: #define ABORT  2               /* Death, ^G, abort, etc.        */
1.125     lum        37: #define UERROR 3               /* User Error.                   */
1.127     florian    38: #define REVERT 4               /* Revert the buffer             */
1.1       deraadt    39:
1.98      deraadt    40: #define KCLEAR 2               /* clear echo area               */
1.1       deraadt    41:
                     42: /*
                     43:  * These flag bits keep track of
                     44:  * some aspects of the last command. The CFCPCN
                     45:  * flag controls goal column setting. The CFKILL
                     46:  * flag controls the clearing versus appending
                     47:  * of data in the kill buffer.
                     48:  */
1.159     lum        49: #define CFCPCN 0x0001          /* Last command was C-p or C-n   */
1.4       millert    50: #define CFKILL 0x0002          /* Last command was a kill       */
1.60      db         51: #define CFINS  0x0004          /* Last command was self-insert  */
1.1       deraadt    52:
                     53: /*
                     54:  * File I/O.
                     55:  */
1.4       millert    56: #define FIOSUC 0               /* Success.                      */
                     57: #define FIOFNF 1               /* File not found.               */
                     58: #define FIOEOF 2               /* End of file.                  */
                     59: #define FIOERR 3               /* Error.                        */
                     60: #define FIOLONG 4              /* long line partially read      */
1.77      deraadt    61: #define FIODIR 5               /* File is a directory           */
1.1       deraadt    62:
                     63: /*
                     64:  * Display colors.
                     65:  */
1.4       millert    66: #define CNONE  0               /* Unknown color.                */
                     67: #define CTEXT  1               /* Text color.                   */
                     68: #define CMODE  2               /* Mode line color.              */
                     69:
                     70: /*
1.22      millert    71:  * Flags for keyboard invoked functions.
1.4       millert    72:  */
                     73: #define FFUNIV         1       /* universal argument            */
1.27      deraadt    74: #define FFNEGARG       2       /* negative only argument        */
1.4       millert    75: #define FFOTHARG       4       /* other argument                */
                     76: #define FFARG          7       /* any argument                  */
                     77: #define FFRAND         8       /* Called by other function      */
1.1       deraadt    78:
                     79: /*
                     80:  * Flags for "eread".
                     81:  */
1.4       millert    82: #define EFFUNC 0x0001          /* Autocomplete functions.       */
                     83: #define EFBUF  0x0002          /* Autocomplete buffers.         */
                     84: #define EFFILE 0x0004          /* " files (maybe someday)       */
1.60      db         85: #define EFAUTO 0x0007          /* Some autocompletion on        */
1.4       millert    86: #define EFNEW  0x0008          /* New prompt.                   */
                     87: #define EFCR   0x0010          /* Echo CR at end; last read.    */
1.20      art        88: #define EFDEF  0x0020          /* buffer contains default args  */
1.63      kjell      89: #define EFNUL  0x0040          /* Null Minibuffer OK            */
1.1       deraadt    90:
                     91: /*
1.75      kjell      92:  * Direction of insert into kill ring
1.1       deraadt    93:  */
1.112     kjell      94: #define KNONE  0x00
                     95: #define KFORW  0x01            /* forward insert into kill ring */
                     96: #define KBACK  0x02            /* Backwards insert into kill ring */
                     97: #define KREG   0x04            /* This is a region-based kill */
1.1       deraadt    98:
1.123     lum        99: #define MAX_TOKEN 64
                    100:
1.164     lum       101: #define        BUFSIZE 128     /* Size of line contents in extend.c  */
1.49      vincent   102: /*
1.143     bcallah   103:  * Previously from sysdef.h
                    104:  */
                    105: typedef int    RSIZE;          /* Type for file/region sizes    */
                    106: typedef short  KCHAR;          /* Type for internal keystrokes  */
                    107:
                    108: /*
1.49      vincent   109:  * This structure holds the starting position
                    110:  * (as a line/offset pair) and the number of characters in a
                    111:  * region of a buffer. This makes passing the specification
                    112:  * of a region around a little bit easier.
                    113:  */
1.74      deraadt   114: struct region {
                    115:        struct line     *r_linep;       /* Origin line address.          */
                    116:        int              r_offset;      /* Origin line offset.           */
1.110     kjell     117:        int              r_lineno;      /* Origin line number            */
1.60      db        118:        RSIZE            r_size;        /* Length in characters.         */
1.74      deraadt   119: };
1.49      vincent   120:
                    121:
1.1       deraadt   122: /*
                    123:  * All text is kept in circularly linked
1.75      kjell     124:  * lists of "line" structures. These begin at the
1.1       deraadt   125:  * header line (which is the blank line beyond the
                    126:  * end of the buffer). This line is pointed to by
1.75      kjell     127:  * the "buffer" structure. Each line contains the number of
1.1       deraadt   128:  * bytes in the line (the "used" size), the size
                    129:  * of the text array, and the text. The end of line
                    130:  * is not stored as a byte; it's implied. Future
                    131:  * additions will include update hints, and a
                    132:  * list of marks into the line.
                    133:  */
1.74      deraadt   134: struct line {
                    135:        struct line     *l_fp;          /* Link to the next line         */
                    136:        struct line     *l_bp;          /* Link to the previous line     */
1.60      db        137:        int              l_size;        /* Allocated size                */
                    138:        int              l_used;        /* Used size                     */
                    139:        char            *l_text;        /* Content of the line           */
1.74      deraadt   140: };
1.1       deraadt   141:
                    142: /*
                    143:  * The rationale behind these macros is that you
                    144:  * could (with some editing, like changing the type of a line
1.75      kjell     145:  * link from a "struct line *" to a "REFLINE", and fixing the commands
1.1       deraadt   146:  * like file reading that break the rules) change the actual
                    147:  * storage representation of lines to use something fancy on
                    148:  * machines with small address spaces.
                    149:  */
                    150: #define lforw(lp)      ((lp)->l_fp)
                    151: #define lback(lp)      ((lp)->l_bp)
                    152: #define lgetc(lp, n)   (CHARMASK((lp)->l_text[(n)]))
                    153: #define lputc(lp, n, c) ((lp)->l_text[(n)]=(c))
                    154: #define llength(lp)    ((lp)->l_used)
                    155: #define ltext(lp)      ((lp)->l_text)
                    156:
                    157: /*
                    158:  * All repeated structures are kept as linked lists of structures.
                    159:  * All of these start with a LIST structure (except lines, which
                    160:  * have their own abstraction). This will allow for
                    161:  * later conversion to generic list manipulation routines should
1.60      db        162:  * I decide to do that. It does mean that there are four extra
1.1       deraadt   163:  * bytes per window. I feel that this is an acceptable price,
                    164:  * considering that there are usually only one or two windows.
                    165:  */
1.74      deraadt   166: struct list {
1.1       deraadt   167:        union {
1.74      deraadt   168:                struct mgwin    *l_wp;
1.75      kjell     169:                struct buffer   *x_bp;  /* l_bp is used by struct line */
1.74      deraadt   170:                struct list     *l_nxt;
1.1       deraadt   171:        } l_p;
1.82      kjell     172:        char *l_name;
1.74      deraadt   173: };
1.4       millert   174:
1.1       deraadt   175: /*
                    176:  * Usual hack - to keep from uglifying the code with lotsa
                    177:  * references through the union, we #define something for it.
                    178:  */
                    179: #define l_next l_p.l_nxt
                    180:
                    181: /*
                    182:  * There is a window structure allocated for
                    183:  * every active display window. The windows are kept in a
                    184:  * big list, in top to bottom screen order, with the listhead at
                    185:  * "wheadp". Each window contains its own values of dot and mark.
                    186:  * The flag field contains some bits that are set by commands
                    187:  * to guide redisplay; although this is a bit of a compromise in
                    188:  * terms of decoupling, the full blown redisplay is just too
                    189:  * expensive to run for every input character.
                    190:  */
1.74      deraadt   191: struct mgwin {
                    192:        struct list      w_list;        /* List header                  */
                    193:        struct buffer   *w_bufp;        /* Buffer displayed in window   */
                    194:        struct line     *w_linep;       /* Top line in the window       */
                    195:        struct line     *w_dotp;        /* Line containing "."          */
                    196:        struct line     *w_markp;       /* Line containing "mark"       */
1.60      db        197:        int              w_doto;        /* Byte offset for "."          */
                    198:        int              w_marko;       /* Byte offset for "mark"       */
1.122     lum       199:        int              w_toprow;      /* Origin 0 top row of window   */
                    200:        int              w_ntrows;      /* # of rows of text in window  */
                    201:        int              w_frame;       /* #lines to reframe by.        */
1.111     kjell     202:        char             w_rflag;       /* Redisplay Flags.             */
                    203:        char             w_flag;        /* Flags.                       */
1.74      deraadt   204:        struct line     *w_wrapline;
1.92      kjell     205:        int              w_dotline;     /* current line number of dot   */
                    206:        int              w_markline;    /* current line number of mark  */
1.74      deraadt   207: };
1.1       deraadt   208: #define w_wndp w_list.l_p.l_wp
                    209: #define w_name w_list.l_name
                    210:
                    211: /*
1.109     kjell     212:  * Window redisplay flags are set by command processors to
1.1       deraadt   213:  * tell the display system what has happened to the buffer
1.99      deanna    214:  * mapped by the window. Setting "WFFULL" is always a safe thing
1.1       deraadt   215:  * to do, but it may do more work than is necessary. Always try
                    216:  * to set the simplest action that achieves the required update.
                    217:  * Because commands set bits in the "w_flag", update will see
                    218:  * all change flags, and do the most general one.
                    219:  */
1.89      kjell     220: #define WFFRAME 0x01                   /* Force reframe.                */
1.43      vincent   221: #define WFMOVE 0x02                    /* Movement from line to line.   */
                    222: #define WFEDIT 0x04                    /* Editing within a line.        */
1.89      kjell     223: #define WFFULL 0x08                    /* Do a full display.            */
1.43      vincent   224: #define WFMODE 0x10                    /* Update mode line.             */
1.1       deraadt   225:
1.111     kjell     226: /*
                    227:  * Window flags
                    228:  */
                    229: #define WNONE  0x00                    /* No special window options.   */
                    230: #define WEPHEM 0x01                    /* Window is ephemeral.         */
                    231:
1.35      vincent   232: struct undo_rec;
1.113     oga       233: TAILQ_HEAD(undoq, undo_rec);
1.143     bcallah   234:
                    235: /*
                    236:  * Previously from sysdef.h
                    237:  * Only used in struct buffer.
                    238:  */
                    239: struct fileinfo {
                    240:         uid_t           fi_uid;
                    241:         gid_t           fi_gid;
                    242:         mode_t          fi_mode;
                    243:         struct timespec fi_mtime;       /* Last modified time */
                    244: };
1.35      vincent   245:
1.1       deraadt   246: /*
                    247:  * Text is kept in buffers. A buffer header, described
                    248:  * below, exists for every buffer in the system. The buffers are
                    249:  * kept in a big list, so that commands that search for a buffer by
                    250:  * name can find the buffer header. There is a safe store for the
                    251:  * dot and mark in the header, but this is only valid if the buffer
                    252:  * is not being displayed (that is, if "b_nwnd" is 0). The text for
                    253:  * the buffer is kept in a circularly linked list of lines, with
1.94      kjell     254:  * a pointer to the header line in "b_headp".
1.1       deraadt   255:  */
1.74      deraadt   256: struct buffer {
                    257:        struct list      b_list;        /* buffer list pointer           */
                    258:        struct buffer   *b_altb;        /* Link to alternate buffer      */
1.75      kjell     259:        struct line     *b_dotp;        /* Link to "." line structure    */
1.74      deraadt   260:        struct line     *b_markp;       /* ditto for mark                */
1.94      kjell     261:        struct line     *b_headp;       /* Link to the header line       */
1.74      deraadt   262:        struct maps_s   *b_modes[PBMODES]; /* buffer modes               */
1.75      kjell     263:        int              b_doto;        /* Offset of "." in above line   */
1.60      db        264:        int              b_marko;       /* ditto for the "mark"          */
                    265:        short            b_nmodes;      /* number of non-fundamental modes */
                    266:        char             b_nwnd;        /* Count of windows on buffer    */
                    267:        char             b_flag;        /* Flags                         */
                    268:        char             b_fname[NFILEN]; /* File name                   */
1.86      kjell     269:        char             b_cwd[NFILEN]; /* working directory             */
1.168     lum       270:        char            *b_nlseq;       /* Newline sequence of chars     */
                    271:        char            *b_nlchr;       /* 1st newline character         */
1.180   ! op        272:        int              b_tabw;        /* Width of a tab character      */
1.60      db        273:        struct fileinfo  b_fi;          /* File attributes               */
1.113     oga       274:        struct undoq     b_undo;        /* Undo actions list             */
1.67      kjell     275:        struct undo_rec *b_undoptr;
1.92      kjell     276:        int              b_dotline;     /* Line number of dot */
                    277:        int              b_markline;    /* Line number of mark */
                    278:        int              b_lines;       /* Number of lines in file      */
1.74      deraadt   279: };
1.1       deraadt   280: #define b_bufp b_list.l_p.x_bp
                    281: #define b_bname b_list.l_name
1.95      kjell     282:
                    283: /* Some helper macros, in case they ever change to functions */
                    284: #define bfirstlp(buf)  (lforw((buf)->b_headp))
                    285: #define blastlp(buf)   (lback((buf)->b_headp))
1.1       deraadt   286:
1.43      vincent   287: #define BFCHG  0x01                    /* Changed.                      */
                    288: #define BFBAK  0x02                    /* Need to make a backup.        */
                    289: #define BFNOTAB 0x04                   /* no tab mode                   */
                    290: #define BFOVERWRITE 0x08               /* overwrite mode                */
1.60      db        291: #define BFREADONLY  0x10               /* read only mode                */
1.107     kjell     292: #define BFDIRTY     0x20               /* Buffer was modified elsewhere */
1.151     lum       293: #define BFIGNDIRTY  0x40               /* Ignore modifications          */
                    294: #define BFDIREDDEL  0x80               /* Dired has a deleted 'D' file  */
1.1       deraadt   295: /*
1.30      vincent   296:  * This structure holds information about recent actions for the Undo command.
                    297:  */
                    298: struct undo_rec {
1.113     oga       299:        TAILQ_ENTRY(undo_rec) next;
1.30      vincent   300:        enum {
                    301:                INSERT = 1,
                    302:                DELETE,
1.93      kjell     303:                BOUNDARY,
1.112     kjell     304:                MODIFIED,
                    305:                DELREG
1.30      vincent   306:        } type;
1.74      deraadt   307:        struct region    region;
1.30      vincent   308:        int              pos;
1.34      deraadt   309:        char            *content;
1.30      vincent   310: };
1.144     bcallah   311:
                    312: /*
1.174     lum       313:  * Variable structure.
                    314:  */
                    315: struct varentry {
                    316:        SLIST_ENTRY(varentry) entry;
                    317:        char     v_buf[BUFSIZE];
                    318:        char    *v_name;
                    319:        char    *v_vals;
                    320:        int      v_count;
                    321: };
                    322: SLIST_HEAD(vhead, varentry);
                    323:
                    324: /*
1.144     bcallah   325:  * Previously from ttydef.h
                    326:  */
                    327: #define STANDOUT_GLITCH                        /* possible standout glitch     */
                    328:
                    329: #define putpad(str, num)       tputs(str, num, ttputc)
                    330:
                    331: #define KFIRST K00
                    332: #define KLAST  K00
1.30      vincent   333:
                    334: /*
1.4       millert   335:  * Prototypes.
                    336:  */
                    337:
1.5       millert   338: /* tty.c X */
1.74      deraadt   339: void            ttinit(void);
                    340: void            ttreinit(void);
                    341: void            tttidy(void);
                    342: void            ttmove(int, int);
                    343: void            tteeol(void);
                    344: void            tteeop(void);
                    345: void            ttbeep(void);
                    346: void            ttinsl(int, int, int);
                    347: void            ttdell(int, int, int);
                    348: void            ttwindow(int, int);
                    349: void            ttnowindow(void);
                    350: void            ttcolor(int);
                    351: void            ttresize(void);
1.31      deraadt   352:
1.166     florian   353: extern volatile sig_atomic_t winch_flag;
1.4       millert   354:
                    355: /* ttyio.c */
1.74      deraadt   356: void            ttopen(void);
                    357: int             ttraw(void);
                    358: void            ttclose(void);
                    359: int             ttcooked(void);
                    360: int             ttputc(int);
                    361: void            ttflush(void);
                    362: int             ttgetc(void);
                    363: int             ttwait(int);
1.80      kjell     364: int             charswaiting(void);
1.4       millert   365:
                    366: /* dir.c */
1.74      deraadt   367: void            dirinit(void);
                    368: int             changedir(int, int);
                    369: int             showcwdir(int, int);
1.86      kjell     370: int             getcwdir(char *, size_t);
1.131     jasper    371: int             makedir(int, int);
1.141     lum       372: int             do_makedir(char *);
                    373: int             ask_makedir(void);
1.4       millert   374:
                    375: /* dired.c */
1.74      deraadt   376: struct buffer  *dired_(char *);
1.172     lum       377: int             dired_jump(int, int);
1.152     lum       378: int             do_dired(char *);
1.5       millert   379:
                    380: /* file.c X */
1.74      deraadt   381: int             fileinsert(int, int);
                    382: int             filevisit(int, int);
                    383: int             filevisitalt(int, int);
                    384: int             filevisitro(int, int);
                    385: int             poptofile(int, int);
                    386: int             readin(char *);
                    387: int             insertfile(char *, char *, int);
                    388: int             filewrite(int, int);
                    389: int             filesave(int, int);
                    390: int             buffsave(struct buffer *);
                    391: int             makebkfile(int, int);
1.121     lum       392: int             writeout(FILE **, struct buffer *, char *);
1.74      deraadt   393: void            upmodes(struct buffer *);
1.116     kjell     394: size_t          xbasename(char *, const char *, size_t);
1.154     lum       395: int             do_filevisitalt(char *);
1.5       millert   396:
                    397: /* line.c X */
1.74      deraadt   398: struct line    *lalloc(int);
                    399: int             lrealloc(struct line *, int);
                    400: void            lfree(struct line *);
                    401: void            lchange(int);
                    402: int             linsert(int, int);
                    403: int             lnewline_at(struct line *, int);
                    404: int             lnewline(void);
                    405: int             ldelete(RSIZE, int);
                    406: int             ldelnewline(void);
                    407: int             lreplace(RSIZE, char *);
1.88      kjell     408: char *          linetostr(const struct line *);
1.156     reyk      409: int             setcasereplace(int, int);
1.78      kjell     410:
                    411: /* yank.c X */
                    412:
1.74      deraadt   413: void            kdelete(void);
                    414: int             kinsert(int, int);
                    415: int             kremove(int);
1.76      kjell     416: int             kchunk(char *, RSIZE, int);
1.78      kjell     417: int             killline(int, int);
                    418: int             yank(int, int);
1.5       millert   419:
                    420: /* window.c X */
1.74      deraadt   421: struct mgwin   *new_window(struct buffer *);
                    422: int             reposition(int, int);
1.80      kjell     423: int             redraw(int, int);
1.83      otto      424: int             do_redraw(int, int, int);
1.74      deraadt   425: int             nextwind(int, int);
                    426: int             prevwind(int, int);
                    427: int             onlywind(int, int);
                    428: int             splitwind(int, int);
                    429: int             enlargewind(int, int);
                    430: int             shrinkwind(int, int);
                    431: int             delwind(int, int);
1.4       millert   432:
                    433: /* buffer.c */
1.180   ! op        434: int             settabw(int, int);
1.74      deraadt   435: int             togglereadonly(int, int);
1.157     lum       436: int             togglereadonlyall(int, int);
1.86      kjell     437: struct buffer   *bfind(const char *, int);
1.74      deraadt   438: int             poptobuffer(int, int);
                    439: int             killbuffer(struct buffer *);
                    440: int             killbuffer_cmd(int, int);
                    441: int             savebuffers(int, int);
                    442: int             listbuffers(int, int);
                    443: int             addlinef(struct buffer *, char *, ...);
1.12      art       444: #define         addline(bp, text)      addlinef(bp, "%s", text)
1.74      deraadt   445: int             anycb(int);
                    446: int             bclear(struct buffer *);
                    447: int             showbuffer(struct buffer *, struct mgwin *, int);
1.86      kjell     448: int             augbname(char *, const char *, size_t);
1.111     kjell     449: struct mgwin    *popbuf(struct buffer *, int);
1.74      deraadt   450: int             bufferinsert(int, int);
                    451: int             usebuffer(int, int);
                    452: int             notmodified(int, int);
1.111     kjell     453: int             popbuftop(struct buffer *, int);
1.86      kjell     454: int             getbufcwd(char *, size_t);
1.107     kjell     455: int             checkdirty(struct buffer *);
1.126     jasper    456: int             revertbuffer(int, int);
1.128     haesbaer  457: int             dorevert(void);
1.134     florian   458: int             diffbuffer(int, int);
1.139     lum       459: struct buffer  *findbuffer(char *);
1.4       millert   460:
                    461: /* display.c */
1.165     lum       462: int             vtresize(int, int, int);
                    463: void            vtinit(void);
                    464: void            vttidy(void);
                    465: void            update(int);
                    466: int             linenotoggle(int, int);
                    467: int             colnotoggle(int, int);
1.5       millert   468:
                    469: /* echo.c X */
1.74      deraadt   470: void            eerase(void);
                    471: int             eyorn(const char *);
1.127     florian   472: int             eynorr(const char *);
1.74      deraadt   473: int             eyesno(const char *);
                    474: void            ewprintf(const char *fmt, ...);
1.150     guenther  475: char           *eread(const char *, char *, size_t, int, ...)
                    476:                                __attribute__((__format__ (printf, 1, 5)));
1.74      deraadt   477: int             getxtra(struct list *, struct list *, int, int);
                    478: void            free_file_list(struct list *);
1.4       millert   479:
                    480: /* fileio.c */
1.121     lum       481: int             ffropen(FILE **, const char *, struct buffer *);
                    482: void            ffstat(FILE *, struct buffer *);
                    483: int             ffwopen(FILE **, const char *, struct buffer *);
                    484: int             ffclose(FILE *, struct buffer *);
1.158     lum       485: int             ffputbuf(FILE *, struct buffer *, int);
1.121     lum       486: int             ffgetline(FILE *, char *, int, int *);
1.74      deraadt   487: int             fbackupfile(const char *);
1.91      jason     488: char           *adjustname(const char *, int);
1.178     op        489: FILE           *startupfile(char *, char *, char *, size_t);
1.74      deraadt   490: int             copy(char *, char *);
                    491: struct list    *make_file_list(char *);
                    492: int             fisdir(const char *);
1.107     kjell     493: int             fchecktime(struct buffer *);
                    494: int             fupdstat(struct buffer *);
1.124     lum       495: int             backuptohomedir(int, int);
                    496: int             toggleleavetmp(int, int);
1.130     jasper    497: char           *expandtilde(const char *);
1.4       millert   498:
1.5       millert   499: /* kbd.c X */
1.74      deraadt   500: int             do_meta(int, int);
                    501: int             bsmap(int, int);
                    502: void            ungetkey(int);
                    503: int             getkey(int);
                    504: int             doin(void);
                    505: int             rescan(int, int);
                    506: int             universal_argument(int, int);
                    507: int             digit_argument(int, int);
                    508: int             negative_argument(int, int);
1.162     lum       509: int             ask_selfinsert(int, int);
1.74      deraadt   510: int             selfinsert(int, int);
                    511: int             quote(int, int);
1.4       millert   512:
                    513: /* main.c */
1.74      deraadt   514: int             ctrlg(int, int);
                    515: int             quit(int, int);
1.4       millert   516:
                    517: /* ttyio.c */
1.74      deraadt   518: void            panic(char *);
1.4       millert   519:
                    520: /* cinfo.c */
1.80      kjell     521: char           *getkeyname(char  *, size_t, int);
1.4       millert   522:
                    523: /* basic.c */
1.74      deraadt   524: int             gotobol(int, int);
                    525: int             backchar(int, int);
                    526: int             gotoeol(int, int);
                    527: int             forwchar(int, int);
                    528: int             gotobob(int, int);
                    529: int             gotoeob(int, int);
                    530: int             forwline(int, int);
                    531: int             backline(int, int);
                    532: void            setgoal(void);
                    533: int             getgoal(struct line *);
                    534: int             forwpage(int, int);
                    535: int             backpage(int, int);
                    536: int             forw1page(int, int);
                    537: int             back1page(int, int);
                    538: int             pagenext(int, int);
                    539: void            isetmark(void);
                    540: int             setmark(int, int);
1.101     kjell     541: int             clearmark(int, int);
1.74      deraadt   542: int             swapmark(int, int);
                    543: int             gotoline(int, int);
1.126     jasper    544: int             setlineno(int);
1.5       millert   545:
1.159     lum       546: /* util.c X */
1.180   ! op        547: int             ntabstop(int, int);
1.74      deraadt   548: int             showcpos(int, int);
1.135     florian   549: int             getcolpos(struct mgwin *);
1.74      deraadt   550: int             twiddle(int, int);
                    551: int             openline(int, int);
1.142     bcallah   552: int             enewline(int, int);
1.74      deraadt   553: int             deblank(int, int);
                    554: int             justone(int, int);
                    555: int             delwhite(int, int);
1.102     kjell     556: int             delleadwhite(int, int);
                    557: int             deltrailwhite(int, int);
                    558: int             lfindent(int, int);
1.74      deraadt   559: int             indent(int, int);
                    560: int             forwdel(int, int);
                    561: int             backdel(int, int);
                    562: int             space_to_tabstop(int, int);
1.114     kjell     563: int             backtoindent(int, int);
1.115     kjell     564: int             joinline(int, int);
1.5       millert   565:
1.117     lum       566: /* tags.c X */
                    567: int             findtag(int, int);
                    568: int             poptag(int, int);
                    569: int             tagsvisit(int, int);
1.123     lum       570: int             curtoken(int, int, char *);
                    571:
                    572: /* cscope.c */
1.165     lum       573: int             cssymbol(int, int);
                    574: int             csdefinition(int, int);
                    575: int             csfuncalled(int, int);
                    576: int             cscallerfuncs(int, int);
                    577: int             csfindtext(int, int);
                    578: int             csegrep(int, int);
                    579: int             csfindfile(int, int);
                    580: int             csfindinc(int, int);
                    581: int             csnextfile(int, int);
                    582: int             csnextmatch(int, int);
                    583: int             csprevfile(int, int);
                    584: int             csprevmatch(int, int);
                    585: int             cscreatelist(int, int);
1.117     lum       586:
1.5       millert   587: /* extend.c X */
1.74      deraadt   588: int             insert(int, int);
                    589: int             bindtokey(int, int);
                    590: int             localbind(int, int);
1.80      kjell     591: int             redefine_key(int, int);
1.74      deraadt   592: int             unbindtokey(int, int);
                    593: int             localunbind(int, int);
                    594: int             extend(int, int);
                    595: int             evalexpr(int, int);
                    596: int             evalbuffer(int, int);
                    597: int             evalfile(int, int);
1.178     op        598: int             load(FILE *, const char *);
1.176     lum       599: int             excline(char *, int, int);
1.164     lum       600: char           *skipwhite(char *);
1.5       millert   601:
                    602: /* help.c X */
1.74      deraadt   603: int             desckey(int, int);
                    604: int             wallchart(int, int);
                    605: int             help_help(int, int);
                    606: int             apropos_command(int, int);
1.5       millert   607:
                    608: /* paragraph.c X */
1.74      deraadt   609: int             gotobop(int, int);
                    610: int             gotoeop(int, int);
                    611: int             fillpara(int, int);
                    612: int             killpara(int, int);
                    613: int             fillword(int, int);
                    614: int             setfillcol(int, int);
1.148     lum       615: int             markpara(int, int);
1.149     lum       616: int             transposepara(int, int);
1.155     lum       617: int             sentencespace(int, int);
1.5       millert   618:
                    619: /* word.c X */
1.74      deraadt   620: int             backword(int, int);
                    621: int             forwword(int, int);
                    622: int             upperword(int, int);
                    623: int             lowerword(int, int);
                    624: int             capword(int, int);
                    625: int             delfword(int, int);
                    626: int             delbword(int, int);
                    627: int             inword(void);
1.153     lum       628: int             transposeword(int, int);
1.5       millert   629:
                    630: /* region.c X */
1.74      deraadt   631: int             killregion(int, int);
                    632: int             copyregion(int, int);
                    633: int             lowerregion(int, int);
                    634: int             upperregion(int, int);
                    635: int             prefixregion(int, int);
                    636: int             setprefix(int, int);
                    637: int             region_get_data(struct region *, char *, int);
1.79      kjell     638: void            region_put_data(const char *, int);
1.119     lum       639: int             markbuffer(int, int);
                    640: int             piperegion(int, int);
1.136     lum       641: int             shellcommand(int, int);
1.133     florian   642: int             pipeio(const char * const, char * const[], char * const, int,
                    643:                     struct buffer *);
1.5       millert   644:
                    645: /* search.c X */
1.74      deraadt   646: int             forwsearch(int, int);
                    647: int             backsearch(int, int);
                    648: int             searchagain(int, int);
                    649: int             forwisearch(int, int);
                    650: int             backisearch(int, int);
                    651: int             queryrepl(int, int);
                    652: int             forwsrch(void);
                    653: int             backsrch(void);
                    654: int             readpattern(char *);
1.177     op        655: int             zapuptochar(int, int);
                    656: int             zaptochar(int, int);
                    657: int             zap(int, int);
1.5       millert   658:
                    659: /* spawn.c X */
1.74      deraadt   660: int             spawncli(int, int);
1.5       millert   661:
                    662: /* ttykbd.c X */
1.74      deraadt   663: void            ttykeymapinit(void);
                    664: void            ttykeymaptidy(void);
1.5       millert   665:
                    666: /* match.c X */
1.74      deraadt   667: int             showmatch(int, int);
1.5       millert   668:
                    669: /* version.c X */
1.74      deraadt   670: int             showversion(int, int);
1.5       millert   671:
                    672: /* macro.c X */
1.74      deraadt   673: int             definemacro(int, int);
                    674: int             finishmacro(int, int);
                    675: int             executemacro(int, int);
1.5       millert   676:
                    677: /* modes.c X */
1.74      deraadt   678: int             indentmode(int, int);
                    679: int             fillmode(int, int);
                    680: int             notabmode(int, int);
1.80      kjell     681: int             overwrite_mode(int, int);
1.74      deraadt   682: int             set_default_mode(int,int);
1.5       millert   683:
                    684: #ifdef REGEX
                    685: /* re_search.c X */
1.74      deraadt   686: int             re_forwsearch(int, int);
                    687: int             re_backsearch(int, int);
                    688: int             re_searchagain(int, int);
                    689: int             re_queryrepl(int, int);
1.173     lum       690: int             re_repl(int, int);
1.74      deraadt   691: int             replstr(int, int);
                    692: int             setcasefold(int, int);
                    693: int             delmatchlines(int, int);
                    694: int             delnonmatchlines(int, int);
                    695: int             cntmatchlines(int, int);
                    696: int             cntnonmatchlines(int, int);
1.5       millert   697: #endif /* REGEX */
1.1       deraadt   698:
1.30      vincent   699: /* undo.c X */
1.74      deraadt   700: void            free_undo_record(struct undo_rec *);
                    701: int             undo_dump(int, int);
1.97      kjell     702: int             undo_enabled(void);
1.108     kjell     703: int             undo_enable(int, int);
                    704: int             undo_add_boundary(int, int);
1.93      kjell     705: void            undo_add_modified(void);
1.74      deraadt   706: int             undo_add_insert(struct line *, int, int);
1.112     kjell     707: int             undo_add_delete(struct line *, int, int, int);
1.108     kjell     708: int             undo_boundary_enable(int, int);
1.74      deraadt   709: int             undo_add_change(struct line *, int, int);
                    710: int             undo(int, int);
1.41      vincent   711:
                    712: /* autoexec.c X */
1.74      deraadt   713: int             auto_execute(int, int);
                    714: PF             *find_autoexec(const char *);
                    715: int             add_autoexec(const char *, const char *);
1.46      vincent   716:
1.103     kjell     717: /* cmode.c X */
                    718: int             cmode(int, int);
1.104     kjell     719: int             cc_brace(int, int);
1.103     kjell     720: int             cc_char(int, int);
                    721: int             cc_tab(int, int);
                    722: int             cc_indent(int, int);
                    723: int             cc_lfindent(int, int);
1.66      kjell     724:
                    725: /* grep.c X */
1.74      deraadt   726: int             next_error(int, int);
1.100     kjell     727: int             globalwdtoggle(int, int);
1.106     kjell     728: int             compile(int, int);
1.30      vincent   729:
1.138     lum       730: /* bell.c */
                    731: void            bellinit(void);
                    732: int             toggleaudiblebell(int, int);
                    733: int             togglevisiblebell(int, int);
1.175     lum       734: int             dobeep_num(const char *, int);
1.163     lum       735: int             dobeep_msgs(const char *, const char *);
                    736: int             dobeep_msg(const char *);
1.138     lum       737: void            dobeep(void);
1.164     lum       738:
                    739: /* interpreter.c */
1.176     lum       740: int             foundparen(char *, int, int);
1.170     lum       741: void            cleanup(void);
1.138     lum       742:
1.1       deraadt   743: /*
                    744:  * Externals.
                    745:  */
1.74      deraadt   746: extern struct buffer   *bheadp;
                    747: extern struct buffer   *curbp;
                    748: extern struct mgwin    *curwp;
                    749: extern struct mgwin    *wheadp;
1.174     lum       750: extern struct vhead     varhead;
1.74      deraadt   751: extern int              thisflag;
                    752: extern int              lastflag;
                    753: extern int              curgoal;
                    754: extern int              startrow;
                    755: extern int              epresf;
                    756: extern int              sgarbf;
                    757: extern int              mode;
                    758: extern int              nrow;
                    759: extern int              ncol;
                    760: extern int              ttrow;
                    761: extern int              ttcol;
                    762: extern int              tttop;
                    763: extern int              ttbot;
                    764: extern int              tthue;
                    765: extern int              defb_nmodes;
                    766: extern int              defb_flag;
1.138     lum       767: extern int              doaudiblebell;
                    768: extern int              dovisiblebell;
1.155     lum       769: extern int              dblspace;
1.157     lum       770: extern int              allbro;
1.169     lum       771: extern int              batch;
1.117     lum       772: extern char             cinfo[];
1.74      deraadt   773: extern char            *keystrings[];
                    774: extern char             pat[NPAT];
                    775: extern char             prompt[];
1.166     florian   776: extern int              tceeol;
                    777: extern int              tcinsl;
                    778: extern int              tcdell;
                    779: extern int              rptcount;      /* successive invocation count */