mirror of
https://github.com/rfivet/uemacs.git
synced 2024-12-23 09:36:31 -05:00
f313bcf64a
NOTE! MicroEmacs is very much a byte-based editor, and the new utf-8 support is purely an issue of terminal input and output. The file contents themselves are in the 8-bit space. In that space, Unicode is the same as Latin1. The new mode is called "utf-8", and is enabled automatically by the new emacs.rc when $LANG contains the substring "UTF-8". I'm sure people would like to some day also edit real UTF-8 contents, rather than just edit old 8-bit Latin1 contents in a UTF-8 terminal. However, that's an independent (and much bigger and thornier) issue. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
157 lines
6.0 KiB
C
157 lines
6.0 KiB
C
#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", "UTF-8"
|
|
};
|
|
char *mode2name[] = { /* name of modes */
|
|
"Wrap", "Cmode", "Spell", "Exact", "View", "Over",
|
|
"Magic", "Crypt", "Asave", "utf-8"
|
|
};
|
|
char modecode[] = "WCSEVOMYAU"; /* 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 */
|
|
|
|
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
|
|
|
|
|