Hello,
does anyone actually use the 'version' keybinding in emacs or vi mode?
I would like to remove it. The command isn't bound to a key per default
and the functionality (and implementation) seems rather odd. The
keybinding is strictly for interactive use, so I don't expect the
removal to break any scripts. The KSH_VERSION environment variable is
still available for interactive and non-interactive use.
See the natano_ksh_noversion branch, or the diff below.
ok?
cheers,
natano
commit 184795a06cee14761ed8ef0d866c5b477b6a9d9f
Author: Martin Natano <[email protected]>
Date: Thu Mar 19 20:39:49 2015 +0100
Remove version command from emacs and vi mode.
diff --git a/bin/ksh/emacs.c b/bin/ksh/emacs.c
index 4f83dbe..8dd7c21 100644
--- a/bin/ksh/emacs.c
+++ b/bin/ksh/emacs.c
@@ -176,7 +176,6 @@ static int x_set_mark(int);
static int x_stuff(int);
static int x_stuffreset(int);
static int x_transpose(int);
-static int x_version(int);
static int x_xchg_point_mark(int);
static int x_yank(int);
static int x_comp_list(int);
@@ -235,7 +234,6 @@ static const struct x_ftab x_ftab[] = {
{ x_stuff, "stuff", 0 },
{ x_stuffreset, "stuff-reset", 0 },
{ x_transpose, "transpose-chars", 0 },
- { x_version, "version", 0 },
{ x_xchg_point_mark, "exchange-point-and-mark", 0 },
{ x_yank, "yank", 0 },
{ x_comp_list, "complete-list", 0 },
@@ -1576,33 +1574,6 @@ x_xchg_point_mark(int c)
}
static int
-x_version(int c)
-{
- char *o_xbuf = xbuf, *o_xend = xend;
- char *o_xep = xep, *o_xcp = xcp;
-
- xbuf = xcp = (char *) ksh_version + 4;
- xend = xep = (char *) ksh_version + 4 + strlen(ksh_version + 4);
- x_redraw(1);
- x_flush();
-
- c = x_e_getc(0);
- xbuf = o_xbuf;
- xend = o_xend;
- xep = o_xep;
- xcp = o_xcp;
- x_redraw(1);
-
- if (c < 0)
- return KSTD;
- /* This is what at&t ksh seems to do... Very bizarre */
- if (c != ' ')
- x_e_ungetc(c);
-
- return KSTD;
-}
-
-static int
x_noop(int c)
{
return KSTD;
diff --git a/bin/ksh/vi.c b/bin/ksh/vi.c
index c325d85..6a37a4e 100644
--- a/bin/ksh/vi.c
+++ b/bin/ksh/vi.c
@@ -138,7 +138,6 @@ const unsigned char classify[128] = {
#define VREDO 7 /* . */
#define VLIT 8 /* ^V */
#define VSEARCH 9 /* /, ? */
-#define VVERSION 10 /* <ESC> ^V */
static char undocbuf[CMDLEN];
@@ -221,7 +220,7 @@ x_vi(char *buf, size_t len)
trapsig(c == edchars.intr ? SIGINT :
SIGQUIT);
x_mode(false);
unwind(LSHELL);
- } else if (c == edchars.eof && state != VVERSION) {
+ } else if (c == edchars.eof) {
if (es->linelen == 0) {
x_vi_zotc(edchars.eof);
c = -1;
@@ -322,14 +321,6 @@ vi_hook(int ch)
return -1;
refresh(0);
}
- if (state == VVERSION) {
- save_cbuf();
- es->cursor = 0;
- es->linelen = 0;
- putbuf(ksh_version + 4,
- strlen(ksh_version + 4), 0);
- refresh(0);
- }
}
}
break;
@@ -344,12 +335,6 @@ vi_hook(int ch)
state = VNORMAL;
break;
- case VVERSION:
- restore_cbuf();
- state = VNORMAL;
- refresh(0);
- break;
-
case VARG1:
if (isdigit(ch))
argc1 = argc1 * 10 + ch - '0';
@@ -571,8 +556,6 @@ nextstate(int ch)
return VXCH;
else if (ch == '.')
return VREDO;
- else if (ch == Ctrl('v'))
- return VVERSION;
else if (is_cmd(ch))
return VCMD;
else