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