Vile 04/17 - vi feel-alike (multi-window)

Paul Fox pgf at cayman.COM
Sat Jun 8 08:09:22 AEST 1991


#!/bin/sh
# this is vileshar.04 (part 4 of Vile)
# do not concatenate these parts, unpack them in order with /bin/sh
# file dolock.c continued
#
if test ! -r _shar_seq_.tmp; then
	echo 'Please unpack part 1 first!'
	exit 1
fi
(read Scheck
 if test "$Scheck" != 4; then
	echo Please unpack part "$Scheck" next!
	exit 1
 else
	exit 0
 fi
) < _shar_seq_.tmp || exit 1
echo 'x - continuing file dolock.c'
sed 's/^X//' << 'SHAR_EOF' >> 'dolock.c' &&
X
X	if (rname != NULL)
X		return(rname);
X	else
X		return(filespec);
}
X
char *getpath(filespec)
char *filespec;
{
X	char rbuff[LFILEN];
X	char *rname, *rindex();
X
X	strcpy(rbuff,filespec);
X	rname = rindex(rbuff,'/');
X
X	if (rname == NULL)
X		return(NULL);
X	else
X	{
X		*(++rname) = '\0';
X		return(rbuff);
X	}
X
}
X
char *dolock(fname)
X	char *fname;
{
X	static char lockname[LFILEN] = LOCKDIR;
X	static char username[12];
X	static char lmsg[40] = LOCKMSG;
X	char *pathfmt;
X	struct stat statblk;
X	struct passwd *pblk;
X	long pid, getpid();
X	FILE *lf, *fopen();
X	int oldumask;
X
X	oldumask = umask(0);	/* maximum access allowed to lock files */
X
X
X	  if (*fname != '/')
X	   pathfmt = "./%s%s";
X	  else
X	   pathfmt = "%s/%s";
X	  sprintf(lockname,pathfmt,getpath(fname), LOCKDIR);
X
X	  if (tellall) printf("checking for existence of %s\n",lockname);
X
X	  if (stat(lockname,&statblk))
X	  {
X		 if (tellall) printf("making directory %s\n",lockname);
X		 mkdir(lockname,0777); 
X	  }
X
X	  sprintf(lockname,"%s/%s",lockname,gtname(fname));
X
X	  if (tellall) printf("checking for existence of %s\n",lockname);
X
X	  if (stat(lockname,&statblk))
X	  {
makelock:  	if (tellall) printf("creating %s\n",lockname);
X
X		if ((lf = fopen(lockname,FOP_TW)) == NULL)
X		  LOCKERR("could not create lock file")
X	        else
X	  	{
X			if (parent)
X			 pid = getppid();	/* parent pid */
X			else
X			 pid = getpid();	/* current pid */
X
X			 if (tellall)
X			  printf("pid is %ld\n",pid); 
X
X			 fprintf(lf,"%ld",pid); /* write pid to lock file */
X
X			fclose(lf);
X			oldumask = umask(oldumask);
X			return(NULL);
X		}
X	  }
X	  else
X	  {
X		if (tellall) printf("reading lock file %s\n",lockname);
X		if ((lf = fopen(lockname,FOP_TR)) == NULL)
X		  LOCKERR("could not read lock file")
X	        else
X	  	{
X			fscanf(lf,"%ld",&pid); /* contains current pid */
X			fclose(lf);
X			if (tellall)
X			 printf("pid in %s is %ld\n",lockname, pid);
X			if (tellall)
X			 printf("signaling process %ld\n", pid);
X			if (kill(pid,0))
X				switch (errno)
X				{
X				  case ESRCH:	/* process not found */
X						goto makelock;
X						break;
X				  case EPERM:	/* process exists, not yours */
X			 			if (tellall) 
X						 puts("process exists");
X						break;
X				  default:
X					LOCKERR("kill was bad")
X					break;
X				}
X			else
X			 if (tellall) puts("kill was good; process exists");
X		}
X		if ((pblk = getpwuid(statblk.st_uid)) == NULL)
X		  sprintf(username,"uid %d",atoi(statblk.st_uid));
X		else
X		  strcpy(username,pblk->pw_name);
X
X		oldumask = umask(oldumask);
X		return(username);
X	  }
}
X
/**********************
X *
X * undolock -- unlock the file fname
X *
X * if successful, returns NULL 
X * if other error, returns "LOCK ERROR: explanation"
X *
X * Jon Reid, 2/19/86
X *
X *********************/
X
char *undolock(fname)
X	char *fname;
{
X	static char lockname[LFILEN] = LOCKDIR;
X	static char lmsg[40] = LOCKMSG;
X	char *pathfmt;
X
X	  if (*fname != '/')
X	   pathfmt = "./%s%s";
X	  else
X	   pathfmt = "%s/%s";
X	  sprintf(lockname,pathfmt,getpath(fname), LOCKDIR);
X
X	  sprintf(lockname,"%s/%s",lockname,gtname(fname));
X
X	  if (tellall) printf("attempting to unlink %s\n",lockname);
X
X	  if (unlink(lockname))
X	  { 
X		strcat(lmsg,"could not remove lock file"); 
X		return(lmsg); 
X	  }
X	  else
X	  	  return(NULL);
}
X
#endif
X
/******************
X * end dolock module
X *******************/
X
#else
dolhello()
{
}
#endif
X
SHAR_EOF
echo 'File dolock.c is complete' &&
chmod 0444 dolock.c ||
echo 'restore of dolock.c failed'
Wc_c="`wc -c < 'dolock.c'`"
test 4340 -eq "$Wc_c" ||
	echo 'dolock.c: original size 4340, current size' "$Wc_c"
# ============= ebind.h ==============
echo 'x - extracting ebind.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'ebind.h' &&
THIS FILE IS NO LONGER USED -- IT IS INCLUDED FOR HISTORICAL PURPOSES
SEE THE mktbls PROGRAM, AND THE FILE cmdtbl
/*	EBIND:		Initial default key to function bindings for
X			MicroEMACS 3.7
*/
X
/*
X * Command table.
X * This table  is *roughly* in ASCII order, left to right across the
X * characters of the command. This explains the funny location of the
X * control-X commands.
X */
KEYTAB  keytab[NBINDS] = {
X
X	{' ',		forwchar},
X	{'"',		usekreg},
X	{'$',		gotoeol},
#if	CFENCE
X	{'%',			getfence},
#endif
X	{'*',		togglelistbuffers},
X	{'+',		forwbline},
X	{',',		rev_csrch},
X	{'-',		backbline},
X	{'.',		dotcmdplay},
X	{'/',		forwsearch},
X	{'0',		gotobol},
X	{':',		namedcmd},
X	{';',		rep_csrch},
X	{'<',		operlshift},
X	{'>',		operrshift},
X	{'?',		backsearch},
X	{'A',		appendeol},
X	{'B',		backword},
X	{'C',		chgtoeol},
X	{'D',		deltoeol},
X	{'E',		forwendw},
X	{'F',		bcsrch},
X	{'G',		gotoline},
X	{'H',		gotobos},
X	{'I',		insertbol},
X	{'J',		join},
X	{'K',		unarg},
X	{'L',		gotoeos},
X	{'M',		gotomos},
X	{'N',		revsearch},
X	{'O',		openup},
X	{'P',		putbefore},
X	{'Q',		quit},
X	{'R',		overwrite},
X	{'S',		chgline},
X	{'T',		bcsrch_to},
X	{'U',		lineundo},
X	{'V',		enlargewind},
X	{'W',		forwword},
X	{'X',		backdelchar},
X	{'Y',		yankline},
X	{'Z',		quickexit},
X	{'[',		gotobosec},
X	{'\'',		golinenmmark},
X	{']',		gotoeosec},
X	{'^',		firstnonwhite},
X	{'_',		histbuff},
X	{'`',		goexactnmmark},
X	{'a',		append},
X	{'b',		backviword},
X	{'c',		operchg},
X	{'d',		operdel},
X	{'e',		forwviendw},
X	{'f',		fcsrch},
X	{'g',		operqreplace},
X	{'h',		backchar},
X	{'i',		insert},
X	{'j',		forwline},
X	{'k',		backline},
X	{'l',		forwchar},
X	{'m',		setnmmark},
X	{'n',		consearch},
X	{'o',		opendown},
X	{'p',		putafter},
X	{'q',		opersreplace},
X	{'r',		replacechar},
X	{'s',		chgchar},
X	{'t',		fcsrch_to},
X	{'u',		undo},
X	{'v',		shrinkwind},
X	{'w',		forwviword},
X	{'x',		forwdelchar},
X	{'y',		operyank},
X	{'z',		poswind},
X	{LBRACE,	gotobop},
X	{'|',		gotocol},
X	{RBRACE,	gotoeop},
X	{'~',		operflip},
X	{tocntrl('['),		esc},
#if TAGS
X	{tocntrl(']'),		gototag},
#endif
X	{tocntrl('^'),		altbuff},
X	{tocntrl('A'),		meta},
X	{tocntrl('B'),		backpage},
X	/* ctrl C */
X	{tocntrl('D'),		forwhpage},
X	{tocntrl('E'),		mvdnwind},
X	{tocntrl('F'),		forwpage},
X	{tocntrl('G'),		showcpos},
X	{tocntrl('H'),		backchar},
X	/* ctrl I */
X	{tocntrl('J'),		forwline},
X	{tocntrl('K'),		delwind},
X	{tocntrl('L'),		refresh},
X	{tocntrl('M'),		forwbline},
X	{tocntrl('N'),		nextwind},
X	{tocntrl('O'),		onlywind},
X	{tocntrl('P'),		prevwind},
X	{tocntrl('Q'),		nullproc},
X	{tocntrl('R'),		insfile},
X	{tocntrl('S'),		nullproc},
X	{tocntrl('T'),		splitwind},
X	{tocntrl('U'),		backhpage},
X	{tocntrl('V'),		quote},
X	{tocntrl('W'),		operwrite},
X	{tocntrl('X'),		cex},
X	{tocntrl('Y'),		mvupwind},
#if BSD
X	{tocntrl('Z'),		bktoshell},
#endif
X
X	{META|tocntrl('D'),		scrnextdw},
X	{META|tocntrl('E'),		mvdnnxtwind},
X	{META|tocntrl('U'),		scrnextup},
X	{META|tocntrl('Y'),		mvupnxtwind},
X	{META|'H',		help},
X	{META|'*',		listbuffers},
X	{CTLX|'g',		operlineqreplace},
X	{CTLX|'q',		operlinesreplace},
X
#if	AEDIT
X	{META|' ',		detab},
X	{META|tocntrl('I'),		entab},
X	{META|'T',		trim},
X	{META|'O',		deblank},
#endif
#if	WORDPRO
X	{META|'F',		fillpara},
X	{META|'J',		fillpara},
#endif
X	{META|'U',		operupper},
X	{META|'L',		operlower},
#if	CRYPT
X	{CTLX|'X',		setkey},
#endif
#if	ISRCH
X	{CTLX|'?',		risearch},
X	{CTLX|'/',		fisearch},
#endif
X	{CTLX|'(',		ctlxlp},
X	{CTLX|')',		ctlxrp},
X	{CTLX|'0',		delwind},
X	{CTLX|'1',		onlywind},
X	{CTLX|'2',		splitwind},
X	{CTLX|'=',		showcpos},
X	{CTLX|'c',		operlinechg},
X	{CTLX|'d',		operlinedel},
X	{CTLX|'e',		ctlxe},
X	{CTLX|'f',		setfillcol},
X	{CTLX|'h',		help},
X	{CTLX|'P',		lineputbefore},
X	{CTLX|'p',		lineputafter},
X	{CTLX|'t',		settab},
X	{CTLX|'y',		operlineyank},
X	{CTLX|tocntrl('C'),		quit},
X	{CTLX|tocntrl('X'),		finderr},
X	{CTLX|'!',		pipecmd},
#if TERMCAP
X	{SPEC|'0',		cbuf1},
X	{SPEC|'1',		cbuf2},
X	{SPEC|'2',		cbuf3},
X	{SPEC|'3',		cbuf4},
X	{SPEC|'4',		cbuf5},
X	{SPEC|'5',		cbuf6},
X	{SPEC|'6',		cbuf7},
X	{SPEC|'7',		cbuf8},
X	{SPEC|'8',		cbuf9},
X	{SPEC|'9',		cbuf10},
#endif
X
#ifdef BEFORE
X	{CTLX|'!',		spawn},
X	{CTLX|'#',		filter},
X	{CTLX|'@',		pipecmd},
#if ! SMALLER
X	{CTLX|'a',		setvar},
#endif
X	{CTLX|'b',		usebuffer},
X	{CTLX|'g',		enlargewind},
X	{CTLX|'i',		killbuffer},
X	{CTLX|'m',		setmode},
X	{CTLX|'n',		filename},
X	{CTLX|'w',		resize},
X	{CTLX|'x',		nextbuffer},
X	{CTLX|'s',		shrinkwind},
X	{CTLX|'z',		enlargewind},
X	{CTLX|'^',		enlargewind},
X	{CTLX|tocntrl('B'),		listbuffers},
X	{CTLX|tocntrl('F'),		filefind},
X	{CTLX|tocntrl('I'),		insfile},
X	{CTLX|tocntrl('L'),		lowerregion},
X	{CTLX|tocntrl('M'),		delmode},
X	{CTLX|tocntrl('N'),		mvdnwind},
X	{CTLX|tocntrl('P'),		mvupwind},
X	{CTLX|tocntrl('R'),		fileread},
X	{CTLX|tocntrl('S'),		filesave},
X	{CTLX|tocntrl('U'),		upperregion},
X	{CTLX|tocntrl('V'),		viewfile},
X	{CTLX|tocntrl('W'),		filewrite},
X	{CTLX|tocntrl('Z'),		shrinkwind},
X	/* {tocntrl('C'),		insspace}, */
X	{tocntrl('T'),		twiddle},
X	{META|' ',		setmark},
X	{META|'.',		setmark},
X	{META|'!',		reposition},
X	{META|'C',		capword},
X	{META|'K',		bindkey},
X	{META|'L',		lowerword},
X	{META|'M',		setgmode},
X	{META|'R',		sreplace},
X	{META|'U',		upperword},
X	{META|tocntrl('K'),		unbindkey},
X	{META|tocntrl('L'),		reposition},
X	{META|tocntrl('M'),		delgmode},
X	{META|tocntrl('N'),		namebuffer},
X	{META|tocntrl('R'),		qreplace},
X	{META|tocntrl('S'),		newsize},
X	{META|tocntrl('T'),		newwidth},
X	{META|tocntrl('V'),		scrnextdw},
X	{META|tocntrl('Z'),		scrnextup},
#if	WORDPRO
X	{META|tocntrl('C'),		wordcount},
X	/* {META|tocntrl('W'),		killpara}, */
#endif
#if	PROC
X	{META|tocntrl('E'),		execproc},
#endif
#if	APROP
X	{META|'A',		apro},
#endif
X	/* META|'D',		delfword, */
X	/* META|0x7F,              delbword, */
#if	WORDPRO
X	{META|'N',		gotoeop},
X	{META|'P',		gotobop},
X	{META|'Q',		fillpara},
#endif
X
#endif /* BEFORE */
X
#if	NeWS
X	{SPEC|0,		setcursor},	/* mouse support */
X	{SPEC|1,		newsadjustmode},/* quiet mode setting */
X
/* top fkeys */
X	{SPEC|96,		filefind},
X	{SPEC|97,		fileread},
X	{SPEC|98,		insfile},
X	{SPEC|99,		viewfile},
X	{SPEC|100,		filesave},
X	{SPEC|101,		filewrite},
X	{SPEC|102,		filename},
X	{SPEC|103,		yankregion},
X	{SPEC|104,		unarg},
X
/* right function keys */
X	{SPEC|80,		backpage},
X	{SPEC|81,		gotobob},
X	{SPEC|82,		risearch},
X	{SPEC|83,		forwpage},
X	{SPEC|84,		gotoeob},
X	{SPEC|85,		fisearch},
X	{SPEC|86,		gotobol},
X	{SPEC|87,		backline},
X	{SPEC|88,		gotoeol},
X	{SPEC|89,		backchar},
X	{SPEC|90,		setmark},
X	{SPEC|91,		forwchar},
X	{SPEC|92,		backword},
X	{SPEC|93,		forwline},
X	{SPEC|94,		forwword},
#endif
X
#if	MSDOS & (HP150 == 0) & (WANGPC == 0) & (HP110 == 0)
X	{SPEC|tocntrl('_'),		forwhunt},
X	{SPEC|tocntrl('S'),		backhunt},
X	{SPEC|71,		gotobob},
X	{SPEC|72,		backline},
X	{SPEC|73,		backpage},
X	{SPEC|75,		backchar},
X	{SPEC|77,		forwchar},
X	{SPEC|79,		gotoeob},
X	{SPEC|80,		forwline},
X	{SPEC|81,		forwpage},
X	{SPEC|82,		insspace},
X	{SPEC|83,		forwdelchar},
X	{SPEC|115,		backword},
X	{SPEC|116,		forwword},
#if	WORDPRO
X	{SPEC|132,		gotobop},
X	{SPEC|118,		gotoeop},
#endif
X	{SPEC|84,		cbuf1},
X	{SPEC|85,		cbuf2},
X	{SPEC|86,		cbuf3},
X	{SPEC|87,		cbuf4},
X	{SPEC|88,		cbuf5},
X	{SPEC|89,		cbuf6},
X	{SPEC|90,		cbuf7},
X	{SPEC|91,		cbuf8},
X	{SPEC|92,		cbuf9},
X	{SPEC|93,		cbuf10},
#endif
X
#if	HP150
X	{SPEC|32,		backline},
X	{SPEC|33,		forwline},
X	{SPEC|35,		backchar},
X	{SPEC|34,		forwchar},
X	{SPEC|44,		gotobob},
X	{SPEC|46,		forwpage},
X	{SPEC|47,		backpage},
X	{SPEC|82,		nextwind},
X	{SPEC|68,		openline},
X	{SPEC|69,		deltoeol},
X	{SPEC|65,		forwdelchar},
X	{SPEC|64,		ctlxe},
X	{SPEC|67,		refresh},
X	{SPEC|66,		reposition},
X	{SPEC|83,		help},
X	{SPEC|81,		deskey},
#endif
X
#if	HP110
X	{SPEC|0x4b,		backchar},
X	{SPEC|0x4d,		forwchar},
X	{SPEC|0x48,		backline},
X	{SPEC|0x50,		forwline},
X	{SPEC|0x43,		help},
X	{SPEC|0x73,		backword},
X	{SPEC|0x74,		forwword},
X	{SPEC|0x49,		backpage},
X	{SPEC|0x51,		forwpage},
X	{SPEC|84,		cbuf1},
X	{SPEC|85,		cbuf2},
X	{SPEC|86,		cbuf3},
X	{SPEC|87,		cbuf4},
X	{SPEC|88,		cbuf5},
X	{SPEC|89,		cbuf6},
X	{SPEC|90,		cbuf7},
X	{SPEC|91,		cbuf8},
#endif
X
#if	AMIGA
X	{SPEC|'?',		help},
X	{SPEC|'A',		backline},
X	{SPEC|'B',		forwline},
X	{SPEC|'C',		forwchar},
X	{SPEC|'D',		backchar},
X	{SPEC|'T',		backpage},
X	{SPEC|'S',		forwpage},
X	{SPEC|'a',		backword},
X	{SPEC|'`',		forwword},
X	{SPEC|'P',		cbuf1},
X	{SPEC|'Q',		cbuf2},
X	{SPEC|'R',		cbuf3},
X	{SPEC|'S',		cbuf4},
X	{SPEC|'T',		cbuf5},
X	{SPEC|'U',		cbuf6},
X	{SPEC|'V',		cbuf7},
X	{SPEC|'W',		cbuf8},
X	{SPEC|'X',		cbuf9},
X	{SPEC|'Y',		cbuf10},
X	{127,			forwdelchar},
#endif
X
#if	ST520
X	{SPEC|'b',		help},
X	{SPEC|'H',		backline},
X	{SPEC|'P',		forwline},
X	{SPEC|'M',		forwchar},
X	{SPEC|'K',		backchar},
X	{SPEC|'t',		setmark},
X	{SPEC|'a',		put},
X	{SPEC|'R',		insspace},
X	{SPEC|'G',		gotobob},
X	{127,			forwdelchar},
X	{SPEC|84,		cbuf1},
X	{SPEC|85,		cbuf2},
X	{SPEC|86,		cbuf3},
X	{SPEC|87,		cbuf4},
X	{SPEC|88,		cbuf5},
X	{SPEC|89,		cbuf6},
X	{SPEC|90,		cbuf7},
X	{SPEC|91,		cbuf8},
X	{SPEC|92,		cbuf9},
X	{SPEC|93,		cbuf10},
#endif
X
#if  WANGPC
X	SPEC|0xE0,              quit,           /* Cancel */
X	SPEC|0xE1,              help,           /* Help */
X	SPEC|0xF1,              help,           /* ^Help */
X	SPEC|0xE3,              esc,          /* Print */
X	SPEC|0xF3,              esc,          /* ^Print */
X	SPEC|0xC0,              backline,       /* North */
X	SPEC|0xD0,              gotobob,        /* ^North */
X	SPEC|0xC1,              forwchar,       /* East */
X	SPEC|0xD1,              gotoeol,        /* ^East */
X	SPEC|0xC2,              forwline,       /* South */
X	SPEC|0xD2,              gotobop,        /* ^South */
X	SPEC|0xC3,              backchar,       /* West */
X	SPEC|0xD3,              gotobol,        /* ^West */
X	SPEC|0xC4,              esc,          /* Home */
X	SPEC|0xD4,              gotobob,        /* ^Home */
X	SPEC|0xC5,              filesave,       /* Execute */
X	SPEC|0xD5,              esc,          /* ^Execute */
X	SPEC|0xC6,              insfile,        /* Insert */
X	SPEC|0xD6,              esc,          /* ^Insert */
X	SPEC|0xC7,              forwdelchar,        /* Delete */
X	SPEC|0xD7,              killregion,     /* ^Delete */
X	SPEC|0xC8,              backpage,       /* Previous */
X	SPEC|0xD8,              prevwind,       /* ^Previous */
X	SPEC|0xC9,              forwpage,       /* Next */
X	SPEC|0xD9,              nextwind,       /* ^Next */
X	SPEC|0xCB,              esc,          /* Erase */
X	SPEC|0xDB,              esc,          /* ^Erase */
X	SPEC|0xDC,              esc,          /* ^Tab */
X	SPEC|0xCD,              esc,          /* BackTab */
X	SPEC|0xDD,              esc,          /* ^BackTab */
X	SPEC|0x80,              esc,          /* Indent */
X	SPEC|0x90,              esc,          /* ^Indent */
X	SPEC|0x81,              esc,          /* Page */
X	SPEC|0x91,              esc,          /* ^Page */
X	SPEC|0x82,              esc,          /* Center */
X	SPEC|0x92,              esc,          /* ^Center */
X	SPEC|0x83,              esc,          /* DecTab */
X	SPEC|0x93,              esc,          /* ^DecTab */
X	SPEC|0x84,              esc,          /* Format */
X	SPEC|0x94,              esc,          /* ^Format */
X	SPEC|0x85,              esc,          /* Merge */
X	SPEC|0x95,              esc,          /* ^Merge */
X	SPEC|0x86,              setmark,        /* Note */
X	SPEC|0x96,              esc,          /* ^Note */
X	SPEC|0x87,              esc,          /* Stop */
X	SPEC|0x97,              esc,          /* ^Stop */
X	SPEC|0x88,              forwsearch,     /* Srch */
X	SPEC|0x98,              backsearch,     /* ^Srch */
X	SPEC|0x89,              sreplace,       /* Replac */
X	SPEC|0x99,              qreplace,       /* ^Replac */
X	SPEC|0x8A,              esc,          /* Copy */
X	SPEC|0x9A,              esc,          /* ^Copy */
X	SPEC|0x8B,              esc,          /* Move */
X	SPEC|0x9B,              esc,          /* ^Move */
X	SPEC|0x8C,              namedcmd,       /* Command */
X	SPEC|0x9C,              spawn,          /* ^Command */
X	SPEC|0x8D,              esc,          /* ^ */
X	SPEC|0x9D,              esc,          /* ^^ */
X	SPEC|0x8E,              esc,          /* Blank */
X	SPEC|0x9E,              esc,	      /* ^Blank */
X	SPEC|0x8F,              gotoline,       /* GoTo */
X	SPEC|0x9F,              usebuffer,      /* ^GoTo */
#endif
X 
X
X	/* special internal bindings */
X	SPEC|META|'W',		wrapword,	/* called on word wrap */
X	SPEC|META|'C',		nullproc,	/*  every command input */
X	SPEC|META|'R',		nullproc,	/*  on file read */
X	{0,			NULL}
};
X
#if RAINBOW
X
#include "rainbow.h"
X
/*
X * Mapping table from the LK201 function keys to the internal EMACS character.
X */
X
short lk_map[][2] = {
X	Up_Key,                         tocntrl('P'),
X	Down_Key,                       tocntrl('N'),
X	Left_Key,                       tocntrl('B'),
X	Right_Key,                      tocntrl('F'),
X	Shift+Left_Key,                 META+'B',
X	Shift+Right_Key,                META+'F',
X	Control+Left_Key,               tocntrl('A'),
X	Control+Right_Key,              tocntrl('E'),
X	Prev_Scr_Key,                   META+'V',
X	Next_Scr_Key,                   tocntrl('V'),
X	Shift+Up_Key,                   META+'<',
X	Shift+Down_Key,                 META+'>',
X	Cancel_Key,                     tocntrl('G'),
X	Find_Key,                       tocntrl('S'),
X	Shift+Find_Key,                 tocntrl('R'),
X	Insert_Key,                     tocntrl('Y'),
X	Options_Key,                    tocntrl('D'),
X	Shift+Options_Key,              META+'D',
X	Remove_Key,                     tocntrl('W'),
X	Shift+Remove_Key,               META+'W',
X	Select_Key,                     tocntrl('@'),
X	Shift+Select_Key,               CTLX+tocntrl('X'),
X	Interrupt_Key,                  tocntrl('U'),
X	Keypad_PF2,                     META+'L',
X	Keypad_PF3,                     META+'C',
X	Keypad_PF4,                     META+'U',
X	Shift+Keypad_PF2,               CTLX+tocntrl('L'),
X	Shift+Keypad_PF4,               CTLX+tocntrl('U'),
X	Keypad_1,                       CTLX+'1',
X	Keypad_2,                       CTLX+'2',
X	Do_Key,                         CTLX+'E',
X	Keypad_4,                       CTLX+tocntrl('B'),
X	Keypad_5,                       CTLX+'B',
X	Keypad_6,                       CTLX+'K',
X	Resume_Key,                     META+'!',
X	Control+Next_Scr_Key,           CTLX+'N',
X	Control+Prev_Scr_Key,           CTLX+'P',
X	Control+Up_Key,                 CTLX+tocntrl('P'),
X	Control+Down_Key,               CTLX+tocntrl('N'),
X	Help_Key,                       CTLX+'=',
X	Shift+Do_Key,                   CTLX+'(',
X	Control+Do_Key,                 CTLX+')',
X	Keypad_0,                       CTLX+'Z',
X	Shift+Keypad_0,                 CTLX+tocntrl('Z'),
X	Main_Scr_Key,                   tocntrl('C'),
X	Keypad_Enter,                   CTLX+'!',
X	Exit_Key,                       CTLX+tocntrl('C'),
X	Shift+Exit_Key,                 tocntrl('Z')
};
X
#define lk_map_size     (sizeof(lk_map)/2)
#endif
X
SHAR_EOF
chmod 0444 ebind.h ||
echo 'restore of ebind.h failed'
Wc_c="`wc -c < 'ebind.h'`"
test 14722 -eq "$Wc_c" ||
	echo 'ebind.h: original size 14722, current size' "$Wc_c"
# ============= edef.h ==============
echo 'x - extracting edef.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'edef.h' &&
/*	EDEF:		Global variable definitions for
X			MicroEMACS 3.9
X
X			written by Dave G. Conroy
X			modified by Steve Wilhite, George Jones
X			greatly modified by Daniel Lawrence
*/
X
/* some global function declarations */
X
char *flook();
char *getctext();
char *fnc2engl();
char *tokval();
#if ! SMALLER
char *gtenv();
char *gtfun();
char *gtusr();
char *itoa();
char *ltos();
char *mklower();
char *mkupper();
#endif
#if ! VMALLOC
char *malloc();
#endif
char *strcat();
char *strcpy();
char *strncpy();
char *token();
char *prc2engl();
CMDFUNC *engl2fnc();
CMDFUNC *kcod2fnc();
int prc2kcod();
BUFFER  *bfind();               /* Lookup a buffer by name      */
WINDOW  *wpopup();              /* Pop up window creation       */
LINE    *lalloc();              /* Allocate a line              */
X
/* I know this declaration stuff is really ugly, and I probably won't ever
X *	do it again.  promise.  but it _does_ make it easy to add/change
X *	globals.  Too bad about "comma".    -pgf
X */
#ifdef maindef
# define comma ,
# define decl_init(thing,value) thing = value
# define decl_uninit(thing) thing
#else
# define decl_init(thing,value) extern thing
# define decl_uninit(thing) extern thing
#endif
X
decl_init( char prognam[], "vile");
decl_init( char version[], "version three");
X
decl_init( int tabval, 8);		/* which column tabs are on,
X						 always power of two */
decl_init( int tabmask, 7);		/* one less than above. I know it's
X						wasteful */
decl_init( int autoindented , -1);	/* how many chars (not cols) indented */
decl_uninit( int isnamedcmd );		/* are we typing a command name */
decl_uninit( int calledbefore );	/* called before during this command? */
decl_uninit( short _chartypes_[N_chars] );	/* character types	*/
decl_uninit( int interrupted );		/* interrupt signal?		*/
decl_uninit( int insertmode );		/* are we inserting or overwriting? */
decl_uninit( int lineinput );		/* are we inserting linestyle? */
decl_uninit( int lastkey );		/* last keystoke (tgetc)	*/
decl_uninit( int last1key );		/* last keystoke (kbd_key)	*/
decl_uninit( int lastcmd );		/* last command	(kbd_seq)	*/
decl_uninit( short fulllineregions );   /* regions should be full lines */
decl_uninit( short doingopcmd );        /* operator command in progress */
decl_uninit( short opcmd );             /* what sort of operator?	*/
decl_uninit( CMDFUNC *havemotion );	/* so we can use "oper" routines
X					   internally */
decl_uninit( int fillcol );             /* Fill column                  */
decl_uninit( short kbdm[NKBDM] );	/* Macro                        */
decl_uninit( short dotcmdm[NKBDM] );	/* dot commands			*/
decl_uninit( short tmpcmdm[NKBDM] );	/* dot commands, 'til we're sure */
decl_uninit( int currow );              /* Cursor row                   */
decl_uninit( int curcol );              /* Cursor column                */
decl_uninit( WINDOW *curwp );           /* Current window               */
decl_uninit( BUFFER *curbp );           /* Current buffer               */
decl_uninit( WINDOW *wheadp );          /* Head of list of windows      */
decl_uninit( BUFFER *bheadp );          /* Head of list of buffers      */
X
decl_uninit( char sres[NBUFN] );		/* current screen resolution	*/
X
decl_uninit( char pat[NPAT] );          /* Search pattern		*/
decl_uninit( char tap[NPAT] );		/* Reversed pattern array.	*/
decl_uninit( char rpat[NPAT] );		/* replacement pattern		*/
X
/* The variable matchlen holds the length of the matched
X * string - used by the replace functions.
X * The variable patmatch holds the string that satisfies
X * the search command.
X * The variables matchline and matchoff hold the line and
X * offset position of the start of match.
X */
decl_uninit( int matchlen );
decl_uninit( int mlenold );
decl_uninit( char *patmatch );
decl_uninit( LINE *matchline );
decl_uninit( int matchoff );
X
#if	MAGIC
/*
X * The variable magical determines if there are actual
X * metacharacters in the string - if not, then we don't
X * have to use the slower MAGIC mode search functions.
X */
decl_uninit( short int magical );
decl_uninit( MC	mcpat[NPAT] );		/* the magic pattern		*/
decl_uninit( MC	tapcm[NPAT] );		/* the reversed magic pattern	*/
X
#endif
X
/* directive name table:
X	This holds the names of all the directives....	*/
X
#if ! SMALLER
decl_init(char *dname[],
X	 { "if" comma "else" comma "endif" comma
X	"goto" comma "return" comma "endm" comma
X	"while" comma "endwhile" comma "break" comma
X	"force" }
X	 );
#else
decl_init(char *dname[],
X	 { "endm" }
X	);
#endif
X
X
#if	DEBUGM
/*	vars needed for macro debugging output	*/
/* global string to hold debug line text */
decl_uninit( char outline[NSTRING] );
#endif
X
#if	NeWS
decl_uninit( int inhibit_update );	/* prevents output to terminal */
#endif
X
/* initialized global definitions */
X
decl_init( int curgoal, -1 );           /* column goal			*/
decl_uninit( char *execstr );		/* pointer to string to execute	*/
decl_uninit( char golabel[NPAT] );	/* current line to go to	*/
decl_uninit( int execlevel );		/* execution IF level		*/
decl_init( int	eolexist, TRUE );	/* does clear to EOL exist	*/
decl_uninit( int revexist );		/* does reverse video exist?	*/
decl_uninit( int flickcode );		/* do flicker supression?	*/
X
/* THE FOLLOWING MODE NAME TABLES MUST CORRESPOND EXACTLY WITH THE #DEFINES
X	IN ESTRUCT.H */
decl_init( char	*othermodes[] , {
X	"lazy" comma
X	"versionctrl" } );
X
decl_init( int othmode, 0);   /* "other" global modes	*/
X
decl_init( char	*valuemodes[] , {
X	"tabstop" comma
X	"fillcol" } );
X
decl_init( char	*modename[] , {		/* names of modes		*/
X	"wrap" comma
X	"cmode" comma
X	"swrap" comma
X	"exact" comma
X	"view" comma
X	"magic" comma
X	"crypt" comma
X	"asave" comma
X	"list" comma
X	"dos" comma
X	"aindent" } );
X
decl_init( char	modecode[], "wcsevmyaldi" );/* letters to represent modes */
X
decl_init( int gmode, MDSWRAP|MDEXACT|MDMAGIC );/* global editor mode	*/
X
decl_init( int gfcolor, 7 );		/* global forgrnd color (white)	*/
decl_uninit( int gbcolor );		/* global backgrnd color (black)*/
decl_init( int gasave, 256 );		/* global ASAVE size		*/
decl_init( int gacount, 256 );		/* count until next ASAVE	*/
decl_init( int sgarbf, TRUE );          /* TRUE if screen is garbage	*/
decl_uninit( int mpresf );              /* TRUE if message in last line */
decl_uninit( int clexec	);		/* command line execution flag	*/
decl_uninit( int mstore	);		/* storing text to macro flag	*/
decl_init( int discmd, TRUE );		/* display command flag		*/
decl_init( int disinp, TRUE );		/* display input characters	*/
decl_uninit( struct BUFFER *bstore );	/* buffer to store macro text to*/
decl_uninit( int vtrow );               /* Row location of SW cursor	*/
decl_uninit( int vtcol );               /* Column location of SW cursor */
decl_init( int ttrow, HUGE );           /* Row location of HW cursor	*/
decl_init( int ttcol, HUGE );           /* Column location of HW cursor */
decl_uninit( int taboff	);		/* tab offset for display	*/
X
decl_init( int cntl_a, tocntrl('A') );	/* current meta character	*/
decl_init( int cntl_x, tocntrl('X') );	/* current control X prefix char */
decl_init( int reptc, 'K' );		/* current universal repeat char */
decl_init( int abortc, tocntrl('[') );	/* ESC: current abort command char */
decl_init( int quotec, tocntrl('V') );	/* quote char during mlreply()	*/
decl_init( int killc, tocntrl('U') );	/* current line kill char	*/
decl_init( int intrc, tocntrl('C') );	/* current interrupt char	*/
decl_init( int backspc, '\b');		/* current backspace char	*/
X
#if	NeWS
decl_init( char	*cname[], {		/* names of colors		*/
X	"WHITE" comma "RED" comma "GREEN" comma "YELLOW" comma "BLUE" comma
X	"MAGENTA" comma "CYAN" comma "BLACK"} );
#else
decl_init( char	*cname[], {		/* names of colors		*/
X	"BLACK" comma "RED" comma "GREEN" comma "YELLOW" comma "BLUE" comma
X	"MAGENTA" comma "CYAN" comma "WHITE"} );
#endif
X
decl_uninit( int exmode );
X
decl_uninit( KILLREG kbs[NKREGS] );	/* all chars, 1 thru 9, and default */
decl_uninit( short ukb );		/* index of current kbuffs */
decl_uninit( int kregflag );		/* info for pending kill into reg */
decl_uninit( WINDOW *swindow );		/* saved window pointer		*/
decl_uninit( int cryptflag );		/* currently encrypting?	*/
decl_uninit( short *tmpcmdptr );	/* current position in dot cmd buf */
decl_init( short *tmpcmdend, &tmpcmdm[0] );/* ptr to end of the dot cmd */
decl_uninit( short *dotcmdptr );	/* current position in dot cmd buf */
decl_init( short *dotcmdend, &dotcmdm[0] );/* ptr to end of the dot command */
decl_init( int dotcmdmode, RECORD );	/* current dot command mode	*/
decl_uninit( int dotcmdrep );		/* number of repetitions	*/
decl_uninit( short *kbdptr );		/* current position in keyboard buf */
decl_init( short *kbdend, &kbdm[0] );	/* ptr to end of the keyboard */
decl_init( int	kbdmode, STOP );	/* current keyboard macro mode	*/
decl_uninit( int kbdrep );		/* number of repetitions	*/
decl_uninit( int seed );		/* random number seed		*/
decl_uninit( long envram );		/* # of bytes current used malloc */
decl_uninit( int macbug );		/* macro debuging flag		*/
decl_init( char	errorm[], "ERROR" );	/* error literal		*/
decl_init( char	truem[], "TRUE" );	/* true literal			*/
decl_init( char	falsem[], "FALSE" );	/* false litereal		*/
decl_init( int	cmdstatus, TRUE );	/* last command status		*/
decl_uninit( char palstr[49] );		/* palette string		*/
decl_uninit( char *fline );		/* dynamic return line		*/
decl_uninit( int flen );		/* current length of fline	*/
X
#if FINDERR
decl_init( char febuff[NBUFN], "" );	/* name of buffer to find errors in */
decl_uninit( unsigned newfebuff );	/* is the name new since last time? */
#endif
X
/* defined in nebind.h and nename.h */
extern NTAB nametbl[];
extern CMDFUNC *asciitbl[];
extern KBIND kbindtbl[];
X
/* terminal table defined only in TERM.C */
X
#ifndef	termdef
extern  TERM    term;                   /* Terminal information.        */
#endif
X
X
SHAR_EOF
chmod 0444 edef.h ||
echo 'restore of edef.h failed'
Wc_c="`wc -c < 'edef.h'`"
test 9852 -eq "$Wc_c" ||
	echo 'edef.h: original size 9852, current size' "$Wc_c"
# ============= efunc.h ==============
echo 'x - extracting efunc.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'efunc.h' &&
THIS FILE IS NO LONGER USED -- IT IS INCLUDED FOR HISTORICAL PURPOSES
SEE THE mktbls PROGRAM, AND THE FILE cmdtbl
/*	EFUNC.H:	MicroEMACS function declarations and names
X
X		This file list all the C code functions used by MicroEMACS
X	and the names to use to bind keys to them. To add functions,
X	declare it here in both the extern function list and the name
X	binding table.
X
*/
X
/*	External function declarations		*/
X
#if FINDERR
extern  int     finderr();     	/* look up and go to next error */
#endif
#if TAGS
extern  int     gototag();     	/* look up and go to a tag */
#endif
extern  int     operqreplace();     	/* do "query replace" on a region */
extern  int     opersreplace();     	/* do "replace" on a region */
extern  int     operlineqreplace();     /* do "query replace" on a line region */
extern  int     operlinesreplace();     /* do "replace" on a line region */
extern  int     operwrite();     	/* write a region to a file */
extern  int     showgmodes();     	/* show modes set for current buffer */
extern  int     showmodes();     	/* show modes set for current buffer */
extern  int     histbuff();     	/* switch to num buffer in hist list */
extern  int     altbuff();	     	/* switch to previous buffer */
extern  int     deltoeol();     	/* delete to end of line */
extern  int     chgtoeol();     	/* change to end of line */
extern  int     yankline();     	/* yank whole line */
extern  int     chgline();     		/* change whole line */
extern  int     chgchar();     		/* change character */
extern  int     join();      		/* join two line together */
extern  int     lastnonwhite();      	/* goto last non-whitespace on line */
extern  int     firstnonwhite();      	/* goto first non-whitespace on line */
extern  int     fcsrch();          	/* forw scan for char on line */
extern  int     bcsrch();          	/* back scan for char on line */
extern  int     fcsrch_to();          	/* forw scan up to char on line */
extern  int     bcsrch_to();          	/* back scan up to char on line */
extern  int     rep_csrch();          	/* repeat last scan for char on line */
extern  int     rev_csrch();          	/* reverse last scan for char on line */
extern  int     replacechar();          /* replace character under cursor */
extern  int     poswind();           	/* position window around cursor */
extern  int     overwrite();           	/* overwrite text (temp set OVER mode)*/
extern  int     undo();           	/* undo last command		*/
extern  int     lineundo();           	/* undo all changes to a line	*/
extern  int     dotcmdplay();           /* replay last command		*/
extern  int     operdel();              /* Delete with motion operator  */
extern  int     operlinedel();          /* Delete lines with motion operator  */
extern  int     operyank();             /* Yank with motion operator    */
extern  int     operlineyank();         /* Yank lines with motion operator    */
extern  int     operchg();              /* Change with motion operator  */
extern  int     operlinechg();          /* Change lines with motion operator  */
extern  int     operflip();             /* Flip case with motion operator  */
extern  int     operlower();             /* lower case with motion operator  */
extern  int     operupper();             /* upper case with motion operator  */
extern  int     operlshift();           /* Shift lines with motion operator  */
extern  int     operrshift();           /* Shift lines with motion operator  */
extern  int     esc();                /* Abort out of things          */
extern  int     writequit();            /* Write and Quit               */
extern  int     quit();                 /* Quit                         */
extern  int     quithard();             /* Quit, no questions asked     */
extern  int     ctlxlp();               /* Begin macro                  */
extern  int     ctlxrp();               /* End macro                    */
extern  int     ctlxe();                /* Execute macro                */
extern  int     fileread();             /* Get a file, read only        */
extern  int     filefind();		/* Get a file, read write       */
extern  int     filewrite();            /* Write a file                 */
extern  int     filesave();             /* Save current file            */
extern  int     filename();             /* Adjust file name             */
extern  int     getccol();              /* Get current column           */
extern  int     gotobol();              /* Move to start of line        */
extern  int     forwchar();             /* Move forward by characters   */
extern  int     gotoeol();              /* Move to end of line          */
extern  int     gotobos();              /* Move to beg of screen        */
extern  int     gotomos();              /* Move to mid of screen        */
extern  int     gotoeos();              /* Move to end of screen        */
extern  int     backchar();             /* Move backward by characters  */
extern  int     forwline();             /* Move forward by lines        */
extern  int     forwbline();            /* Move forward by lines, goto bol */
extern  int     backline();             /* Move backward by lines       */
extern  int     backbline();            /* Move backward by lines, goto bol */
extern  int     forwpage();             /* Move forward by pages        */
extern  int     forwhpage();            /* Move forward half page       */
extern  int     backpage();             /* Move backward by pages       */
extern  int     backhpage();            /* Move backward half page      */
extern  int     gotobob();              /* Move to start of buffer      */
extern  int     gotoeob();              /* Move to end of buffer        */
extern  int     setfillcol();           /* Set fill column.             */
extern  int     setnmmark();            /* Set named mark               */
extern  int     golinenmmark();         /* go to line of named mark     */
extern  int     goexactnmmark();        /* go exactly to named mark     */
extern  int     setmark();              /* Set mark                     */
extern  int     swapmark();             /* Swap "." and mark            */
extern  int     forwsearch();           /* Search forward               */
extern  int     backsearch();           /* Search backwards             */
extern	int	sreplace();		/* search and replace		*/
extern	int	qreplace();		/* search and replace w/query	*/
extern  int     showcpos();             /* Show the cursor position     */
extern  int     nextwind();             /* Move to the next window      */
extern  int     prevwind();             /* Move to the previous window  */
extern  int     onlywind();             /* Make current window only one */
extern  int     splitwind();            /* Split current window         */
extern  int     mvdnwind();             /* Move window down             */
extern  int     mvupwind();             /* Move window up               */
extern  int     mvdnnxtwind();          /* Move next window down        */
extern  int     mvupnxtwind();          /* Move next window up          */
extern  int     enlargewind();          /* Enlarge display window.      */
extern  int     shrinkwind();           /* Shrink window.               */
extern  int     listbuffers();          /* Display list of buffers      */
extern  int     togglelistbuffers();    /* Display/unDisplay list of buffers*/
extern  int     usebuffer();            /* Switch a window to a buffer  */
extern  int     killbuffer();           /* Make a buffer go away.       */
extern  int     reposition();           /* Reposition window            */
extern  int     refresh();              /* Refresh the screen           */
extern  int     tab();                  /* Insert tab                   */
extern  int     settab();               /* set tab stops                */
extern  int     newline();              /* Insert CR-LF                 */
extern  int     opendown();             /* Open up a blank line below   */
extern  int     openup();               /* Open up a blank line above   */
extern  int     append();               /* go into insert mode after dot*/
extern  int     appendeol();            /* go into insert mode at eol	*/
extern  int     insert();               /* go into insert mode		*/
extern  int     insertbol();            /* go into insert mode at bol	*/
extern  int     quote();                /* Insert literal               */
extern  int     backviword();           /* Backup by vi words           */
extern  int     forwviword();           /* Advance by vi words          */
extern  int     backword();             /* Backup by words              */
extern  int     forwword();             /* Advance by words             */
extern  int     forwendw();             /* Advance to end of words      */
extern  int     forwviendw();           /* Advance to end of vi words   */
extern  int     forwdelchar();              /* Forward delete               */
extern  int     backdelchar();              /* Backward delete              */
/* extern  int     killtext();             /* Kill forward                 */
extern  int     put();                 /* Yank back from killbuffer.   */
extern  int     putbefore();            /* put back from killbuffer.    */
extern  int     putafter();             /* Put back from killbuffer.    */
extern  int     lineputbefore();       /* put lines back from killbuffer.    */
extern  int     lineputafter();        /* Put lines back from killbuffer.    */
#ifdef BEFORE
extern  int     upperword();            /* Upper case word.             */
extern  int     lowerword();            /* Lower case word.             */
extern  int     capword();              /* Initial capitalize word.     */
#endif
/* extern  int     delfword();             /* Delete forward word.         */
/* extern  int     delbword();             /* Delete backward word.        */
extern  int     spawncli();             /* Run CLI in a subjob.         */
extern  int     spawn();                /* Run a command in a subjob.   */
#if	BSD
extern	int	bktoshell();		/* suspend emacs to parent shell*/
extern	int	rtfrmshell();		/* return from a suspended state*/
#endif
extern  int     quickexit();            /* low keystroke style exit.    */
extern	int	setmode();		/* set an editor mode		*/
extern	int	delmode();		/* delete a mode		*/
extern	int	gotoline();		/* go to a numbered line	*/
extern	int	gotocol();		/* go to a numbered column	*/
extern	int	namebuffer();		/* rename the current buffer	*/
#if	WORDPRO
extern	int	gotobop();		/* go to beginning/paragraph	*/
extern	int	gotoeop();		/* go to end/paragraph		*/
extern	int	gotobosec();		/* go to beginning/section	*/
extern	int	gotoeosec();		/* go to end/section		*/
extern	int	fillpara();		/* fill current paragraph	*/
#endif
extern	int	help();			/* get the help file here	*/
extern	int	deskey();		/* describe a key's binding	*/
extern	int	viewfile();		/* find a file in view mode	*/
extern	int	insfile();		/* insert a file		*/
extern	int	scrnextup();		/* scroll next window back	*/
extern	int	scrnextdw();		/* scroll next window down	*/
extern	int	bindkey();		/* bind a function to a key	*/
extern	int	unbindkey();		/* unbind a key's function	*/
extern	int	namedcmd();		/* execute named command	*/
extern	int	desbind();		/* describe bindings		*/
extern	int	nextbuffer();		/* switch to the next buffer	*/
#if BALPHA
extern	int	prevbuffer();		/* switch to the previous buffer*/
#endif
#if	WORDPRO
/* extern	int	killpara();		/* kill the current paragraph	*/
#endif
extern	int	setgmode();		/* set a global mode		*/
extern	int	delgmode();		/* delete a global mode		*/
extern	int	insspace();		/* insert a space forword	*/
extern	int	forwhunt();		/* hunt forward for next match	*/
extern	int	backhunt();		/* hunt backwards for next match*/
extern	int	consearch();		/* continue search for match	*/
extern	int	revsearch();		/* continue search for match*/
extern	int	pipecmd();		/* pipe command into buffer	*/
extern	int	filter();		/* filter buffer through dos	*/
extern	int	delwind();		/* delete the current window	*/
extern	int	cbuf1();		/* execute numbered comd buffer */
extern	int	cbuf2();
extern	int	cbuf3();
extern	int	cbuf4();
extern	int	cbuf5();
extern	int	cbuf6();
extern	int	cbuf7();
extern	int	cbuf8();
extern	int	cbuf9();
extern	int	cbuf10();
extern	int	cbuf11();
extern	int	cbuf12();
extern	int	cbuf13();
extern	int	cbuf14();
extern	int	cbuf15();
extern	int	cbuf16();
extern	int	cbuf17();
extern	int	cbuf18();
extern	int	cbuf19();
extern	int	cbuf20();
extern	int	cbuf21();
extern	int	cbuf22();
extern	int	cbuf23();
extern	int	cbuf24();
extern	int	cbuf25();
extern	int	cbuf26();
extern	int	cbuf27();
extern	int	cbuf28();
extern	int	cbuf29();
extern	int	cbuf30();
extern	int	cbuf31();
extern	int	cbuf32();
extern	int	cbuf33();
extern	int	cbuf34();
extern	int	cbuf35();
extern	int	cbuf36();
extern	int	cbuf37();
extern	int	cbuf38();
extern	int	cbuf39();
extern	int	cbuf40();
extern	int	storemac();		/* store text for macro		*/
extern	int	resize();		/* resize current window	*/
extern	int	clrmes();		/* clear the message line	*/
extern	int	meta();			/* meta prefix dummy function	*/
extern	int	cex();			/* ^X prefix dummy function	*/
extern	int	unarg();		/* ^U repeat arg dummy function	*/
extern	int	unmark();		/* unmark current buffer	*/
#if	ISRCH
extern	int	fisearch();		/* forward incremental search	*/
extern	int	risearch();		/* reverse incremental search	*/
#endif
#if	WORDPRO
extern	int	wordcount();		/* count words in region	*/
#endif
extern	int	upscreen();		/* force screen update		*/
extern	int	usekreg();		/* select named kill registers */
#if	FLABEL
extern	int	fnclabel();		/* set function key label	*/
#endif
#if	APROP
extern	int	apro();			/* apropos fuction		*/
#endif
#if	CRYPT
extern	int	setkey();		/* set encryption key		*/
#endif
extern	int	wrapword();		/* wordwrap function		*/
#if	CFENCE
extern	int	getfence();		/* move cursor to a matching fence */
#endif
#if	AEDIT
#if 0
extern  int     indent();               /* Insert CR-LF, then indent    */
#endif
extern  int     deblank();              /* Delete blank lines           */
extern	int	trim();			/* trim whitespace from end of line */
extern	int	detab();		/* detab rest of line */
extern	int	entab();		/* entab rest of line */
#endif
#if	PROC
extern	int	storeproc();		/* store names procedure */
extern	int	execproc();		/* execute procedure */
#endif
#if	NeWS
extern	int	setcursor() ;		/* mouse support function */
extern	int	newsadjustmode() ;	/* mouse support function */
#endif
#if ! SMALLER
extern	int	newsize();		/* change the current screen size */
extern	int	newwidth();		/* change the current screen width */
extern	int	setvar();		/* set a variables value */
extern	int	istring();		/* insert string in text	*/
extern	int	savewnd();		/* save current window		*/
extern	int	restwnd();		/* restore current window	*/
extern	int	writemsg();		/* write text on message line	*/
extern  int     twiddle();              /* Twiddle characters           */
extern	int	execcmd();		/* execute a command line	*/
extern	int	execbuf();		/* exec commands from a buffer	*/
extern	int	execfile();		/* exec commands from a file	*/
#endif
X
extern	int	nullproc();		/* does nothing... */
X
X
/*	Name to function binding table
X
X		This table gives the names of all the bindable functions
X	end their C function address. These are used for the bind-to-key
X	function.
X
X	REDO means the dotcmd command recorder whould not be halted
X	UNDO means the undo stacks should be cleared
X	MOTION means this command moves dot, and is compatible with
X		the operator commands.
X	FL only occurs with MOTION, means that if the motion is an operator
X		argument, the operation should affect whole lines
X	ABS only occurs with MOTION, means that if the motion is absolute,
X		i.e. not relative to the current postion or screen.  It is used
X		for the "lastdotmark", ldmark.
X	GOAL signifies a motion that will attempt to retain the 
X		current column postition.
*/
X
NBIND	names[] = {
X	{"!",				spawn,		NONE },
X	{"<",				pipecmd,	NONE },
X	{"|",				filter,		REDO|UNDO},
X	{"*",			togglelistbuffers,	NONE },
X	{"abort-command",		esc,		NONE },
X	{"add-mode",			setmode,	NONE },
X	{"add-global-mode",		setgmode,	NONE },
X	{"alternate-buffer",		altbuff,	NONE },
#if	APROP
X	{"apropos",			apro,		NONE },
#endif
X	{"append",			append,		REDO|UNDO },
X	{"append-eol",			appendeol,	REDO|UNDO },
X	{"b",				usebuffer,	NONE },
X	{"backward-character",		backchar,	MOTION },
X	{"backward-char-scan",		bcsrch,		MOTION },
X	{"backward-char-scan-to",	bcsrch_to,	MOTION },
X	{"begin-macro",			ctlxlp,		NONE },
X	{"beginning-of-file",		gotobob,	ABS|MOTION },
X	{"beginning-of-line",		gotobol,	MOTION },
X	{"beginning-of-screen",		gotobos,	MOTION|FL },
X	{"bind-key",			bindkey,	NONE },
X	{"buffer-position",		showcpos,	NONE },
#ifdef BEFORE
X	{"case-word-capitalize",	capword,	REDO|UNDO },
X	{"case-word-lower",		lowerword,	REDO|UNDO },
X	{"case-word-upper",		upperword,	REDO|UNDO },
#endif
X	{"change-char",			chgchar,	REDO|UNDO },
X	{"change-file-name",		filename,	NONE },
X	{"change-line",			chgline,	REDO|UNDO },
X	{"change-lines-til",		operlinechg,	REDO|UNDO },
#if ! SMALLER
X	{"change-screen-size",		newsize,	NONE },
X	{"change-screen-width",		newwidth,	NONE },
#endif
X	{"change-til",			operchg,	REDO|UNDO },
X	{"change-to-end-of-line",	chgtoeol,	REDO|UNDO },
X	{"clear-and-redraw",		refresh,	NONE },
X	{"clear-message-line",		clrmes,		NONE },
X	{"continue-search",		consearch,	ABS|MOTION },
#if	WORDPRO
X	{"count-words",			wordcount,	NONE },
#endif
X	{"ctlx-prefix",			cex,		NONE },
X	{"db",				killbuffer,	NONE },
X	{"dw",				delwind,	NONE },
#if AEDIT
X	{"delete-blank-lines",		deblank,	REDO|UNDO },
#endif
X	{"delete-buffer",		killbuffer,	NONE },
X	{"delete-global-mode",		delgmode,	NONE },
X	{"delete-mode",			delmode,	NONE },
X	{"delete-next-character",	forwdelchar,	REDO|UNDO },
X	{"delete-lines-til",		operlinedel,	REDO|UNDO },
X	{"delete-other-windows",	onlywind,	NONE },
X	{"delete-previous-character",	backdelchar,	REDO|UNDO },
X	{"delete-til",			operdel,	REDO|UNDO },
X	{"delete-to-end-of-line",	deltoeol,	REDO|UNDO },
X	{"delete-window",		delwind,	NONE },
X	{"describe-bindings",		desbind,	NONE },
X	{"describe-key",		deskey,		NONE },
#if	AEDIT
X	{"detab-line",			detab,		REDO|UNDO },
#endif
X	{"e",				filefind,	NONE },
X	{"e!",				fileread,	NONE },
#if 0
X	{"e#",				altbuff,	NONE },
#endif
X	{"edit-file",			filefind,	NONE },
X	{"end-macro",			ctlxrp,		NONE },
X	{"end-of-file",			gotoeob,	ABS|MOTION },
X	{"end-of-line",			gotoeol,	MOTION|GOAL },
X	{"end-of-screen",		gotoeos,	MOTION|FL },
#if	AEDIT
X	{"entab-line",			entab,		REDO|UNDO },
#endif
X	{"exchange-point-and-mark",	swapmark,	ABS|MOTION },
#if ! SMALLER
X	{"execute-buffer",		execbuf,	NONE },
X	{"execute-command-line",	execcmd,	NONE },
X	{"execute-file",		execfile,	NONE },
#endif
X	{"execute-macro",		ctlxe,	REDO },
X	{"execute-macro-1",		cbuf1,	REDO },
X	{"execute-macro-2",		cbuf2,	REDO },
X	{"execute-macro-3",		cbuf3,	REDO },
X	{"execute-macro-4",		cbuf4,	REDO },
X	{"execute-macro-5",		cbuf5,	REDO },
X	{"execute-macro-6",		cbuf6,	REDO },
X	{"execute-macro-7",		cbuf7,	REDO },
X	{"execute-macro-8",		cbuf8,	REDO },
X	{"execute-macro-9",		cbuf9,	REDO },
X	{"execute-macro-10",		cbuf10,	REDO },
X	{"execute-macro-11",		cbuf11,	REDO },
X	{"execute-macro-12",		cbuf12,	REDO },
X	{"execute-macro-13",		cbuf13,	REDO },
X	{"execute-macro-14",		cbuf14,	REDO },
X	{"execute-macro-15",		cbuf15,	REDO },
X	{"execute-macro-16",		cbuf16,	REDO },
X	{"execute-macro-17",		cbuf17,	REDO },
X	{"execute-macro-18",		cbuf18,	REDO },
X	{"execute-macro-19",		cbuf19,	REDO },
X	{"execute-macro-20",		cbuf20,	REDO },
X	{"execute-macro-21",		cbuf21,	REDO },
X	{"execute-macro-22",		cbuf22,	REDO },
X	{"execute-macro-23",		cbuf23,	REDO },
X	{"execute-macro-24",		cbuf24,	REDO },
X	{"execute-macro-25",		cbuf25,	REDO },
X	{"execute-macro-26",		cbuf26,	REDO },
X	{"execute-macro-27",		cbuf27,	REDO },
X	{"execute-macro-28",		cbuf28,	REDO },
X	{"execute-macro-29",		cbuf29,	REDO },
X	{"execute-macro-30",		cbuf30,	REDO },
X	{"execute-macro-31",		cbuf31,	REDO },
X	{"execute-macro-32",		cbuf32,	REDO },
X	{"execute-macro-33",		cbuf33,	REDO },
X	{"execute-macro-34",		cbuf34,	REDO },
X	{"execute-macro-35",		cbuf35,	REDO },
X	{"execute-macro-36",		cbuf36,	REDO },
X	{"execute-macro-37",		cbuf37,	REDO },
X	{"execute-macro-38",		cbuf38,	REDO },
X	{"execute-macro-39",		cbuf39,	REDO },
X	{"execute-macro-40",		cbuf40,	REDO },
X	{"execute-named-command",	namedcmd,	NONE },
#if	PROC
X	{"execute-procedure",		execproc,	REDO },
#endif
X	{"exit",			quit,		NONE },
X	{"f",				filename,	NONE },
X	{"file-name",			filename,	NONE },
#if	WORDPRO
X	{"fill-paragraph",		fillpara,	REDO|UNDO },
#endif
X	{"filter-buffer",		filter,		REDO|UNDO },
X	{"find-file",			filefind,	NONE },
#if FINDERR
X	{"find-next-error",		finderr,	NONE },
#endif
#if TAGS
X	{"find-tag",			gototag,	NONE },
#endif
X	{"first-nonwhite",		firstnonwhite,	MOTION },
X	{"flip-til",			operflip,	REDO|UNDO },
X	{"forward-character",		forwchar,	MOTION },
X	{"forward-char-scan",		fcsrch,		MOTION },
X	{"forward-char-scan-to",	fcsrch_to,	MOTION },
X	{"gmodes",			showgmodes,	NONE },
X	{"goto-column",			gotocol,	MOTION },
X	{"goto-line",			gotoline,	ABS|MOTION|FL },
/* goline and goexact are special cases-- no ABS, even though they are */
X	{"goto-named-mark",		golinenmmark,	MOTION|FL },
X	{"goto-named-mark-exact",	goexactnmmark,	MOTION },
#if	CFENCE
X	{"goto-matching-fence",		getfence,	ABS|MOTION },
#endif
X	{"grow-window",			enlargewind,	NONE },
X	{"h",				help,		NONE },
X	{"handle-tab",			settab,		NONE },
X	{"historical-buffer",		histbuff,	NONE },
X	{"hunt-forward",		forwhunt,	ABS|MOTION },
X	{"hunt-backward",		backhunt,	ABS|MOTION },
X	{"help",			help,		NONE },
X	{"i-shell",			spawncli,	NONE },
#if	ISRCH
X	{"incremental-search",		fisearch,	NONE },
#endif
X	{"insert",			insert,		REDO|UNDO },
X	{"insert-bol",			insertbol,	REDO|UNDO },
X	{"insert-file",			insfile,	REDO|UNDO },
X	{"insert-space",		insspace,	REDO|UNDO },
#if ! SMALLER
X	{"insert-string",		istring,	REDO|UNDO },
#endif
X	{"join-lines",			join,		REDO|UNDO },
X	{"kill-buffer",			killbuffer,	NONE },
#if	WORDPRO
X	/* {"kill-paragraph",		killpara,	REDO|UNDO }, */
#endif
#if	FLABEL
X	{"label-function-key",		fnclabel,	NONE },
#endif
X	{"last-nonwhite",		lastnonwhite,	MOTION },
X	{"list-buffers",		listbuffers,	NONE },
X	{"lower-til",			operlower,	REDO|UNDO },
X	{"meta-prefix",			meta,		NONE },
X	{"middle-of-screen",		gotomos,	MOTION|FL },
X	{"modes",			showmodes,	NONE },
X	{"move-next-window-down",	mvdnnxtwind,	NONE },
X	{"move-next-window-up",		mvupnxtwind,	NONE },
X	{"move-window-down",		mvdnwind,	NONE },
X	{"move-window-up",		mvupwind,	NONE },
X	{"n",				nextbuffer,	NONE },
X	{"name-buffer",			namebuffer,	NONE },
X	{"newline",			newline,	REDO|UNDO },
X	{"next-buffer",			nextbuffer,	NONE },
X	{"next-half-page",		forwhpage,	NONE },
X	{"next-line",			forwline,	GOAL|MOTION|FL },
X	{"next-line-at-bol",		forwbline,	MOTION|FL },
X	{"next-page",			forwpage,	MOTION },
#if	WORDPRO
X	{"next-paragraph",		gotoeop,	ABS|MOTION },
#endif
X	{"next-punc-word",		forwviword,	MOTION },
X	{"next-punc-word-end",		forwviendw,	MOTION },
X	{"next-section",		gotoeosec,	ABS|MOTION },
X	{"next-window",			nextwind,	NONE },
X	{"next-word",			forwword,	MOTION },
X	{"next-word-end",		forwendw,	MOTION },
X	{"nop",				nullproc,	NONE },
X	{"open-line-below",		opendown,	REDO|UNDO },
X	{"open-line-above",		openup,		REDO|UNDO },
X	{"overwrite",			overwrite,	REDO|UNDO },
#if BALPHA
X	{"p",				prevbuffer,	NONE },
X	{"pb",				prevbuffer,	NONE },
#else
X	{"p",				altbuff,	NONE },
X	{"pb",				altbuff,	NONE },
#endif
X	{"pw",				prevwind,	NONE },
X	{"pipe-command",		pipecmd,	NONE },
X	{"position-window",		poswind,	NONE },
X	{"previous-half-page",		backhpage,	NONE },
X	{"previous-line",		backline,	GOAL|MOTION|FL },
X	{"previous-line-at-bol",	backbline,	MOTION|FL },
X	{"previous-page",		backpage,	MOTION },
#if	WORDPRO
X	{"previous-paragraph",		gotobop,	ABS|MOTION },
#endif
X	{"previous-punc-word",		backviword,	MOTION },
X	{"previous-section",		gotobosec,	ABS|MOTION },
X	{"previous-window",		prevwind,	NONE },
X	{"previous-word",		backword,	MOTION },
X	{"put-after",			putafter,	REDO|UNDO },
X	{"put-before",			putbefore,	REDO|UNDO },
X	{"put-as-lines-after",		lineputafter,	REDO|UNDO },
X	{"put-as-lines-before",		lineputbefore,	REDO|UNDO },
X	{"q",				quit,		NONE },
X	{"q!",				quithard,	NONE },
X	{"query-replace-til",		operqreplace,	UNDO },
X	{"query-replace-lines-til",	operlineqreplace,	UNDO },
X	{"quick-exit",			quickexit,	NONE },
X	{"quote-character",		quote,		REDO|UNDO },
X	{"r",				insfile,	REDO|UNDO},
X	{"replace-with-file",		fileread,	NONE },
X	{"redraw-display",		reposition,	NONE },
X	{"repeat-char-scan",		rep_csrch,	MOTION },
X	{"repeat-last-cmd",		dotcmdplay,	NONE },
X	{"replace-character",		replacechar,	REDO|UNDO },
X	{"replace-silent-lines-til",	operlinesreplace,	REDO|UNDO },
X	{"replace-silent-til",		opersreplace,	REDO|UNDO },
X	{"resize-window",		resize,		NONE },
#if ! SMALLER
X	{"restore-window",		restwnd,	NONE },
#endif
X	{"reverse-char-scan",		rev_csrch,	MOTION },
#if	ISRCH
X	{"reverse-incremental-search",	risearch,	NONE },
#endif
X	{"reverse-search",		revsearch,	ABS|MOTION },
#if	PROC
X	{"run",				execproc,	NONE },
#endif
X	{"save-file",			filesave,	NONE },
SHAR_EOF
true || echo 'restore of efunc.h failed'
echo 'End of Vile part 4'
echo 'File efunc.h is continued in part 5'
echo 5 > _shar_seq_.tmp
exit 0
-- 
		paul fox, pgf at cayman.com, (617)494-1999
		Cayman Systems, 26 Landsdowne St., Cambridge, MA 02139



More information about the Alt.sources mailing list