Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Minor improvements for mod_ksh93
- X-seq: zsh-workers 51557
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Zsh hackers list <zsh-workers@xxxxxxx>
- Subject: Minor improvements for mod_ksh93
- Date: Sat, 11 Mar 2023 13:07:24 -0800
- Archived-at: <https://zsh.org/workers/51557>
- List-id: <zsh-workers.zsh.org>
Clarify availability of ksh-mode parameters, improve vi-mode detection.
diff --git a/Doc/Zsh/mod_ksh93.yo b/Doc/Zsh/mod_ksh93.yo
index d58b979b9..99dab385f 100644
--- a/Doc/Zsh/mod_ksh93.yo
+++ b/Doc/Zsh/mod_ksh93.yo
@@ -24,8 +24,10 @@ enditem()
subsect(Ksh Parameters)
cindex(parameters, ksh)
-Parameters supplied by this module that are marked with `<K>' below are
-available only in ksh emulation.
+Parameters supplied by this module that are marked with `<K>' below
+are available only when ksh emulation is active before entry to the
+shell function, that is, `tt(emulate ksh)' locally to a function does
+not populate these parameters for that function.
startitem()
vindex(.sh.command)
@@ -45,7 +47,7 @@ A named reference to the ZLE special parameter `tt(CURSOR)'.
vindex(.sh.edmode)
item(tt(.sh.edmode) <K>)(
In a ZLE widget, this parameter has the value tt(ESC) (tt($'\e')) if the
-`tt(main)' keymap is selected, and the empty string otherwise. This is
+tt(VI) option is set and the `tt(main)' keymap is selected. This is
intended for use with vi-mode key bindings (`tt(bindkey -v)'). In a
future revision, assigning `tt(.sh.edchar=${.sh.edmode})' is expected
to initiate `tt(vicmd)' mode when `tt(viins)' is active, and do
diff --git a/Src/Modules/ksh93.c b/Src/Modules/ksh93.c
index 9dc75c93c..51999dd71 100644
--- a/Src/Modules/ksh93.c
+++ b/Src/Modules/ksh93.c
@@ -168,8 +168,9 @@ ksh93_wrapper(Eprog prog, FuncWrap w, char *name)
if (zleactive) {
extern mod_import_variable char *curkeymapname; /* XXX */
extern mod_import_variable char *varedarg; /* XXX */
- /* How to distinguish emacs bindings? */
- if (curkeymapname && strcmp(curkeymapname, "main") == 0)
+ /* bindkey -v forces VIMODE so this test is as good as any */
+ if (curkeymapname && isset(VIMODE) &&
+ strcmp(curkeymapname, "main") == 0)
strcpy(sh_edmode, "\e");
else
strcpy(sh_edmode, "");
Messages sorted by:
Reverse Date,
Date,
Thread,
Author