--- 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 },
 };
