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); _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"