svn commit: r212235 - head/lib/libedit
Jilles Tjoelker
jilles at FreeBSD.org
Sun Sep 5 16:12:11 UTC 2010
Author: jilles
Date: Sun Sep 5 16:12:10 2010
New Revision: 212235
URL: http://svn.freebsd.org/changeset/base/212235
Log:
libedit: Try to map <Delete> to ed-delete-next-char.
This adds a new "arrow" key "delete" corresponding to the kD termcap value.
It only works if that is a sequence such as "\033[3~"; if it is "\177", the
em-delete-prev-char or ed-delete-prev-char from the single-character
mappings remains. It turns out that most terminals (xterm and alikes,
syscons in xterm mode) produce "\033[3~" by default so <Delete> has the
expected effect.
This also means that things need to be considerably misconfigured for
<Backspace> to perform a <Delete> action.
Modified:
head/lib/libedit/term.c
head/lib/libedit/term.h
Modified: head/lib/libedit/term.c
==============================================================================
--- head/lib/libedit/term.c Sun Sep 5 14:52:27 2010 (r212234)
+++ head/lib/libedit/term.c Sun Sep 5 16:12:10 2010 (r212235)
@@ -223,7 +223,9 @@ private const struct termcapstr {
{ "kh", "send cursor home" },
#define T_at7 37
{ "@7", "send cursor end" },
-#define T_str 38
+#define T_kD 38
+ { "kD", "send cursor delete" },
+#define T_str 39
{ NULL, NULL }
};
@@ -1062,6 +1064,11 @@ term_init_arrow(EditLine *el)
arrow[A_K_EN].key = T_at7;
arrow[A_K_EN].fun.cmd = ED_MOVE_TO_END;
arrow[A_K_EN].type = XK_CMD;
+
+ arrow[A_K_DE].name = "delete";
+ arrow[A_K_DE].key = T_kD;
+ arrow[A_K_DE].fun.cmd = ED_DELETE_NEXT_CHAR;
+ arrow[A_K_DE].type = XK_CMD;
}
Modified: head/lib/libedit/term.h
==============================================================================
--- head/lib/libedit/term.h Sun Sep 5 14:52:27 2010 (r212234)
+++ head/lib/libedit/term.h Sun Sep 5 16:12:10 2010 (r212235)
@@ -79,7 +79,8 @@ typedef struct {
#define A_K_RT 3
#define A_K_HO 4
#define A_K_EN 5
-#define A_K_NKEYS 6
+#define A_K_DE 6
+#define A_K_NKEYS 7
protected void term_move_to_line(EditLine *, int);
protected void term_move_to_char(EditLine *, int);
More information about the svn-src-head
mailing list