aboutsummaryrefslogtreecommitdiff
path: root/devel/libedit
diff options
context:
space:
mode:
authorMartin Wilke <miwi@FreeBSD.org>2012-04-11 03:08:27 +0000
committerMartin Wilke <miwi@FreeBSD.org>2012-04-11 03:08:27 +0000
commit5d8a59d2eb915ad82effa1a0cade050c5bbddb6c (patch)
treeef3368ccc034b2797f43de53706206b848d93eda /devel/libedit
parentfd53d45a1106fbc77697749f25ee98f9a7d33d80 (diff)
Notes
Diffstat (limited to 'devel/libedit')
-rw-r--r--devel/libedit/Makefile2
-rw-r--r--devel/libedit/files/patch-common.c29
-rw-r--r--devel/libedit/files/patch-terminal50
3 files changed, 80 insertions, 1 deletions
diff --git a/devel/libedit/Makefile b/devel/libedit/Makefile
index 55a8f15579d6..303e92a664bb 100644
--- a/devel/libedit/Makefile
+++ b/devel/libedit/Makefile
@@ -7,7 +7,7 @@
PORTNAME= libedit
PORTVERSION= 2.6.10
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel
MASTER_SITES= ftp://ftp.astron.com/pub/libedit/ \
http://www.canonware.com/download/libedit/
diff --git a/devel/libedit/files/patch-common.c b/devel/libedit/files/patch-common.c
new file mode 100644
index 000000000000..23a30183c36e
--- /dev/null
+++ b/devel/libedit/files/patch-common.c
@@ -0,0 +1,29 @@
+Revision 212191
+libedit: Do not move the cursor for ed-delete-next-char in emacs mode.
+
+This makes ed-delete-next-char suitable for mapping to the <Delete> key.
+
+Behaviour in vi mode is unchanged (for 'x').
+
+--- common.c 2007/03/11 18:30:22 167457
++++ common.c 2010/09/03 22:24:26 212191
+@@ -163,15 +163,12 @@
+ return (CC_ERROR);
+ #endif
+ }
+- } else {
+- if (el->el_line.cursor != el->el_line.buffer)
+- el->el_line.cursor--;
+- else
+- return (CC_ERROR);
+- }
++ } else
++ return (CC_ERROR);
+ }
+ c_delafter(el, el->el_state.argument); /* delete after dot */
+- if (el->el_line.cursor >= el->el_line.lastchar &&
++ if (el->el_map.type == MAP_VI &&
++ el->el_line.cursor >= el->el_line.lastchar &&
+ el->el_line.cursor > el->el_line.buffer)
+ /* bounds check */
+ el->el_line.cursor = el->el_line.lastchar - 1;
diff --git a/devel/libedit/files/patch-terminal b/devel/libedit/files/patch-terminal
new file mode 100644
index 000000000000..78ed4b612840
--- /dev/null
+++ b/devel/libedit/files/patch-terminal
@@ -0,0 +1,50 @@
+Revision 212235
+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.
+
+--- term.c 2007/06/10 19:06:09 170511
++++ term.c 2010/09/05 16:12:10 212235
+@@ -223,7 +223,9 @@
+ { "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 @@
+ 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;
+ }
+
+
+--- term.h 2007/06/10 19:06:09 170511
++++ term.h 2010/09/05 16:12:10 212235
+@@ -79,7 +79,8 @@
+ #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);