From 62719196b27496c3cc4ff97a92fc03627b1bab38 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 14 May 2003 15:09:14 +0000 Subject: 18536: EMACS and VI compatibility options --- Doc/Zsh/options.yo | 16 ++++++++++++++++ Src/Zle/zle_keymap.c | 10 ++++++++++ Src/Zle/zle_main.c | 2 ++ Src/init.c | 3 +++ Src/zsh.h | 2 ++ 5 files changed, 33 insertions(+) diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo index 3616ae50c..8ae442cb2 100644 --- a/Doc/Zsh/options.yo +++ b/Doc/Zsh/options.yo @@ -367,6 +367,14 @@ Use the Dvorak keyboard instead of the standard qwerty keyboard as a basis for examining spelling mistakes for the tt(CORRECT) and tt(CORRECT_ALL) options and the tt(spell-word) editor command. ) +pindex(EMACS) +item(tt(EMACS))( +If ZLE is loaded, turning on this option has the equivalent effect +of `tt(bindkey -e)'. In addition, the VI option is unset. +Turning it off has no effect. The option setting is +not guaranteed to reflect the current keymap. This option is +provided for compatibility; tt(bindkey) is the recommended interface. +) pindex(EQUALS) cindex(filename expansion, =) item(tt(EQUALS) )( @@ -1193,6 +1201,14 @@ cindex(input, tracing) item(tt(VERBOSE) (tt(-v), ksh: tt(-v)))( Print shell input lines as they are read. ) +pindex(VI) +item(tt(VI))( +If ZLE is loaded, turning on this option has the equivalent effect +of `tt(bindkey -v)'. In addition, the EMACS option is unset. +Turning it off has no effect. The option setting is +not guaranteed to reflect the current keymap. This option is +provided for compatibility; tt(bindkey) is the recommended interface. +) pindex(XTRACE) cindex(tracing, of commands) cindex(commands, tracing) diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c index c36657697..3a06bb632 100644 --- a/Src/Zle/zle_keymap.c +++ b/Src/Zle/zle_keymap.c @@ -1370,3 +1370,13 @@ getkeycmd(void) func = lastnamed; return func; } + +/**/ +mod_export void +zlesetkeymap(int mode) +{ + Keymap km = openkeymap((mode == VIMODE) ? "viins" : "emacs"); + if (!km) + return; + linkkeymap(km, "main", 0); +} diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index a8c97ba1b..1f2f07a09 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -1363,6 +1363,7 @@ setup_(Module m) refreshptr = zrefresh; spaceinlineptr = spaceinline; zlereadptr = zleread; + zlesetkeymapptr = zlesetkeymap; getkeyptr = getkey; @@ -1446,6 +1447,7 @@ finish_(Module m) refreshptr = noop_function; spaceinlineptr = noop_function_int; zlereadptr = fallback_zleread; + zlesetkeymapptr= noop_function_int; getkeyptr = NULL; diff --git a/Src/init.c b/Src/init.c index e3a6bda3a..06558e918 100644 --- a/Src/init.c +++ b/Src/init.c @@ -1112,6 +1112,8 @@ mod_export ZleVoidFn refreshptr = noop_function; mod_export ZleVoidIntFn spaceinlineptr = noop_function_int; /**/ mod_export ZleReadFn zlereadptr = autoload_zleread; +/**/ +mod_export ZleVoidIntFn zlesetkeymapptr = noop_function_int; #else /* !LINKED_XMOD_zshQszle */ @@ -1124,6 +1126,7 @@ mod_export ZleReadFn zlereadptr = autoload_zleread; mod_export ZleReadFn zlereadptr = fallback_zleread; # endif /* !UNLINKED_XMOD_zshQszle */ +mod_export ZleVoidIntFn zlesetkeymapptr = noop_function_int; #endif /* !LINKED_XMOD_zshQszle */ /**/ diff --git a/Src/zsh.h b/Src/zsh.h index 033005dfc..1733ce9bc 100644 --- a/Src/zsh.h +++ b/Src/zsh.h @@ -1418,6 +1418,7 @@ enum { CSHJUNKIEQUOTES, CSHNULLCMD, CSHNULLGLOB, + EMACSMODE, EQUALS, ERREXIT, ERRRETURN, @@ -1515,6 +1516,7 @@ enum { TYPESETSILENT, UNSET, VERBOSE, + VIMODE, XTRACE, USEZLE, DVORAK, -- cgit 1.4.1