On Tue, Nov 21 2017, Anton Lindqvist <[email protected]> wrote:
> Hi,
> While writing tests for the Emacs editing mode in ksh I discovered some
> potential errors in the manual:
>
> - Sync the order of key bindings in emacs.c with the manual
>
> - ^W is bound to delete-word-backward and not kill-region which is
> mentioned in emacs.c. I don't know the full history here...
>
> - Add missing '^' in backward-char binding
>
> - The WERASE control character is also bound to delete-word-backward,
> see x_emacs_keys().
>
> - Rephrase delete-word-forward to match the other bindings
>
> - Move kill-region to a separate list of commands without default
> bindings
The last points brings the following question: what should we do with
other undocumented functions?
--8<--
--- a Wed Nov 22 02:47:00 2017
+++ b Wed Nov 22 02:47:07 2017
@@ -1,4 +1,5 @@
abort
+auto-insert
backward-char
backward-word
beginning-of-history
@@ -19,12 +20,14 @@
end-of-line
eot
eot-or-delete
+error
exchange-point-and-mark
expand-file
forward-char
forward-word
goto-history
kill-line
+kill-region
kill-to-eol
list
list-command
@@ -42,5 +45,6 @@
transpose-chars
up-history
upcase-word
+version
yank
yank-pop
-->8--
I assume that "auto-insert" and "error" should be left out as
implementation details, but what about "version"?
Here's a diff to remove that function. If people want to keep and
document it I would not object, but I don't really see the point.
Quick way to see for yourself: bind ^[v=version then type ESC v
ok?
Index: emacs.c
===================================================================
RCS file: /d/cvs/src/bin/ksh/emacs.c,v
retrieving revision 1.74
diff -u -p -r1.74 emacs.c
--- emacs.c 22 Nov 2017 12:17:34 -0000 1.74
+++ emacs.c 26 Nov 2017 18:12:30 -0000
@@ -186,7 +186,6 @@ static int x_search_char_back(int);
static int x_search_hist(int);
static int x_set_mark(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);
@@ -243,7 +242,6 @@ static const struct x_ftab x_ftab[] = {
{ x_search_hist, "search-history", 0 },
{ x_set_mark, "set-mark-command", 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 },
@@ -1619,35 +1617,6 @@ x_xchg_point_mark(int c)
tmp = xmp;
xmp = xcp;
x_goto( tmp );
- return KSTD;
-}
-
-static int
-x_version(int c)
-{
- char *o_xbuf = xbuf, *o_xend = xend;
- char *o_xbp = xbp, *o_xep = xep, *o_xcp = xcp;
- int lim = x_lastcp() - xbp;
-
- xbuf = xbp = xcp = (char *) ksh_version + 4;
- xend = xep = (char *) ksh_version + 4 + strlen(ksh_version + 4);
- x_redraw(lim);
- x_flush();
-
- c = x_e_getc();
- xbuf = o_xbuf;
- xend = o_xend;
- xbp = o_xbp;
- xep = o_xep;
- xcp = o_xcp;
- x_redraw(strlen(ksh_version));
-
- if (c < 0)
- return KSTD;
- /* This is what at&t ksh seems to do... Very bizarre */
- if (c != ' ')
- x_e_ungetc(c);
-
return KSTD;
}
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE