#include "estruct.h" #include "edef.h" /* initialized global definitions */ int fillcol = 72; /* Current fill column */ short kbdm[NKBDM]; /* Macro */ char *execstr = NULL; /* pointer to string to execute */ char golabel[NPAT] = ""; /* current line to go to */ int execlevel = 0; /* execution IF level */ int eolexist = TRUE; /* does clear to EOL exist */ int revexist = FALSE; /* does reverse video exist? */ int flickcode = FALSE; /* do flicker supression? */ char *modename[] = { /* name of modes */ "WRAP", "CMODE", "SPELL", "EXACT", "VIEW", "OVER", "MAGIC", "CRYPT", "ASAVE" }; char *mode2name[] = { /* name of modes */ "Wrap", "Cmode", "Spell", "Exact", "View", "Over", "Magic", "Crypt", "Asave" }; char modecode[] = "WCSEVOMYA"; /* letters to represent modes */ int gmode = 0; /* global editor mode */ int gflags = GFREAD; /* global control flag */ #if PKCODE & IBMPC int gfcolor = 8; /* global forgrnd color (white) */ #else int gfcolor = 7; /* global forgrnd color (white) */ #endif int gbcolor = 0; /* global backgrnd color (black) */ int gasave = 256; /* global ASAVE size */ int gacount = 256; /* count until next ASAVE */ int sgarbf = TRUE; /* TRUE if screen is garbage */ int mpresf = FALSE; /* TRUE if message in last line */ int clexec = FALSE; /* command line execution flag */ int mstore = FALSE; /* storing text to macro flag */ int discmd = TRUE; /* display command flag */ int disinp = TRUE; /* display input characters */ struct BUFFER *bstore = NULL; /* buffer to store macro text to */ int vtrow = 0; /* Row location of SW cursor */ int vtcol = 0; /* Column location of SW cursor */ int ttrow = HUGE; /* Row location of HW cursor */ int ttcol = HUGE; /* Column location of HW cursor */ int lbound = 0; /* leftmost column of current line being displayed */ int taboff = 0; /* tab offset for display */ int metac = CONTROL | '['; /* current meta character */ int ctlxc = CONTROL | 'X'; /* current control X prefix char */ int reptc = CONTROL | 'U'; /* current universal repeat char */ int abortc = CONTROL | 'G'; /* current abort command char */ int quotec = 0x11; /* quote char during mlreply() */ int tabmask = 0x07; /* tabulator mask */ char *cname[] = { /* names of colors */ "BLACK", "RED", "GREEN", "YELLOW", "BLUE", "MAGENTA", "CYAN", "WHITE" #if PKCODE & IBMPC , "HIGH" #endif }; KILL *kbufp = NULL; /* current kill buffer chunk pointer */ KILL *kbufh = NULL; /* kill buffer header pointer */ int kused = KBLOCK; /* # of bytes used in kill buffer */ window_t *swindow = NULL; /* saved window pointer */ int cryptflag = FALSE; /* currently encrypting? */ short *kbdptr; /* current position in keyboard buf */ short *kbdend = &kbdm[0]; /* ptr to end of the keyboard */ int kbdmode = STOP; /* current keyboard macro mode */ int kbdrep = 0; /* number of repetitions */ int restflag = FALSE; /* restricted use? */ int lastkey = 0; /* last keystoke */ int seed = 0; /* random number seed */ long envram = 0l; /* # of bytes current in use by malloc */ int macbug = FALSE; /* macro debuging flag */ char errorm[] = "ERROR"; /* error literal */ char truem[] = "TRUE"; /* true literal */ char falsem[] = "FALSE"; /* false litereal */ int cmdstatus = TRUE; /* last command status */ char palstr[49] = ""; /* palette string */ int saveflag = 0; /* Flags, saved with the $target var */ char *fline = NULL; /* dynamic return line */ int flen = 0; /* current length of fline */ int rval = 0; /* return value of a subprocess */ #if CALLED int eexitflag = FALSE; /* EMACS exit flag */ int eexitval = 0; /* and the exit return value */ #endif #if PKCODE int nullflag = FALSE; /* accept null characters */ int justflag = FALSE; /* justify, don't fill */ #endif int overlap = 0; /* line overlap in forw/back page */ int scrollcount = 1; /* number of lines to scroll */ /* uninitialized global definitions */ int currow; /* Cursor row */ int curcol; /* Cursor column */ int thisflag; /* Flags, this command */ int lastflag; /* Flags, last command */ int curgoal; /* Goal for C-P, C-N */ window_t *curwp; /* Current window */ BUFFER *curbp; /* Current buffer */ window_t *wheadp; /* Head of list of windows */ BUFFER *bheadp; /* Head of list of buffers */ BUFFER *blistp; /* Buffer for C-X C-B */ BUFFER *bfind(char *bname, int cflag, int bflag); /* Lookup a buffer by name */ window_t *wpopup(); /* Pop up window creation */ LINE *lalloc(); /* Allocate a line */ char sres[NBUFN]; /* current screen resolution */ char pat[NPAT]; /* Search pattern */ char tap[NPAT]; /* Reversed pattern array. */ char rpat[NPAT]; /* replacement pattern */ /* The variable matchlen holds the length of the matched * string - used by the replace functions. * The variable patmatch holds the string that satisfies * the search command. * The variables matchline and matchoff hold the line and * offset position of the *start* of match. */ unsigned int matchlen = 0; unsigned int mlenold = 0; char *patmatch = NULL; LINE *matchline = NULL; int matchoff = 0; #if MAGIC /* * The variables magical and rmagical determine if there * were actual metacharacters in the search and replace strings - * if not, then we don't have to use the slower MAGIC mode * search functions. */ short int magical = FALSE; short int rmagical = FALSE; MC mcpat[NPAT]; /* the magic pattern */ MC tapcm[NPAT]; /* the reversed magic pattern */ RMC rmcpat[NPAT]; /* the replacement magic array */ #endif /* directive name table: This holds the names of all the directives.... */ char *dname[] = { "if", "else", "endif", "goto", "return", "endm", "while", "endwhile", "break", "force" }; #if DEBUGM /* vars needed for macro debugging output */ char outline[NSTRING]; /* global string to hold debug line text */ #endif