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