home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / memacs32.zip / h / evar.h < prev    next >
Text File  |  1993-08-07  |  10KB  |  309 lines

  1. /*    EVAR.H: Environment and user variable definitions
  2.         for MicroEMACS
  3.  
  4.         written 1993 by Daniel Lawrence
  5. */
  6.  
  7. /*    structure to hold user variables and their definitions    */
  8.  
  9. typedef struct UVAR {
  10.     char u_name[NVSIZE + 1];           /* name of user variable */
  11.     char *u_value;                /* value (string) */
  12. } UVAR;
  13.  
  14. /*    current user variables (This structure will probably change)    */
  15.  
  16. #define MAXVARS     512
  17.  
  18. UVAR NOSHARE uv[MAXVARS + 1];    /* user variables */
  19.  
  20. /*    list of recognized environment variables    */
  21.  
  22. NOSHARE char *envars[] = {
  23.     "acount",        /* # of chars until next auto-save */
  24.     "asave",        /* # of chars between auto-saves */
  25.     "bufhook",        /* enter buffer switch hook */
  26.     "cbflags",        /* current buffer flags */
  27.     "cbufname",        /* current buffer name */
  28.     "cfname",        /* current file name */
  29.     "cmdhook",        /* command loop hook */
  30.     "cmode",        /* mode of current buffer */
  31.     "curchar",        /* current character under the cursor */
  32.     "curcol",        /* current column pos of cursor */
  33.     "curline",        /* current line in file */
  34.     "curwidth",        /* current screen width */
  35.     "curwind",        /* current window ordinal on current screen */
  36.     "cwline",        /* current screen line in window */
  37.     "debug",        /* macro debugging */
  38.     "deskcolor",        /* desktop color */
  39.     "diagflag",        /* diagonal mouse movements enabled? */
  40.     "discmd",        /* display commands on command line */
  41.     "disinp",        /* display command line input characters */
  42.     "disphigh",        /* display high bit characters escaped */
  43.     "exbhook",        /* exit buffer switch hook */
  44.     "fcol",            /* first displayed column in curent window */
  45.     "fillcol",        /* current fill column */
  46.     "flicker",        /* flicker supression */
  47.     "fmtlead",        /* format command lead characters */
  48.     "gflags",        /* global internal emacs flags */
  49.     "gmode",        /* global modes */
  50.     "hardtab",        /* current hard tab size */
  51.     "hilight",        /* region # to hilight (255 to turn off) */
  52.     "hjump",        /* horizontal screen jump size */
  53.     "hscrlbar",        /* horizontal scroll bar flag */
  54.     "hscroll",        /* horizontal scrolling flag */
  55.     "isterm",        /* incremental-search terminator character */
  56.     "kill",         /* kill buffer (read only) */
  57.     "language",        /* language of text messages */
  58.     "lastkey",        /* last keyboard char struck */
  59.     "lastmesg",        /* last string mlwrite()ed */
  60.     "line",         /* text of current line */
  61.     "lterm",        /* current line terminator for writes */
  62.     "lwidth",        /* width of current line */
  63.     "match",        /* last matched magic pattern */
  64.     "mmove",        /* mouse moves events style */
  65.     "modeflag",        /* Modelines displayed flag */
  66.     "msflag",        /* activate mouse? */
  67.     "numwind",        /* number of windows on current screen */
  68.     "orgcol",        /* screen origin column */
  69.     "orgrow",        /* screen origin row */
  70.     "os",            /* what Operating System? */
  71.     "overlap",        /* line overlap when paging */
  72.     "pagelen",        /* number of lines used by editor */
  73.     "palette",        /* current palette string */
  74.     "paralead",        /* paragraph leadin characters */
  75.     "pending",        /* type ahead pending flag */
  76.     "popflag",        /* pop-up windows active? */
  77.     "posflag",        /* display point position on modeline? */
  78.     "progname",        /* returns current prog name - "MicroEMACS" */
  79.     "ram",            /* ram in use by malloc */
  80.     "readhook",        /* read file execution hook */
  81.     "region",        /* current region (read only) */
  82.     "replace",        /* replacement pattern */
  83.     "rval",         /* child process return value */
  84.     "scrname",        /* current screen name */
  85.     "search",        /* search pattern */
  86.     "searchpnt",        /* differing search styles (term point) */
  87.     "seed",         /* current random number seed */
  88.     "softtab",        /* current soft tab size */
  89.     "sres",         /* current screen resolution */
  90.     "ssave",        /* safe save flag */
  91.     "sscroll",        /* smooth scrolling flag */
  92.     "status",        /* returns the status of the last command */
  93.     "sterm",        /* search terminator character */
  94.     "target",        /* target for line moves */
  95.     "time",            /* date and time */
  96.     "timeflag",        /* display time? */
  97.     "tpause",        /* length to pause for paren matching */
  98.     "version",        /* current version number */
  99.     "vscrlbar",        /* vertical scroll bar flag */
  100.     "wchars",        /* set of characters legal in words */
  101.     "wline",        /* # of lines in current window */
  102.     "wraphook",        /* wrap word execution hook */
  103.     "writehook",        /* write file hook */
  104.     "xpos",         /* current mouse X position */
  105.     "yankflag",        /* point placement at yanked/included text */
  106.     "ypos"             /* current mouse Y position */
  107. };
  108.  
  109. #define NEVARS    sizeof(envars) / sizeof(char *)
  110.  
  111. /*    and its preprocesor definitions     */
  112.  
  113. #define EVACOUNT    0
  114. #define EVASAVE     1
  115. #define    EVBUFHOOK    2
  116. #define EVCBFLAGS    3
  117. #define EVCBUFNAME    4
  118. #define EVCFNAME    5
  119. #define EVCMDHK     6
  120. #define EVCMODE     7
  121. #define EVCURCHAR    8
  122. #define EVCURCOL    9
  123. #define EVCURLINE    10
  124. #define EVCURWIDTH    11
  125. #define    EVCURWIND    12
  126. #define EVCWLINE    13
  127. #define EVDEBUG         14
  128. #define    EVDESKCLR    15
  129. #define EVDIAGFLAG      16
  130. #define EVDISCMD        17
  131. #define EVDISINP        18
  132. #define    EVDISPHIGH    19
  133. #define EVEXBHOOK       20
  134. #define EVFCOL        21
  135. #define EVFILLCOL    22
  136. #define EVFLICKER    23
  137. #define    EVFMTLEAD    24
  138. #define EVGFLAGS    25
  139. #define EVGMODE     26
  140. #define    EVHARDTAB    27
  141. #define    EVHILITE    28
  142. #define EVHJUMP        29
  143. #define EVHSCRLBAR      30
  144. #define EVHSCROLL    31
  145. #define EVISTERM    32
  146. #define EVKILL          33
  147. #define EVLANG          34
  148. #define EVLASTKEY       35
  149. #define EVLASTMESG      36
  150. #define EVLINE          37
  151. #define    EVLTERM        38
  152. #define EVLWIDTH        39
  153. #define EVMATCH         40
  154. #define EVMMOVE        41
  155. #define EVMODEFLAG      42
  156. #define EVMSFLAG        43
  157. #define    EVNUMWIND    44
  158. #define    EVORGCOL    45
  159. #define    EVORGROW    46
  160. #define    EVOS        47
  161. #define    EVOVERLAP    48
  162. #define EVPAGELEN       49
  163. #define EVPALETTE       50
  164. #define    EVPARALEAD    51
  165. #define EVPENDING       52
  166. #define    EVPOPFLAG    53
  167. #define    EVPOSFLAG    54
  168. #define EVPROGNAME      55
  169. #define EVRAM           56
  170. #define EVREADHK        57
  171. #define    EVREGION    58
  172. #define EVREPLACE       59
  173. #define EVRVAL          60
  174. #define EVSCRNAME    61
  175. #define EVSEARCH        62
  176. #define EVSEARCHPNT    63
  177. #define EVSEED          64
  178. #define EVSOFTTAB    65
  179. #define EVSRES          66
  180. #define EVSSAVE         67
  181. #define EVSSCROLL    68
  182. #define EVSTATUS    69
  183. #define EVSTERM     70
  184. #define EVTARGET    71
  185. #define EVTIME        72
  186. #define EVTIMEFLAG    73
  187. #define EVTPAUSE    74
  188. #define EVVERSION    75
  189. #define EVVSCRLBAR      76
  190. #define    EVWCHARS    77
  191. #define EVWLINE     78
  192. #define EVWRAPHK    79
  193. #define    EVWRITEHK    80
  194. #define EVXPOS        81
  195. #define    EVYANKFLAG    82
  196. #define EVYPOS        83
  197.  
  198. /*    list of recognized user functions    */
  199.  
  200. typedef struct UFUNC {
  201.     char *f_name;  /* name of function */
  202.     int f_type;    /* 1 = monamic, 2 = dynamic */
  203. } UFUNC;
  204.  
  205. #define NILNAMIC    0
  206. #define MONAMIC     1
  207. #define DYNAMIC     2
  208. #define TRINAMIC    3
  209.  
  210. NOSHARE UFUNC funcs[] = {
  211.     "abs", MONAMIC,     /* absolute value of a number */
  212.     "add", DYNAMIC,        /* add two numbers together */
  213.     "and", DYNAMIC,     /* logical and */
  214.     "asc", MONAMIC,     /* char to integer conversion */
  215.     "ban", DYNAMIC,     /* bitwise and     9-10-87  jwm */
  216.     "bin", MONAMIC,     /* loopup what function name is bound to a key */
  217.     "bno", MONAMIC,     /* bitwise not */
  218.     "bor", DYNAMIC,     /* bitwise or     9-10-87  jwm */
  219.     "bxo", DYNAMIC,     /* bitwise xor     9-10-87  jwm */
  220.     "cat", DYNAMIC,     /* concatinate string */
  221.     "chr", MONAMIC,     /* integer to char conversion */
  222.     "div", DYNAMIC,     /* division */
  223.     "env", MONAMIC,     /* retrieve a system environment var */
  224.     "equ", DYNAMIC,     /* logical equality check */
  225.     "exi", MONAMIC,     /* check if a file exists */
  226.     "fin", MONAMIC,     /* look for a file on the path... */
  227.     "gre", DYNAMIC,     /* logical greater than */
  228.     "gro", MONAMIC,        /* return group match in MAGIC mode */
  229.     "gtc", NILNAMIC,    /* get 1 emacs command */
  230.     "gtk", NILNAMIC,    /* get 1 charater */
  231.     "ind", MONAMIC,     /* evaluate indirect value */
  232.     "isn", MONAMIC,        /* is the arg a number? */
  233.     "lef", DYNAMIC,     /* left string(string, len) */
  234.     "len", MONAMIC,     /* string length */
  235.     "les", DYNAMIC,     /* logical less than */
  236.     "low", MONAMIC,     /* lower case string */
  237.     "mid", TRINAMIC,    /* mid string(string, pos, len) */
  238.     "mod", DYNAMIC,     /* mod */
  239.     "neg", MONAMIC,     /* negate */
  240.     "not", MONAMIC,     /* logical not */
  241.     "or",  DYNAMIC,     /* logical or */
  242.     "rev", MONAMIC,        /* reverse */
  243.     "rig", DYNAMIC,     /* right string(string, pos) */
  244.     "rnd", MONAMIC,     /* get a random number */
  245.     "seq", DYNAMIC,     /* string logical equality check */
  246.     "sgr", DYNAMIC,     /* string logical greater than */
  247.     "sin", DYNAMIC,     /* find the index of one string in another */
  248.     "sle", DYNAMIC,     /* string logical less than */
  249.     "slo", DYNAMIC,        /* set lower to upper char translation */
  250.     "sub", DYNAMIC,     /* subtraction */
  251.     "sup", DYNAMIC,        /* set upper to lower char translation */
  252.     "tim", DYNAMIC,     /* multiplication */
  253.     "tri", MONAMIC,        /* trim whitespace off the end of a string */
  254.     "tru", MONAMIC,     /* Truth of the universe logical test */
  255.     "upp", MONAMIC,     /* uppercase string */
  256.     "xla", TRINAMIC        /* XLATE character string translation */
  257. };
  258.  
  259. #define NFUNCS    sizeof(funcs) / sizeof(UFUNC)
  260.  
  261. /*    and its preprocesor definitions     */
  262.  
  263. #define UFABS        0
  264. #define UFADD        1
  265. #define UFAND        2
  266. #define UFASCII     3
  267. #define UFBAND        4
  268. #define UFBIND        5
  269. #define UFBNOT        6
  270. #define UFBOR        7
  271. #define UFBXOR        8
  272. #define UFCAT        9
  273. #define UFCHR        10
  274. #define UFDIV        11
  275. #define UFENV        12
  276. #define UFEQUAL     13
  277. #define UFEXIST     14
  278. #define UFFIND        15
  279. #define UFGREATER    16
  280. #define UFGROUP        17
  281. #define UFGTCMD     18
  282. #define UFGTKEY     19
  283. #define UFIND        20
  284. #define    UFISNUM        21
  285. #define UFLEFT        22
  286. #define UFLENGTH    23
  287. #define UFLESS        24
  288. #define UFLOWER     25
  289. #define UFMID        26
  290. #define UFMOD        27
  291. #define UFNEG        28
  292. #define UFNOT        29
  293. #define UFOR        30
  294. #define UFREVERSE    31
  295. #define UFRIGHT     32
  296. #define UFRND        33
  297. #define UFSEQUAL    34
  298. #define UFSGREAT    35
  299. #define UFSINDEX    36
  300. #define UFSLESS     37
  301. #define    UFSLOWER    38
  302. #define UFSUB        39
  303. #define    UFSUPPER    40
  304. #define UFTIMES     41
  305. #define    UFTRIM        42
  306. #define UFTRUTH     43
  307. #define UFUPPER     44
  308. #define UFXLATE     45
  309.