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 */