home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / useful / util / edit / mg / src.lzh / h / def.h < prev    next >
C/C++ Source or Header  |  1990-05-23  |  20KB  |  647 lines

  1. #ifndef    DEF_H
  2. #define DEF_H
  3. /*
  4.  * This file is the general header file for all parts of the MicroEMACS
  5.  * display editor. It contains all of the general definitions and macros. It
  6.  * _must_ be included in any source file after all the option include files.
  7.  */
  8. #include    "sysdef.h"    /* Order is critical.         */
  9. #include    "ttydef.h"
  10. #include    "chrdef.h"
  11.  
  12. /*
  13.  * If your system and/or compiler does not support the "void" type then
  14.  * define NO_VOID_TYPE in sysdef.h.  In the absence of some other definition
  15.  * for VOID, the default in that case will be to turn it into an int, which
  16.  * works with most compilers that don't support void.  In the absence of any
  17.  * definition of VOID or NO_VOID_TYPE, the default is to assume void is
  18.  * supported, which should be the case for most modern C compilers.
  19.  */
  20.  
  21. #ifdef NO_VOID_TYPE
  22. #  undef VOID
  23. #  define VOID int        /* Default for no void is int */
  24. #else
  25. #ifndef VOID
  26. #  define VOID void        /* Just use normal void */
  27. #endif                /* VOID */
  28. #endif                /* NO_VOID_TYPE */
  29.  
  30. /*
  31.  * If your system and/or compiler doesn't support prototypes, NO_PROTO in
  32.  * sysdef.h. This will cause all parameters to vanish.
  33.  */
  34.  
  35. #ifdef    NO_PROTO
  36. #define PROTO(a)    ()
  37. #else
  38. #define PROTO(a)    a
  39. #endif
  40.  
  41. /*
  42.  * Table sizes, etc.
  43.  */
  44. #define NFILEN    80        /* Length, file name.         */
  45. #define NBUFN    24        /* Length, buffer name.         */
  46. #define NMACN    80        /* Length, macro name.         */
  47. #define NLINE    256        /* Length, line.         */
  48. #define PBMODES 4        /* modes per buffer         */
  49. #define NKBDM    256        /* Length, keyboard macro.     */
  50. #define NPAT    80        /* Length, pattern.         */
  51. #define HUGE    1000        /* A rather large number.     */
  52. #define NSRCH    128        /* Undoable search commands.     */
  53. #define NXNAME    128        /* Length, extended command.     */
  54. #define NKNAME    20        /* Length, key names         */
  55. /*
  56.  * Universal.
  57.  */
  58. #define FALSE    0        /* False, no, bad, etc.         */
  59. #define TRUE    1        /* True, yes, good, etc.     */
  60. #define ABORT    2        /* Death, ^G, abort, etc.     */
  61.  
  62. #define ERASE    ABORT        /* epresf -> erase _now_     */
  63.  
  64. /*
  65.  * These flag bits keep track of some aspects of the last command. The CFCPCN
  66.  * flag controls goal column setting. The CFKILL flag controls the clearing
  67.  * versus appending of data in the kill buffer.
  68.  */
  69. #define CFCPCN    0x0001        /* Last command was C-P, C-N     */
  70. #define CFKILL    0x0002        /* Last command was a kill     */
  71. #define CFINS    0x0004        /* Last command was self-insert */
  72.  
  73. /*
  74.  * File I/O.
  75.  */
  76. #define FIOSUC    0        /* Success.             */
  77. #define FIOFNF    1        /* File not found.         */
  78. #define FIOEOF    2        /* End of file.             */
  79. #define FIOERR    3        /* Error.             */
  80. #define FIOLONG 4        /* long line partially read     */
  81.  
  82. /*
  83.  * Directory I/O.
  84.  */
  85. #define DIOSUC    0        /* Success.             */
  86. #define DIOEOF    1        /* End of file.             */
  87. #define DIOERR    2        /* Error.             */
  88.  
  89. /*
  90.  * Display colors.
  91.  */
  92. #define CNONE    0        /* Unknown color.         */
  93. #define CTEXT    1        /* Text color.             */
  94. #define CMODE    2        /* Mode line color.         */
  95.  
  96. /* Flags for keyboard invoked functions */
  97.  
  98. #define FFUNIV        1    /* universal argument         */
  99. #define FFNEGARG    2    /* negitive only argument     */
  100. #define FFOTHARG    4    /* other argument         */
  101. #define FFARG        7    /* any argument             */
  102. #define FFRAND        8    /* Called by other function     */
  103.  
  104. /*
  105.  * Flags for "getkey". SOFTCR first. It should be a KCHAR that's not
  106.  * otherwise used. If the defualt won't work, set it in ttydef.h. SOFTCR is
  107.  * used to tag the end of strings in macros. You should use SEESCR if you
  108.  * want to get a real string, including carriage returns; SOFTCR will be the
  109.  * end of string marker. If you're getting some number of keys that
  110.  * terminates based on the keys (keymap searches, or some such), you should
  111.  * use DISSCR. It will throw out the SOFTCR that follows the argument you're
  112.  * reading in the macro (or startup buffer, which uses the same code). If the
  113.  * argument doesn't terminate correctly, the next argument read will have
  114.  * bogus values (either the end of your arg, or with you getting part of
  115.  * theirs). Setting niether causes the SOFTCR to turn into a CR. This is what
  116.  * eread and friends do.
  117.  */
  118. #ifndef    SOFTCR
  119. #define SOFTCR        0x1000    /* Avoid the metabit */
  120. #endif
  121. #define    PROMPT        0x01    /* Delayed prompt, if supported */
  122. #define    SEESCR        0x02    /* Pass SOFTCR unmodifed */
  123. #define DISSCR        0x04    /* Discard SOFTCR (with lookahead) */
  124. #define CRFLAGS        0x06    /* All the SOFTCR flags at once */
  125.  
  126. /*
  127.  * Flags for "eread".
  128.  */
  129. #define EFFUNC    0x0001        /* Autocomplete functions.     */
  130. #define EFBUF    0x0002        /* Autocomplete buffers.     */
  131. #define EFFILE    0x0004        /* " files (maybe someday)     */
  132. #define EFMACRO    0x0008        /* Autocomplete only macros     */
  133. #define    EFFORCE    0x0009        /* Must complete to known name     */
  134. #define EFAUTO    0x000F        /* Some autocompleteion on     */
  135. #define EFNEW    0x0010        /* New prompt.             */
  136. #define EFCR    0x0020        /* Echo CR at end; last read.     */
  137.  
  138. /*
  139.  * Flags for kinsert
  140.  */
  141.  
  142. #define KFORW    0
  143. #define KBACK    1
  144. /*
  145.  * Externals.
  146.  */
  147. extern int      thisflag;
  148. extern int      lastflag;
  149. extern int      curgoal;
  150. extern int      epresf;
  151. extern int      sgarbf;
  152. extern int      mode;
  153. extern char     pat[];
  154. extern int      nrow;
  155. extern int      ncol;
  156. extern int      ttrow;
  157. extern int      ttcol;
  158. extern int      tceeol;
  159. extern int      tcinsl;
  160. extern int      tcdell;
  161. extern char     cinfo[];
  162. extern char    *keystrings[];
  163. #ifdef    NO_PROTO
  164. extern VOID     ewprintf();
  165. extern VOID     update();
  166. extern char    *keyname();
  167. extern char    *adjustname();
  168. extern VOID     kdelete();
  169. extern VOID     lchange();
  170. #endif
  171.  
  172. #ifndef    ANSI
  173. /*
  174.  * Standard I/O.
  175.  */
  176. extern char    *strcpy();
  177. extern char    *strcat();
  178. extern char    *malloc();
  179. #endif
  180.  
  181. /*
  182.  * This is the beginnings of the prototype list for all externals. We give
  183.  * prototypes for all external functions from all files that have arguments
  184.  * that are standard C type and return standard C types. Functions that
  185.  * return mg-specific types have prototypes in the .h files that define those
  186.  * types. Things are set up so that if you take it out of the ifdef's, you
  187.  * won't get the parameters unless your compiler can support them. I'm not
  188.  * sure what will happen in that case.
  189.  */
  190.  
  191. #ifndef    NO_PROTO
  192. /* Prototypes for functions defined in help.c */
  193. int             desckey
  194.                 PROTO((int f, int n));
  195. int             wallchart
  196.                 PROTO((int f, int n));
  197. int             help_help
  198.                 PROTO((int f, int n));
  199. int             apropos_command
  200.                 PROTO((int f, int n));
  201.  
  202. /* Prototypes for functions defined in macro.c */
  203. int             definemacro
  204.                 PROTO((int f, int n));
  205. int             finishmacro
  206.                 PROTO((int f, int n));
  207. int             executemacro
  208.                 PROTO((int f, int n));
  209. int             insertmacro
  210.                 PROTO((int f, int n));
  211. int             namemacro
  212.                 PROTO((int f, int n));
  213. int             macroset
  214.                 PROTO((int f, int n));
  215. int             macroquery
  216.                 PROTO((int f, int n));
  217.  
  218. /* Prototypes for functions defined in keymap.c */
  219. int
  220.                 complete_function(char *fname, int c);
  221. char           *function_name
  222.                 PROTO((int (*fpoint) ()));
  223. int             (*
  224.                          name_function PROTO((char *fname))) ();
  225.  
  226. /* Prototypes for functions defined in display.c */
  227. VOID            vtinit
  228.                 PROTO((VOID));
  229. VOID            vttidy
  230.                 PROTO((VOID));
  231. VOID            vtmove
  232.                 PROTO((int row, int col));
  233. VOID            vtputc
  234.                 PROTO((int c));
  235. VOID            vtpute
  236.                 PROTO((int c));
  237. VOID            vteeol
  238.                 PROTO((VOID));
  239. VOID            update
  240.                 PROTO((VOID));
  241. VOID            updext
  242.                 PROTO((int currow, int curcol));
  243. int             vtputs
  244.                 PROTO((char *s));
  245.  
  246. /* Prototypes for functions defined in version.c */
  247. int             showversion
  248.                 PROTO((int f, int n));
  249.  
  250. /* Prototypes for functions defined in cinfo.c */
  251. char           *keyname
  252.                 PROTO((char *cp, int k));
  253.  
  254. /* Prototypes for functions defined in dir.c */
  255. VOID            dirinit
  256.                 PROTO((VOID));
  257. int             changedir
  258.                 PROTO((int f, int n));
  259. int             showcwdir
  260.                 PROTO((int f, int n));
  261. int             filevisit
  262.                 PR