summaryrefslogtreecommitdiff
path: root/editors/uemacs/patches/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'editors/uemacs/patches/patch-ab')
-rw-r--r--editors/uemacs/patches/patch-ab1259
1 files changed, 0 insertions, 1259 deletions
diff --git a/editors/uemacs/patches/patch-ab b/editors/uemacs/patches/patch-ab
deleted file mode 100644
index 3cdb6fef337..00000000000
--- a/editors/uemacs/patches/patch-ab
+++ /dev/null
@@ -1,1259 +0,0 @@
-$NetBSD: patch-ab,v 1.4 2004/02/13 23:49:12 snj Exp $
-
---- netbsd/estruct.h.orig Wed Mar 25 14:21:05 1998
-+++ netbsd/estruct.h Wed Mar 25 14:25:34 1998
-@@ -0,0 +1,1254 @@
-+/* ESTRUCT: Structure and preprocesser defined for
-+ MicroEMACS 4.00
-+
-+ (C)Copyright 1995 by Daniel Lawrence
-+ written by Daniel Lawrence
-+ based on code by Dave G. Conroy,
-+ Steve Wilhite and George Jones
-+*/
-+
-+#ifdef LATTICE
-+#undef LATTICE /* don't use their definitions...use ours */
-+#endif
-+#ifdef MSDOS
-+#undef MSDOS
-+#endif
-+#ifdef WINNT
-+#undef WINNT
-+#endif
-+#ifdef AMIGA
-+#undef AMIGA
-+#endif
-+#ifdef EGA
-+#undef EGA
-+#endif
-+#ifdef CTRLZ
-+#undef CTRLZ
-+#endif
-+
-+/* Program Identification.....
-+
-+ PROGNAME should always be MicroEMACS for a distribution
-+ unmodified version. People using MicroEMACS as a shell
-+ for other products should change this to reflect their
-+ product. Macros can query this via the $progname variable
-+*/
-+
-+#define PROGNAME "MicroEMACS"
-+#define VERSION "4.00"
-+
-+/* Machine/OS definitions */
-+/* [Set one of these!!] */
-+
-+#define AMIGA 0 /* AmigaDOS */
-+#define AOSVS 0 /* Data General AOS/VS */
-+#define AUX 0 /* Apple UNIX for Macintosh */
-+#define AIX 0 /* IBM UNIX for various machines*/
-+#define AVIION 0 /* Data General AViiON */
-+#define BSD 0 /* UNIX BSD 4.2 and ULTRIX */
-+#define FINDER 0 /* Macintosh OS */
-+#define FREEBSD 1 /* Works fine for FreeBSD, too */
-+#define HPUX8 0 /* HPUX HP 9000 ver 8 or less */
-+#define HPUX9 0 /* HPUX HP 9000 ver 9 */
-+#define MPE 0 /* HP MPE/XL */
-+#define MSDOS 0 /* MS-DOS */
-+#define WINNT 0 /* MS-Win NT */
-+#define OS2 0 /* Microsoft or IBM OS/2 */
-+#define SMOS 0 /* Supermax UNIX System V */
-+#define SUN 0 /* SUN v4.0 */
-+#define TOS 0 /* ST520, TOS */
-+#define USG 0 /* UNIX system V */
-+#define VMS 0 /* VAX/VMS */
-+#define WMCS 0 /* Wicat's MCS */
-+#define XENIX 0 /* IBM-PC SCO XENIX */
-+
-+/* Compiler definitions */
-+/* [Set one of these!!] */
-+#define ALCYON 0 /* ALCYON Atari ST compiler */
-+#define AZTEC 0 /* Aztec C 4.00e ONLY for the amiga now... */
-+#define DGC 0 /* Data General AOS/VS C... */
-+#define GCC 0 /* the GNU C compiler */
-+#define IC 0 /* Rational Systems Instant C */
-+#define LATTICE 0 /* Lattice 2.14 through 3.0 compilers */
-+#define MSC 0 /* MicroSoft C compile version 3 thru 7 */
-+#define MWC 0 /* Mark Williams C */
-+#define TURBO 0 /* Turbo C and Borland C++ under MSDOS */
-+#define UNIX 1 /* a standard UNIX compiler (cc) */
-+#define ZTC 0 /* Zortech C/C++ 1.02 thru 2.10 under MSDOS */
-+
-+/* Machine stack growth direction. */
-+/* [Set this to 1 if your machine stack grows UP!!!] */
-+/* data general mv/eclipse series stack grows up. */
-+/* dec vax series stack grows down... got it??? */
-+
-+#define STACK_GROWS_UP 0
-+
-+/* Debugging options */
-+#define RAMSIZE 0 /* dynamic RAM memory usage tracking */
-+#define RAMSHOW 0 /* auto dynamic RAM reporting */
-+#define RAMTRCK 0 /* send debug info to MALLOC.DAT */
-+#define DEBUG_SEARCH 0 /* pop some search info on patterns */
-+
-+/* Special keyboard/network definitions */
-+
-+#define ATKBD 0 /* AT-style keyboard with F11, F12 & grey keys */
-+#define WANGPC 0 /* WangPC - mostly escape sequences */
-+#define VT100 1 /* Handle VT100 style keypad - NOT VMS. */
-+#define KEYPAD 0 /* VMS - turn on and off application */
-+ /* keypad automatically */
-+#define XONDATA 0 /* VMS - set to force /NOTTSYNC/NOHOSTSY */
-+#define RMSIO 0 /* VMS - skip the rotten C runtime and */
-+ /* use RMS directly */
-+#define OPTMEM 0 /* VMS 5.0 and up - use a less standard */
-+ /* but more efficient memory allocator */
-+
-+/* Terminal Output definitions */
-+/* [Set one of these!!] */
-+
-+#define ANSI 0 /* ANSI escape sequences */
-+#define DASHER 0 /* DG Dasher 2xx/4xx crts */
-+#define DG10 0 /* Data General system/10 */
-+#define FMR 0 /* Fujitsu FMR series driver */
-+#define HP110 0 /* HP110 screen driver */
-+#define HP150 0 /* HP150 screen driver */
-+#define I55 0 /* IBM PS55 DOS J4.0/V */
-+#define IBMPC 0 /* IBM-PC CGA/MONO/EGA/VGA drvr */
-+#define MAC 0 /* Macintosh */
-+#define NEC 0 /* NEC-9801VM driver */
-+#define OS2NPM 0 /* OS/2 non-Presentation Mgr. */
-+#define SMG 0 /* SMG library on VMS */
-+#define ST52 0 /* Atari 520/1040ST screen */
-+#define TERMCAP 1 /* Use TERMCAP */
-+#define TIPC 0 /* TI Profesional PC driver */
-+#define VT52 0 /* VT52 terminal (Zenith). */
-+#define NTCON 0 /* Windows NT console */
-+#define XVT 0 /* XVT windowing system */
-+#define Z309 0 /* Zenith 100 PC family driver */
-+
-+/* Windowing system style (pick one) */
-+
-+#define WINDOW_TEXT 1 /* [default] Text mode */
-+#define WINDOW_MSWIN 0 /* MicroSoft Windows */
-+#define WINDOW_MSWIN32 0 /* MicroSoft Windows 32 bit API */
-+#define WINDOW_X 0 /* X/Unix */
-+
-+/* Language text options (pick one) */
-+
-+#define ENGLISH 1 /* [default] */
-+#define FRENCH 0
-+#define SPANISH 0
-+#define GERMAN 0
-+#define DUTCH 0
-+#define PLATIN 0 /* Pig Latin */
-+#define JAPAN 0
-+#define LATIN 0 /* real Latin */
-+
-+/* Configuration options */
-+
-+#define TYPEAH 1 /* type ahead causes update to be skipped */
-+#define LOGFLG 0 /* send all executed commands to EMACS.LOG */
-+#define VISMAC 0 /* update display during keyboard macros */
-+#define CTRLZ 0 /* add a ^Z at end of files under MSDOS only */
-+#define CLEAN 0 /* de-alloc memory on exit */
-+#define CALLED 0 /* is emacs a called subroutine? or stand alone */
-+
-+#define REVSTA 1 /* Status line appears in reverse video */
-+#define COLOR 1 /* color commands and windows */
-+
-+#define FILOCK 0 /* file locking under unix BSD 4.2 */
-+#define ISRCH 1 /* Incremental searches like ITS EMACS */
-+#define FLABEL 0 /* function key label code [HP150] */
-+#define CRYPT 1 /* file encryption enabled? */
-+#define MAGIC 1 /* include regular expression matching? */
-+#define MOUSE 1 /* Include routines for mouse actions */
-+#define NOISY 1 /* Use a fancy BELL if it exists */
-+#define CTAGS 1 /* include vi-like tagging? */
-+#define SPEECH 0 /* spoken EMACS, for the sight impared [not ready] */
-+#define VARARG 0 /* use varargs.h for mlwrite() */
-+
-+#if XVT
-+#undef COLOR
-+#define COLOR 1 /* overide this to be TRUE for XVT always */
-+#endif
-+
-+/* Character set options */
-+/* [Set one of these!!] */
-+#define ASCII 1 /* always using ASCII char sequences for now */
-+#define EBCDIC 0 /* later IBM mainfraim versions will use EBCDIC */
-+
-+/* handle constant and voids properly */
-+
-+#if VMS
-+#define CONST readonly
-+#define VOID void
-+#define NOSHARE noshare
-+#else
-+#if AOSVS
-+#define CONST $shared $align(1) /* fake a const */
-+#define VOID
-+#define NOSHARE $low32k $align(1) /* attempt to optimize read/write vars. */
-+#else
-+
-+#if __STDC__ || MSC || TURBO || GCC || (AMIGA && LATTICE)
-+#define CONST const
-+#define VOID void
-+#define NOSHARE
-+#else
-+#define CONST
-+#if IC
-+#define VOID void
-+#else
-+#define VOID
-+#endif
-+#define NOSHARE
-+#endif
-+
-+#endif
-+#endif
-+
-+/* System dependent library redefinitions, structures and includes */
-+
-+/* multibyte character support? */
-+
-+#if NEC || FMR || I55
-+#define DBCS 1 /* double byte character sets enabled */
-+#define INSDEL 1 /* use insert/delete line display optimizations */
-+
-+/* define DBCS prefix bytes */
-+#define is2char(ch) (((ch&0xff) >= 0x81 && (ch&0xff) <= 0x9f) || ((ch&0xff) >=0xe0 && (ch&0xff) <= 0xfc))
-+
-+#else
-+#define DBCS 0
-+#define INSDEL 0
-+#endif
-+
-+/* Can we catch the SIGWINCH (the window size change signal)? */
-+
-+#if AIX || HPUX9 || FREEBSD
-+#define HANDLE_WINCH 1
-+#else
-+#define HANDLE_WINCH 0
-+#endif
-+
-+/* Prototypes in use? */
-+
-+#if MSC || TURBO || IC || VMS || GCC || ZTC
-+#define PROTO 1
-+#else
-+#define PROTO 0
-+#endif
-+
-+/* the following define allows me to initialize unions...
-+ otherwise we make them structures (like the keybinding table) */
-+
-+#if __STDC__ || MSC || TURBO || IC || ZTC
-+#define ETYPE union
-+#else
-+#define ETYPE struct
-+#endif
-+
-+/* Instant C can't do stat()s. Arrrg. No file locking for you */
-+#if IC && MSDOS
-+#undef FILOCK
-+#define FILOCK 0
-+#endif
-+
-+/* Mark Williams/Atari has no standard or varargs or directory functions */
-+#if TOS & MWC
-+#undef VARARG
-+#define VARARG 0
-+#undef FILOCK
-+#define FILOCK 0
-+#endif
-+
-+/* MS-Windows */
-+
-+#if WINNT || WINDOW_MSWIN || WINDOW_MSWIN32
-+#if WINDOW_MSWIN32
-+#undef WINDOW_MSWIN
-+#define WINDOW_MSWIN 1
-+#endif
-+#if WINDOW_MSWIN && WINNT
-+#undef WINDOW_MSWIN32
-+#define WINDOW_MSWIN32 1
-+#endif
-+#undef VOID /* windows.h will wind up defining this */
-+#include <windows.h> /* --------- Huge include file here !!! ---------*/
-+#if NTCON
-+#include <wincon.h>
-+#include <stdio.h>
-+#include <dos.h>
-+#endif
-+
-+#undef NEAR
-+#define NEAR
-+#define DNEAR
-+#if MSC || IC
-+#undef CDECL
-+#define CDECL __cdecl
-+#define DUMMYSZ 1 /* dummy size for unsized extern arrays to avoid
-+ silly DGROUP fixup */
-+#else
-+#if TURBO
-+#define DUMMYSZ /* nothing */
-+#else
-+#define CDECL _cdecl /* ZTC */
-+#define DUMMYSZ /* nothing */
-+#endif
-+#endif
-+
-+#if WINNT
-+#define EXPORT /* Windows NT doesn't like this */
-+#endif
-+
-+#if WINDOW_MSWIN
-+#undef TYPEAH
-+#define TYPEAH 0 /* typeahead is handled at the term driver level */
-+#undef CALLED
-+#define CALLED 1 /* under MS Windows, "main" resides in the sys driver */
-+#if MSC
-+#define EXPORT __export
-+#else
-+#define EXPORT _export /* Fine for TURBO and ZTC */
-+#endif
-+#endif
-+#else
-+
-+/* neither Windows NT nor MS-Windows */
-+
-+#define DUMMYSZ /* nothing */
-+
-+#if MSDOS & (TURBO | MSC | TIPC)
-+#define NEAR
-+#define DNEAR
-+#define PASCAL pascal
-+#define CDECL cdecl
-+#else
-+#if MSDOS & ZTC
-+#define NEAR
-+#define DNEAR
-+#define PASCAL _pascal
-+#define CDECL _cdecl
-+#else
-+#define NEAR
-+#define DNEAR
-+#define PASCAL
-+#define CDECL
-+#endif
-+#endif
-+
-+#endif
-+
-+#if TURBO
-+#include <dos.h>
-+#include <mem.h>
-+#undef peek
-+#undef poke
-+#define peek(a,b,c,d) movedata(a,b,FP_SEG(c),FP_OFF(c),d)
-+#define poke(a,b,c,d) movedata(FP_SEG(c),FP_OFF(c),a,b,d)
-+#endif
-+
-+#if IC
-+#include <dos.h>
-+#undef peek
-+#undef poke
-+#define peek(a,b,c,d) movedata(a,b,FP_SEG(c),FP_OFF(c),d)
-+#define poke(a,b,c,d) movedata(FP_SEG(c),FP_OFF(c),a,b,d)
-+#endif
-+
-+#if LATTICE & MSDOS
-+/* you may have to remove this one definition with LATTICE version
-+ 3.2 and above */
-+#define unsigned
-+#endif
-+
-+#if IC
-+#define inp inportb
-+#define outp outportb
-+#define intdos(a, b) int86(33, a, b)
-+#endif
-+
-+#if AZTEC
-+#undef putc
-+#undef getc
-+#if MSDOS
-+#define getc a1getc
-+#define int86 sysint
-+#define intdos(a, b) sysint(33, a, b)
-+#define inp inportb
-+#define outp outportb
-+#else
-+#define getc agetc
-+#endif
-+#define putc aputc
-+
-+struct XREG {
-+ unsigned ax,bx,cx,dx,si,di,ds,es;
-+};
-+
-+struct HREG {
-+ char al,ah,bl,bh,cl,ch,dl,dh,d1,d2,e1,e2;
-+};
-+
-+union REGS {
-+ struct XREG x;
-+ struct HREG h;
-+};
-+
-+struct SREGS {
-+ unsigned cs, ss, ds, es;
-+};
-+#endif
-+
-+#if MSDOS & MWC
-+#include <dos.h>
-+#define int86(a, b, c) intcall(b, c, a)
-+#define intdos(a, b) intcall(a, b, DOSINT)
-+#define inp(a) in(a)
-+#define outp(a, b) out(a, b)
-+#define movmem(a, b, c) memcpy(b, a, c)
-+
-+struct XREG {
-+ unsigned int ax,bx,cx,dx,si,di,ds,es,flags;
-+};
-+
-+struct HREG {
-+ char al,ah,bl,bh,cl,ch,dl,dh;
-+ unsigned int ds,es,flags;
-+};
-+
-+union REGS {
-+ struct XREG x;
-+ struct HREG h;
-+};
-+#endif
-+
-+#if MSDOS & MSC
-+#include <dos.h>
-+#include <memory.h>
-+#define peek(a,b,c,d) movedata(a,b,FP_SEG(c),FP_OFF(c),d)
-+#define poke(a,b,c,d) movedata(FP_SEG(c),FP_OFF(c),a,b,d)
-+#define movmem(a, b, c) memcpy(b, a, c)
-+#define _strrev(a) strrev(a)
-+#endif
-+
-+#if MSDOS & LATTICE
-+#undef CPM
-+#undef LATTICE
-+#include <dos.h>
-+#undef CPM
-+#endif
-+
-+/* System V doesn't name this the same as others */
-+#if USG | AIX | AUX | SUN | (OS2 & MSC)
-+#define movmem(a, b, c) memcpy(b, a, c)
-+#endif
-+
-+/* this keeps VMS happy */
-+#if VMS
-+#define getname xgetname
-+#define unlink(a) delete(a)
-+#endif
-+
-+/* some options for AOS/VS */
-+#if AOSVS
-+#define ORMDNI 1
-+#endif
-+
-+/* define some ability flags */
-+
-+#if (IBMPC | Z309 | FMR | TIPC) & !(WINDOW_MSWIN | WINDOW_MSWIN32)
-+#define MEMMAP 1
-+#else
-+#define MEMMAP 0
-+#endif
-+
-+#if MSDOS | WINNT | OS2 | USG | AIX | AUX | SMOS | HPUX8 | HPUX9 | BSD | FREEBSD | (TOS & MWC) | WMCS | SUN | MPE
-+#define ENVFUNC 1
-+#else
-+#define ENVFUNC 0
-+#endif
-+
-+#if AUX
-+#define RETCHAR '\n'
-+#else
-+#define RETCHAR '\r'
-+#endif
-+
-+#if MPE
-+#define DIRSEPSTR "."
-+#define DIRSEPCHAR '.'
-+#else
-+#if TOS || MSDOS || WINNT || OS2
-+#define DIRSEPSTR "\\"
-+#define DIRSEPCHAR '\\'
-+#define DRIVESEPCHAR ':'
-+#else
-+#define DIRSEPSTR "/"
-+#define DIRSEPCHAR '/'
-+#define DRIVESEPCHAR '\0'
-+#endif
-+#endif
-+
-+#if VARARG
-+#if (GCC == 0) && (USG || AIX || AUX || BSD || FREEBSD || SUN || XENIX || HPUX8 || HPUX9 || AVIION || MPE)
-+#define VARG 1
-+#define SARG 0
-+#include <varargs.h>
-+#else
-+#define VARG 0
-+#define SARG 1
-+#include <stdarg.h>
-+#endif
-+#endif
-+
-+#if ZTC
-+#include <dos.h>
-+#define movmem(a, b, c) memcpy(b, a, c)
-+#endif
-+
-+/* Emacs global flag bit definitions (for gflags) */
-+
-+#define GFREAD 1 /* read first file in at startup */
-+#define GFSDRAW 2 /* suppress a screen redraw */
-+#define GFEXIT 4 /* exit from emacs pending */
-+
-+/* internal constants */
-+
-+#define NBINDS 300 /* max # of bound keys */
-+#if AOSVS | VMS | WINNT | SUN | BSD | FREEBSD | USG | ZENIX | HPUX8 | HPUX9 | OS2
-+#define NFILEN 256
-+#else
-+#define NFILEN 80 /* # of bytes, file name */
-+#endif
-+#define NBUFN 128 /* # of bytes, buffer name */
-+#define NLINE 256 /* # of bytes, input line */
-+#define NSTRING 128 /* # of bytes, string buffers */
-+#define NKBDM 4096 /* # of strokes, keyboard macro */
-+#define NPAT 128 /* # of bytes, pattern */
-+#define HUGE 1000 /* Huge number */
-+#define NLOCKS 256 /* max # of file locks active */
-+#define NCOLORS 16 /* number of supported colors */
-+#define KBLOCK 250 /* sizeof kill buffer chunks */
-+#define NRING 16 /* # of buffers in kill ring */
-+#define NBLOCK 16 /* line block chunk size */
-+#define NVSIZE 16 /* max #chars in a var name */
-+#define NMARKS 16 /* number of marks */
-+#define MAXSYM 32 /* max # chars in symbol to expand */
-+#define MINFLEN 3 /* min # chars to match &func */
-+
-+#define CTRL 0x0100 /* Control flag, or'ed in */
-+#define META 0x0200 /* Meta flag, or'ed in */
-+#define CTLX 0x0400 /* ^X flag, or'ed in */
-+#define SPEC 0x0800 /* special key (function keys) */
-+#define MOUS 0x1000 /* alternative input device (mouse) */
-+#define SHFT 0x2000 /* shifted (for function keys) */
-+#define ALTD 0x4000 /* ALT key... */
-+#define MENU MOUS+SPEC /* menu selection (WINDOW_MSWIN) */
-+
-+#define BINDNUL 0 /* not bound to anything */
-+#define BINDFNC 1 /* key bound to a function */
-+#define BINDBUF 2 /* key bound to a buffer */
-+
-+#ifdef FALSE
-+#undef FALSE
-+#endif
-+#ifdef TRUE
-+#undef TRUE
-+#endif
-+
-+#define FALSE 0 /* False, no, bad, etc. */
-+#define TRUE 1 /* True, yes, good, etc. */
-+#define ABORT 2 /* Death, ^G, abort, etc. */
-+#define FAILD 3 /* not-quite fatal false return */
-+
-+#define STOP 0 /* keyboard macro not in use */
-+#define PLAY 1 /* playing */
-+#define RECORD 2 /* recording */
-+
-+/* Completion types */
-+
-+#define CMP_BUFFER 0
-+#define CMP_COMMAND 1
-+#define CMP_FILENAME 2
-+
-+/* Directive definitions */
-+
-+#define DIF 0
-+#define DELSE 1
-+#define DENDIF 2
-+#define DGOTO 3
-+#define DRETURN 4
-+#define DENDM 5
-+#define DWHILE 6
-+#define DENDWHILE 7
-+#define DBREAK 8
-+#define DFORCE 9
-+
-+#define NUMDIRS 10
-+
-+/*
-+ * PTBEG, PTEND, FORWARD, and REVERSE are all toggle-able values for
-+ * routines that need directions.
-+ */
-+#define PTBEG 0 /* Leave the point at the beginning on search */
-+#define PTEND 1 /* Leave the point at the end on search */
-+#define FORWARD 0 /* do things in a forward direction */
-+#define REVERSE 1 /* do things in a backwards direction */
-+
-+#define FIOSUC 0 /* File I/O, success. */
-+#define FIOFNF 1 /* File I/O, file not found. */
-+#define FIOEOF 2 /* File I/O, end of file. */
-+#define FIOERR 3 /* File I/O, error. */
-+#define FIOMEM 4 /* File I/O, out of memory */
-+#define FIOFUN 5 /* File I/O, eod of file/bad line*/
-+#define FIODEL 6 /* Can't delete/rename file */
-+
-+#if WINDOW_MSWIN
-+/* values for the fbusy flag */
-+#define FREADING 1 /* file read in progress */
-+#define FWRITING 2 /* file write in progress */
-+/* if no file activity, the value FALSE is used */
-+#endif
-+
-+#define CFCPCN 0x0001 /* Last command was C-P, C-N */
-+#define CFKILL 0x0002 /* Last command was a kill */
-+#define CFSRCH 0x0004 /* last command was a search */
-+#define CFYANK 0x0008 /* last command was a yank */
-+
-+#define SRNORM 0 /* end past, begin front */
-+#define SRBEGIN 1 /* always at front */
-+#define SREND 2 /* always one past end */
-+
-+#define BELL 0x07 /* a bell character */
-+#define TAB 0x09 /* a tab character */
-+
-+#if USG | AIX | AUX | SMOS | HPUX8 | HPUX9 | BSD | FREEBSD | SUN | XENIX | AVIION
-+#define PATHCHR ':'
-+#else
-+#if WMCS || MPE
-+#define PATHCHR ','
-+#else
-+#define PATHCHR ';'
-+#endif
-+#endif
-+
-+#define INTWIDTH sizeof(int) * 3
-+#define LONGWIDTH sizeof(long) * 3
-+
-+/* Macro argument token types */
-+
-+#define TKNUL 0 /* end-of-string */
-+#define TKARG 1 /* interactive argument */
-+#define TKBUF 2 /* buffer argument */
-+#define TKVAR 3 /* user variables */
-+#define TKENV 4 /* environment variables */
-+#define TKFUN 5 /* function.... */
-+#define TKDIR 6 /* directive */
-+#define TKLBL 7 /* line label */
-+#define TKLIT 8 /* numeric literal */
-+#define TKSTR 9 /* quoted string literal */
-+#define TKCMD 10 /* command name */
-+
-+/* Internal defined functions */
-+
-+#define nextab(a) (a - (a % tabsize)) + tabsize
-+
-+/* DIFCASE represents the integer difference between upper
-+ and lower case letters. It is an xor-able value, which is
-+ fortunate, since the relative positions of upper to lower
-+ case letters is the opposite of ascii in ebcdic.
-+*/
-+
-+#if ASCII
-+#define DIFCASE 0x20
-+#else
-+#define DIFCASE 0x40
-+#endif
-+
-+/* Dynamic RAM tracking and reporting redefinitions */
-+
-+#if RAMSIZE
-+#define malloc allocate
-+#define free release
-+#else
-+#if VMS & OPTMEM
-+#define malloc VAXC$MALLOC_OPT
-+#define free VAXC$FREE_OPT
-+#define calloc VAXC$CALLOC_OPT
-+#define realloc VAXC$REALLOC_OPT
-+#define cfree VAXC$CFREE_OPT
-+#endif
-+#endif
-+
-+/* under MS Windows, we use dialog boxes to prompt the user for filenames */
-+#if WINDOW_MSWIN
-+#define FILENAMEREPLY(p,b,nb) filenamedlg(p,b,nb,TRUE)
-+#else
-+#define FILENAMEREPLY(p,b,nb) mlreply(p,b,nb)
-+#endif
-+
-+/* formal parameters to procedures are stored as a linked list
-+ of argument names using the following simple structure:
-+*/
-+
-+typedef struct PARG {
-+ struct PARG *next; /* ptr to next linked argument */
-+ char name[NVSIZE+1]; /* name of the argument */
-+} PARG;
-+
-+/* UNDO definitions and types */
-+
-+typedef int OPTYPE; /* type of operation being recorded/played back */
-+
-+#define OP_CMND 1 /* beginning of command */
-+#define OP_DELC 2 /* delete a single character */
-+#define OP_INSC 3 /* insert a single character */
-+#define OP_DSTR 4 /* delete a string of characters */
-+#define OP_ISTR 5 /* insert a string of characters */
-+#define OP_REPC 6 /* replace a character */
-+#define OP_CPOS 7 /* set the cursor position */
-+
-+/* object to be undone! */
-+
-+typedef union OBJECT {
-+ char obj_char; /* a character */
-+ char obj_string[1]; /* many characters */
-+ char *obj_sptr; /* a ptr to a character */
-+} OBJECT;
-+
-+typedef struct UNDO_OBJ {
-+ struct UNDO_OBJ *next; /* ptr to next undo object */
-+ OPTYPE type; /* type of operation */
-+ long line_num; /* line offset from buffer beginning */
-+ int offset; /* offset into that line */
-+ long count; /* repetitions? */
-+ OBJECT undo_obj; /* object to be undone */
-+} UNDO_OBJ;
-+
-+/*
-+ * There is a window structure allocated for every active display window. The
-+ * windows are kept in a big list, in top to bottom screen order, with the
-+ * listhead at "wheadp". Each window contains its own values of dot and mark.
-+ * The flag field contains some bits that are set by commands to guide
-+ * redisplay. Although this is a bit of a compromise in terms of decoupling,
-+ * the full blown redisplay is just too expensive to run for every input
-+ * character.
-+ */
-+typedef struct EWINDOW {
-+ struct EWINDOW *w_wndp; /* Next window */
-+ struct BUFFER *w_bufp; /* Buffer displayed in window */
-+ struct LINE *w_linep; /* Top line in the window */
-+ struct LINE *w_dotp; /* Line containing "." */
-+ short w_doto; /* Byte offset for "." */
-+ struct LINE *w_markp[NMARKS]; /* Line containing "mark" */
-+ short w_marko[NMARKS]; /* Byte offset for "mark" */
-+ char w_toprow; /* Origin 0 top row of window */
-+ char w_ntrows; /* # of rows of text in window */
-+ char w_force; /* If NZ, forcing row. */
-+ char w_flag; /* Flags. */
-+#if COLOR
-+ char w_fcolor; /* current forground color */
-+ char w_bcolor; /* current background color */
-+#endif
-+ int w_fcol; /* first column displayed */
-+} EWINDOW;
-+
-+#define WFFORCE 0x01 /* Window needs forced reframe */
-+#define WFMOVE 0x02 /* Movement from line to line */
-+#define WFEDIT 0x04 /* Editing within a line */
-+#define WFHARD 0x08 /* Better to a full display */
-+#define WFMODE 0x10 /* Update mode line. */
-+#define WFCOLR 0x20 /* Needs a color change */
-+
-+/* This structure holds the information about each line appearing on the
-+ * video display. The redisplay module uses an array of virtual display
-+ * lines. On systems that do not have direct access to display memory,
-+ * there is also an array of physical display lines used to minimize
-+ * video updating. In most cases, these two arrays are unique. If
-+ * WINDOW_MSWIN is 1, there is a pair of such arrays in each SCREEN
-+ * structure.
-+ */
-+
-+typedef struct VIDEO {
-+ int v_flag; /* Flags */
-+#if COLOR
-+ int v_fcolor; /* current forground color */
-+ int v_bcolor; /* current background color */
-+ int v_rfcolor; /* requested forground color */
-+ int v_rbcolor; /* requested background color */
-+#endif
-+ int v_left; /* left edge of reverse video */
-+ int v_right; /* right right of reverse video */
-+#if INSDEL && MEMMAP == 0
-+ int v_rline; /* requested screen line # */
-+#endif
-+ char v_text[1]; /* Screen data. */
-+} VIDEO;
-+
-+#define VFNEW 0x0001 /* contents not meaningful yet */
-+#define VFCHG 0x0002 /* Changed flag */
-+#define VFEXT 0x0004 /* extended (beyond column 80) */
-+#define VFCOL 0x0008 /* color change requested */
-+
-+/*
-+ * This structure holds the information about each separate "screen"
-+ * within the current editing session. On a character based system, these
-+ * screens overlay each other, and can individually be brought to front.
-+ * On a windowing system like MicroSoft Windows 3.0, OS/2, the Macintosh,
-+ * Intuition, Sunview or X-windows, each screen is represented in an OS
-+ * window. The terminolgy is wrong in emacs.....
-+ *
-+ * EMACS The outside World
-+ * screen window
-+ * window pane
-+ */
-+
-+typedef struct SCREEN {
-+ struct SCREEN *s_next_screen; /* link to next screen in list */
-+ EWINDOW *s_first_window; /* head of linked list of windows */
-+ EWINDOW *s_cur_window; /* current window in this screen */
-+ char *s_screen_name; /* name of the current window */
-+ short s_roworg; /* row origin of stored screen */
-+ short s_colorg; /* column origin of stored screen */
-+ short s_nrow; /* row width of stored screen */
-+ short s_ncol; /* column origin of stored screen */
-+#if WINDOW_MSWIN
-+ VIDEO **s_virtual; /* virtual screen contents */
-+ VIDEO **s_physical; /* physical screen contents */
-+ HWND s_drvhandle; /* handle for the "term" driver */
-+#endif
-+} SCREEN;
-+
-+/*
-+ * Text is kept in buffers. A buffer header, described below, exists for every
-+ * buffer in the system. The buffers are kept in a big list, so that commands
-+ * that search for a buffer by name can find the buffer header. There is a
-+ * safe store for the dot and mark in the header, but this is only valid if
-+ * the buffer is not being displayed (that is, if "b_nwnd" is 0). The text for
-+ * the buffer is kept in a circularly linked list of lines, with a pointer to
-+ * the header line in "b_linep". Buffers may be "Inactive" which means the
-+ * files associated with them have not been read in yet. These get read in
-+ * at "use buffer" time.
-+ * Some buffers are really procedures and have a little extra information
-+ * stored with them.
-+ */
-+typedef struct BUFFER {
-+ struct BUFFER *b_bufp; /* Link to next BUFFER */
-+ struct LINE *b_dotp; /* Link to "." LINE structure */
-+ short b_doto; /* Offset of "." in above LINE */
-+ struct LINE *b_markp[NMARKS]; /* The same as the above two, */
-+ short b_marko[NMARKS]; /* but for the "mark" */
-+ int b_fcol; /* first col to display */
-+ struct LINE *b_linep; /* Link to the header LINE */
-+ struct LINE *b_topline; /* Link to narrowed top text */
-+ struct LINE *b_botline; /* Link to narrowed bottom text */
-+ char b_active; /* window activated flag */
-+ char b_nwnd; /* Count of windows on buffer */
-+ char b_exec; /* how many active executions */
-+ char b_flag; /* Flags */
-+ int b_mode; /* editor mode of this buffer */
-+ char b_fname[NFILEN]; /* File name */
-+ char b_bname[NBUFN]; /* Buffer name */
-+#if CRYPT
-+ char b_key[NPAT]; /* current encrypted key */
-+#endif
-+ int b_numargs; /* number of arguments to procedure */
-+ PARG *b_args; /* ptr to the first argument */
-+ UNDO_OBJ *undo_head; /* head of undo stack for buffer */
-+ long undo_count; /* # of undo operations stacked */
-+ long last_access; /* time of last access */
-+} BUFFER;
-+
-+#define BFINVS 0x01 /* Internal invisable buffer */
-+#define BFCHG 0x02 /* Changed since last write */
-+#define BFTRUNC 0x04 /* buffer was truncated when read */
-+#define BFNAROW 0x08 /* buffer has been narrowed */
-+
-+#define NOTPROC -1 /* buffer is not a procedure */
-+
-+/* mode flags */
-+#define NUMMODES 11 /* # of defined modes */
-+
-+#define MDWRAP 0x0001 /* word wrap */
-+#define MDCMOD 0x0002 /* C indentation and fence match*/
-+#define MDSPELL 0x0004 /* spell error parsing */
-+#define MDEXACT 0x0008 /* Exact matching for searches */
-+#define MDVIEW 0x0010 /* read-only buffer */
-+#define MDOVER 0x0020 /* overwrite mode */
-+#define MDMAGIC 0x0040 /* regular expresions in search */
-+#define MDCRYPT 0x0080 /* encrytion mode active */
-+#define MDASAVE 0x0100 /* auto-save mode */
-+#define MDREPL 0x0200 /* replace mode */
-+#define MDABBR 0x0400 /* abbreviation expansion mode */
-+
-+/*
-+ * The starting position of a region, and the size of the region in
-+ * characters, is kept in a region structure. Used by the region commands.
-+ */
-+typedef struct {
-+ struct LINE *r_linep; /* Origin LINE address. */
-+ short r_offset; /* Origin LINE offset. */
-+ long r_size; /* Length in characters. */
-+} REGION;
-+
-+/*
-+ * All text is kept in circularly linked lists of "LINE" structures. These
-+ * begin at the header line (which is the blank line beyond the end of the
-+ * buffer). This line is pointed to by the "BUFFER". Each line contains a the
-+ * number of bytes in the line (the "used" size), the size of the text array,
-+ * and the text. The end of line is not stored as a byte; it's implied.
-+ */
-+typedef struct LINE {
-+ struct LINE *l_fp; /* Link to the next line */
-+ struct LINE *l_bp; /* Link to the previous line */
-+ short l_size; /* Allocated size */
-+ short l_used; /* Used size */
-+ char l_text[1]; /* A bunch of characters. */
-+} LINE;
-+
-+#define lforw(lp) ((lp)->l_fp)
-+#define lback(lp) ((lp)->l_bp)
-+#if UNIX && (SUN || HPUX8 || HPUX9 || BSD || FREEBSD)
-+#define lgetc(lp, n) ((unsigned char)(lp)->l_text[(n)])
-+#else
-+#define lgetc(lp, n) ((lp)->l_text[(n)])
-+#endif
-+#define lputc(lp, n, c) ((lp)->l_text[(n)]=(c))
-+#define lused(lp) ((lp)->l_used)
-+#define lsize(lp) ((lp)->l_size)
-+#define ltext(lp) ((lp)->l_text)
-+
-+/* This structure is used to hold a user variables name and its
-+ current value. These are used for both the global and the
-+ local symbol tables.
-+*/
-+
-+typedef struct UVAR {
-+ char u_name[NVSIZE + 1]; /* name of user variable */
-+ char *u_value; /* value (string) */
-+} UVAR;
-+
-+#define VT_NONE 0 /* don't declare it if not found */
-+#define VT_LOCAL 1 /* local to the current procedure */
-+#define VT_GLOBAL 2 /* global to all procedures */
-+
-+/* A UTABLE is a user variable table.... containing some header
-+ information and an array of user variable names and definitions.
-+ They are held together in a linked list, the last member of
-+ the list being the global user variable table.
-+*/
-+
-+typedef struct UTABLE {
-+ struct UTABLE *next; /* ptr to next user variable table */
-+ int size; /* max number of variables in table */
-+ BUFFER *bufp; /* ptr to buffer holding procedure
-+ assosiated with this symbol table. */
-+ UVAR uv[1]; /* list of variable names/definitions
-+ in this variable table */
-+} UTABLE;
-+
-+/*
-+ * The editor communicates with the display using a high level interface. A
-+ * "TERM" structure holds useful variables, and indirect pointers to routines
-+ * that do useful operations. The low level get and put routines are here too.
-+ * This lets a terminal, in addition to having non standard commands, have
-+ * funny get and put character code too. The calls might get changed to
-+ * "termp->t_field" style in the future, to make it possible to run more than
-+ * one terminal type.
-+ */
-+#if PROTO
-+typedef struct {
-+ short t_mrow; /* max number of rows allowable */
-+ short t_nrow; /* current number of rows used */
-+ short t_mcol; /* max Number of columns. */
-+ short t_ncol; /* current Number of columns. */
-+ short t_roworg; /* origin row (normally zero) */
-+ short t_colorg; /* origin column (normally zero)*/
-+ short t_margin; /* min margin for extended lines*/
-+ short t_scrsiz; /* size of scroll region " */
-+ int t_pause; /* # times thru update to pause */
-+ int (PASCAL NEAR *t_open)(void); /* Open terminal at the start.*/
-+ int (PASCAL NEAR *t_close)(void); /* Close terminal at end. */
-+ int (PASCAL NEAR *t_kopen)(void); /* Open keyboard */
-+ int (PASCAL NEAR *t_kclose)(void); /* Close keyboard */
-+ int (PASCAL NEAR *t_getchar)(void); /* Get character from keyboard. */
-+ int (PASCAL NEAR *t_putchar)(int); /* Put character to display.*/
-+ int (PASCAL NEAR *t_flush)(void); /* Flush output buffers. */
-+ int (PASCAL NEAR *t_move)(int, int);/* Move the cursor, origin 0.*/
-+ int (PASCAL NEAR *t_eeol)(void); /* Erase to end of line. */
-+ int (PASCAL NEAR *t_eeop)(void); /* Erase to end of page. */
-+ int (PASCAL NEAR *t_clrdesk)(void); /* Clear the page totally */
-+ int (PASCAL NEAR *t_beep)(void); /* Beep. */
-+ int (PASCAL NEAR *t_rev)(int); /* set reverse video state */
-+ int (PASCAL NEAR *t_rez)(char *); /* change screen resolution */
-+#if COLOR
-+ int (PASCAL NEAR *t_setfor)(int); /* set forground color */
-+ int (PASCAL NEAR *t_setback)(int); /* set background color */
-+#endif
-+#if INSDEL
-+ int (PASCAL NEAR *t_insline)(int); /* insert a screen line */
-+ int (PASCAL NEAR *t_delline)(int); /* delete a screen line */
-+#endif
-+#if WINDOW_MSWIN
-+ int (PASCAL NEAR *t_sleep)(int); /* go to sleep for a while */
-+ int (PASCAL NEAR *t_newscr)(SCREEN *); /* create new screen display */
-+ int (PASCAL NEAR *t_delscr)(SCREEN *); /* destroy screen display */
-+ int (PASCAL NEAR *t_selscr)(SCREEN *); /* select screen display */
-+ int (PASCAL NEAR *t_sizscr)(SCREEN *); /* resize screen display */
-+ int (PASCAL NEAR *t_topscr)(SCREEN *); /* bring screen to top */
-+#endif
-+} TERM;
-+#else /* TERM structure, no prototyping.*/
-+
-+typedef struct {
-+ short t_mrow; /* max number of rows allowable */
-+ short t_nrow; /* current number of rows used */
-+ short t_mcol; /* max Number of columns. */
-+ short t_ncol; /* current Number of columns. */
-+ short t_roworg; /* origin row (normally zero) */
-+ short t_colorg; /* origin column (normally zero)*/
-+ short t_margin; /* min margin for extended lines*/
-+ short t_scrsiz; /* size of scroll region " */
-+ int t_pause; /* # times thru update to pause */
-+ int (PASCAL NEAR *t_open)(); /* Open terminal at the start. */
-+ int (PASCAL NEAR *t_close)(); /* Close terminal at end. */
-+ int (PASCAL NEAR *t_kopen)(); /* Open keyboard */
-+ int (PASCAL NEAR *t_kclose)(); /* close keyboard */
-+ int (PASCAL NEAR *t_getchar)(); /* Get character from keyboard. */
-+ int (PASCAL NEAR *t_putchar)(); /* Put character to display. */
-+ int (PASCAL NEAR *t_flush)(); /* Flush output buffers. */
-+ int (PASCAL NEAR *t_move)(); /* Move the cursor, origin 0. */
-+ int (PASCAL NEAR *t_eeol)(); /* Erase to end of line. */
-+ int (PASCAL NEAR *t_eeop)(); /* Erase to end of page. */
-+ int (PASCAL NEAR *t_clrdesk)(); /* Clear the page totally */
-+ int (PASCAL NEAR *t_beep)(); /* Beep. */
-+ int (PASCAL NEAR *t_rev)(); /* set reverse video state */
-+ int (PASCAL NEAR *t_rez)(); /* change screen resolution */
-+#if COLOR
-+ int (PASCAL NEAR *t_setfor)(); /* set forground color */
-+ int (PASCAL NEAR *t_setback)(); /* set background color */
-+#endif
-+#if INSDEL
-+ int (PASCAL NEAR *t_insline)(); /* insert a screen line */
-+ int (PASCAL NEAR *t_delline)(); /* delete a screen line */
-+#endif
-+#if WINDOW_MSWIN
-+ int (PASCAL NEAR *t_sleep)(); /* go to sleep for a while */
-+ int (PASCAL NEAR *t_newscr)(); /* create new screen display */
-+ int (PASCAL NEAR *t_delscr)(); /* destroy screen display */
-+ int (PASCAL NEAR *t_selscr)(); /* select screen display */
-+ int (PASCAL NEAR *t_sizscr)(); /* resize screen display */
-+ int (PASCAL NEAR *t_topscr)(); /* bring screen to top */
-+#endif
-+} TERM;
-+#endif
-+
-+
-+/* TEMPORARY macros for terminal I/O (to be placed in a machine
-+ dependent place later) */
-+
-+#define TTopen (*term.t_open)
-+#define TTclose (*term.t_close)
-+#define TTkopen (*term.t_kopen)
-+#define TTkclose (*term.t_kclose)
-+#define TTgetc (*term.t_getchar)
-+#define TTputc (*term.t_putchar)
-+#define TTflush (*term.t_flush)
-+#define TTmove (*term.t_move)
-+#define TTeeol (*term.t_eeol)
-+#define TTeeop (*term.t_eeop)
-+#define TTclrdesk (*term.t_clrdesk)
-+#define TTbeep (*term.t_beep)
-+#define TTrev (*term.t_rev)
-+#define TTrez (*term.t_rez)
-+#if COLOR
-+#define TTforg (*term.t_setfor)
-+#define TTbacg (*term.t_setback)
-+#endif
-+
-+/* Structure for the table of current key bindings */
-+
-+ETYPE EPOINTER {
-+ int (PASCAL NEAR *fp)(); /* C routine to invoke */
-+ BUFFER *buf; /* buffer to execute */
-+};
-+
-+typedef struct {
-+ short k_code; /* Key code */
-+ short k_type; /* binding type (C function or EMACS buffer) */
-+ ETYPE EPOINTER k_ptr; /* ptr to thing to execute */
-+} KEYTAB;
-+
-+/* structure for the name binding table */
-+
-+typedef struct {
-+ char *n_name; /* name of function key */
-+ int (PASCAL NEAR *n_func)(); /* function name is bound to */
-+} NBIND;
-+
-+/* The editor holds deleted text chunks in the KILL buffer. The
-+ kill buffer is logically a stream of ascii characters, however
-+ due to its unpredicatable size, it gets implemented as a linked
-+ list of chunks. (The d_ prefix is for "deleted" text, as k_
-+ was taken up by the keycode structure)
-+*/
-+
-+typedef struct KILL {
-+ struct KILL *d_next; /* link to next chunk, NULL if last */
-+ char d_chunk[KBLOCK]; /* deleted text */
-+} KILL;
-+
-+/* When emacs's command interpetor needs to get a variable's name,
-+ rather than it's value, it is passed back as a VDESC variable
-+ description structure. The v_num field is a index into the
-+ appropriate variable table.
-+*/
-+
-+typedef struct VDESC {
-+ int v_type; /* type of variable */
-+ int v_num; /* ordinal pointer to variable in list */
-+ UTABLE *v_ut; /* ptr to appropriate user table if user var */
-+} VDESC;
-+
-+/* The !WHILE directive in the execution language needs to
-+ stack references to pending whiles. These are stored linked
-+ to each currently open procedure via a linked list of
-+ the following structure
-+*/
-+
-+typedef struct WHBLOCK {
-+ LINE *w_begin; /* ptr to !while statement */
-+ LINE *w_end; /* ptr to the !endwhile statement*/
-+ int w_type; /* block type */
-+ struct WHBLOCK *w_next; /* next while */
-+} WHBLOCK;
-+
-+#define BTWHILE 1
-+#define BTBREAK 2
-+
-+/* Abbreviations are short symbols that expand to longer strings
-+ when typed into a buffer with no intervening whitespace or commands.
-+ This structure grows dynamically as needed.
-+*/
-+
-+typedef struct ABBREV {
-+ struct ABBREV *ab_next; /* pointer to the next abbreviation */
-+ char ab_sym[MAXSYM + 1]; /* name to expand */
-+ char ab_exp[1]; /* string to expand to */
-+} ABBREV;
-+
-+/* Search definitions... */
-+
-+/* HICHAR - 1 is the largest character we will deal with.
-+ * BMAPSIZE represents the number of bytes in the bitmap.
-+ */
-+#define HICHAR 256
-+#define BMAPSIZE HICHAR >> 3
-+
-+/*
-+ * Jump table structures.
-+ */
-+typedef struct {
-+ int jump;
-+ int patlen;
-+ int delta[HICHAR];
-+ char patrn[NPAT];
-+} DELTA;
-+
-+#if MAGIC
-+/*
-+ * Defines for the metacharacters in the regular expression
-+ * search routines. MCNIL and GROUP are used in both search
-+ * and replace metachar-arrays.
-+ */
-+#define MCNIL 0 /* Like the '\0' for strings.*/
-+#define JMPTABLE 1
-+#define LITSTRING 2 /* Literal string.*/
-+#define LITCHAR 3 /* Literal character.*/
-+#define ANY 4 /* Any character but the <NL>.*/
-+#define CCL 5
-+#define NCCL 6
-+#define BOL 7
-+#define EOL 8
-+#define BOWRD 9
-+#define EOWRD 10
-+#define GRPBEG 11 /* Signal start of group.*/
-+#define GRPEND 12 /* Signal end of group.*/
-+#define GROUP 13 /* String of group match.*/
-+#define DITTO 14 /* Replacement with match string.*/
-+
-+#define CLOSURE 0x0100 /* An or-able value for a closure modifier.*/
-+#define CLOSURE_1 0x0200 /* An or-able value for a closure modifier.*/
-+#define ZEROONE 0x0400 /* An or-able value for a closure modifier.*/
-+
-+#define ALLCLOS (CLOSURE | CLOSURE_1 | ZEROONE)
-+#define MASKCLO (~ALLCLOS)
-+
-+#define MC_ANY '.' /* 'Any' character (except newline).*/
-+#define MC_CCL '[' /* Character class.*/
-+#define MC_NCCL '^' /* Negate character class.*/
-+#define MC_RCCL '-' /* Range in character class.*/
-+#define MC_ECCL ']' /* End of character class.*/
-+#define MC_BOL '^' /* Beginning of line.*/
-+#define MC_EOL '$' /* End of line.*/
-+#define MC_CLOSURE '*' /* Closure - zero to many characters match.*/
-+#define MC_CLOSURE_1 '+' /* Closure - one to many characters match.*/
-+#define MC_ZEROONE '?' /* Closure - zero to one characters match.*/
-+#define MC_DITTO '&' /* Use matched string in replacement.*/
-+#define MC_GRPBEG '(' /* Start of group (begun with a backslash).*/
-+#define MC_GRPEND ')' /* End of group (begun with a backslash).*/
-+#define MC_BOWRD '<' /* Beginning of word (begun with a backslash).*/
-+#define MC_EOWRD '>' /* End of word (begun with a backslash).*/
-+#define MC_ESC '\\' /* Escape - suppress meta-meaning.*/
-+
-+#define MAXGROUPS 10 /* 1 + maximum # of r. e. groups. */
-+#define BIT(n) (1 << (n)) /* An integer with one bit set.*/
-+
-+/* Typedefs that define the bitmap type for searching (EBITMAP),
-+ * the meta-character structure for MAGIC mode searching (MC),
-+ * and the meta-character structure for MAGIC mode replacment (RMC).
-+ */
-+typedef char *EBITMAP;
-+
-+typedef struct {
-+ short int mc_type;
-+ union {
-+ int lchar;
-+ int group_no;
-+ char *lstring;
-+ DELTA *jmptable;
-+ EBITMAP cclmap;
-+ } u;
-+} MC;
-+
-+typedef struct {
-+ short int mc_type;
-+ union {
-+ int group_no;
-+ char *rstr;
-+ } u;
-+} RMC;
-+#endif
-+
-+/*
-+ This is the message which should be added to any "About MicroEMACS"
-+ boxes on any of the machines with window managers.
-+
-+
-+ ------------------------------------------
-+ | |
-+ | MicroEMACS v4.xx |
-+ | for the ............ |
-+ | |
-+ | Text Editor and Corrector |
-+ | |
-+ | written by Daniel M. Lawrence |
-+ | [based on code by Dave Conroy] |
-+ | |
-+ | Send inquiries and donations to: |
-+ | 617 New York St |
-+ | Lafayette, IN 47901 |
-+ | |
-+ ------------------------------------------
-+*/