--- window.c Wed May 22 23:40:36 1996
+++ ../../source/window.c Thu May 9 23:55:04 1996
@@ -38,6 +38,7 @@
#ifndef BBS
#include "config.h"
+#include "configsym.h"
#endif
#define BUFFERSIZE 2048
@@ -1589,6 +1590,9 @@
int direct = dirflush;
int delete = 1;
+ char *emacskeymap_from = "\001\002\004\005\006" /*"\013"*/ ;
+ int emacskeymap_to[] = { K_HOME, K_LT, K_DEL, K_END, K_RT } ;
+
x = w->curx;
y = w->cury;
@@ -1609,6 +1613,11 @@
once--;
} else {
c = getch();
+ /* maybe this stuff (below) should be #ifndef BBS?? */
+ if (P_EMACSKEYS[0] == 'Y' && strchr(emacskeymap_from,c))
+ c = emacskeymap_to[(int)strchr(emacskeymap_from,c) -
+ (int)emacskeymap_from];
+
if (c > 255 || c == K_BS || c == K_DEL) delete = 0;
}
switch(c) {
@@ -1677,7 +1686,18 @@
wlocate(w, x + idx - offs, y);
wflush();
break;
+ case 'K'-'@': /* CTRL-K */
+ /* Delete rest of line */
+ if(P_EMACSKEYS[0] == 'Y') {
+ buf[idx] = 0;
+ lredraw(w, x + idx - offs, y, buf + idx,
+ linelen - (idx - offs));
+ wlocate(w, x + idx - offs, y);
+ wflush();
+ }
+ break;
default:
+ if (c < 32 || c > 127) break;
/* If delete == 1, delete the buffer. */
if (delete) {
if ((i = strlen(buf)) > linelen)
@@ -1691,7 +1711,6 @@
}
/* Insert character at cursor position. */
- if (c < 32 || c > 127) break;
if (idx + 1 >= maxlen) break;
for(f = strlen(buf) + 1; f > idx; f--)
buf[f] = buf[f-1];
--- ./config.c Wed May 22 23:23:18 1996
+++ ../source/config.c Thu May 9 22:58:38 1996
@@ -593,13 +593,13 @@
int tmp_c; /* fmg - need it to color keep in sanity checks */
char buf[16];
int miny = 4,
- maxy = 17;
+ maxy = 18;
int old_stat = P_STATLINE[0];
#if _HAVE_MACROS
FILE *fp;
miny = 3;
- maxy = 19;
+ maxy = 20;
#endif
w = wopen(15, miny, 69, maxy, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);
@@ -621,11 +621,13 @@
/* MARK updated 02/17/95 - Configurable history buffer size */
wprintf(w, " K - History Buffer Size : %s\n", P_HISTSIZE);
+ wprintf(w, " L - Enable Emacs keys : %s\n", P_EMACSKEYS);
+
#if _HAVE_MACROS
/* fmg - macros support */
- wprintf(w, " L - Macros file : %s\n", P_MACROS);
- wprintf(w, " M - Edit Macros\n");
- wprintf(w, " N - Macros enabled : %s\n", P_MACENAB);
+ wprintf(w, " M - Macros file : %s\n", P_MACROS);
+ wprintf(w, " N - Edit Macros\n");
+ wprintf(w, " O - Macros enabled : %s\n", P_MACENAB);
#endif
wredraw(w, 1);
@@ -855,9 +857,14 @@
werror("This system does not support history");
#endif
break;
+ case 'L': /* enable emacs editing keys */
+ psets(P_EMACSKEYS, yesno(P_EMACSKEYS[0] == 'N'));
+ wlocate(w, 30, 12);
+ wprintf(w, "%s", P_EMACSKEYS);
+ break;
#if _HAVE_MACROS
- case 'L': /* fmg - get local macros storage file */
- pgets(w, 30, 12, P_MACROS, 64, 64);
+ case 'M': /* fmg - get local macros storage file */
+ pgets(w, 30, 13, P_MACROS, 64, 64);
/* Try to open the file to read it in. */
fp = sfopen(pfix_home(P_MACROS), "r+");
@@ -880,12 +887,12 @@
readmacs(fp, 0);
fclose(fp);
break;
- case 'M': /* fmg - Bring up macro editing window */
+ case 'N': /* fmg - Bring up macro editing window */
domacros();
break;
- case 'N':
+ case 'O':
psets(P_MACENAB, yesno(P_MACENAB[0] == 'N'));
- wlocate(w, 30, 14);
+ wlocate(w, 30, 15);
wprintf(w, "%s", P_MACENAB);
break;
#endif
--- orig_source/configsym.h Wed Mar 15 18:37:36 1995
+++ source/configsym.h Thu May 9 22:34:32 1996
@@ -117,7 +117,8 @@
#define P_SOUND mpars[75].value
#define P_HISTSIZE mpars[76].value /* History buffer size */
-
+#define P_EMACSKEYS mpars[77].value /* Enable emacs keys in line edits */
+
/* fmg - macros struct */
#define P_MAC1 mmacs[0].value
--- orig_source/rwconf.c Wed Mar 15 18:37:36 1995
+++ source/rwconf.c Thu May 9 22:35:56 1996
@@ -140,6 +140,9 @@
/* MARK updated 02/17/95 - History buffer size */
{ "256", PUBLIC, "histlines" },
+ /* Enable Emacs editing keys in line editings */
+ { "Yes", PUBLIC, "emacskeys" },
+
/* That's all folks */
{ "", 0, (char *)NULL },
};