Hello,
Please see below a small patch proposal for a new configure option to move the ^D (EOT) behaviour to a different key (^Z which is currently unassigned), which allows keyboard ctrl-D to act as delete-char.
I did this because I found my muscle-memory from bash, emacs etc. caused me to hit CTRL-D too often while editing lines. I find it convenient to have CTRL-D act as expected in concert with CTRL-A,E,K,P,N.
If CTRL-Z is not good, perhaps it could be assigned elsewhere but I didn't see how to easily assign to a less-common key that isn't already in use.
Cheers,
-Russ
---
Index: src/LineInput.cc
===================================================================
--- src/LineInput.cc (revision 1458)
+++ src/LineInput.cc (working copy)
@@ -903,10 +903,23 @@
control_C(SIGINT);
break;
+
+#ifdef WANT_CTRLD_DEL
+ case UNI_SUB:
+ CERR << "^D";
+ eof = true;
+ break;
+#endif
+
case UNI_EOT: // ^D
+#ifndef WANT_CTRLD_DEL
CERR << "^D";
eof = true;
break;
+#else
+ lec.delete_char();
+ continue;
+#endif
case UNI_BS: // ^H (backspace)
lec.backspc();
@@ -1089,6 +1102,10 @@
case UNI_SO: return UNI_CursorDown; // ^N
case UNI_DLE: return UNI_CursorUp; // ^P
case UNI_EM: return UNI_EM; // ^Y
+
+#ifdef WANT_CTRLD_DEL
+ case UNI_SUB: return UNI_SUB; // ^Z (as alt EOT, allowing ^D as delete-char)
+#endif
default: goto again;
}
}
Index:
configure.ac===================================================================
---
configure.ac (revision 1458)
+++
configure.ac (working copy)
@@ -411,6 +411,20 @@
AM_CONDITIONAL(WANT_LIBAPL, test "x$user_wants_libapl" = xyes)
AC_MSG_RESULT([$user_wants_libapl])
+AC_MSG_CHECKING([if user wants ctrl-d to be del-char (moving EOT to ctrl-z)])
+user_wants_ctrld_del=no
+AC_ARG_WITH( [ctrld_del],
+ [AS_HELP_STRING([--with-ctrld_del],
+ [enable to use ctrl-d as del-char, ctrl-z as EOT])],
+ [user_wants_ctrld_del=yes])
+
+if test "x$user_wants_ctrld_del" = xyes ; then
+ AC_DEFINE([WANT_CTRLD_DEL], [1], [Define if ctrl-d should act as del-char and ctrl-z should be EOT])
+fi
+
+AM_CONDITIONAL(WANT_CTRLD_DEL, test "x$user_wants_ctrld_del" = xyes)
+AC_MSG_RESULT([$user_wants_ctrld_del])
+
# check if the user wants to build the python extension gnu_apl.so
#
AC_MSG_CHECKING([if we want to build libpython_apl.so])