diff options
author | Oliver Kiddle <opk@zsh.org> | 2025-03-03 01:24:46 +0100 |
---|---|---|
committer | Oliver Kiddle <opk@zsh.org> | 2025-03-03 01:30:32 +0100 |
commit | 435cb1b748ce1f2f5c38edc1d64f4ee2424f9b3a (patch) | |
tree | 65f0bb4ddc554199fc76c610ab7cb7e843aedb5d /Src/options.c | |
parent | 71f35afa1cd48d6c25a517797e543cb2aa23a47b (diff) | |
download | zsh-435cb1b748ce1f2f5c38edc1d64f4ee2424f9b3a.tar.gz zsh-435cb1b748ce1f2f5c38edc1d64f4ee2424f9b3a.zip |
53399: don't load ZLE early to set keymap
When zsh is run with -o vi / -o emacs, instead of loading ZLE to force
the change, only record the option state. Then when ZLE starts, the vi
option determines the default keymap.
Diffstat (limited to 'Src/options.c')
-rw-r--r-- | Src/options.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Src/options.c b/Src/options.c index 696ab5c69..8b13f0c5d 100644 --- a/Src/options.c +++ b/Src/options.c @@ -895,8 +895,9 @@ dosetopt(int optno, int value, int force, char *new_opts) */ if (sticky && sticky->emulation) return opts[optno] ? 0 : -1; - zleentry(ZLE_CMD_SET_KEYMAP, optno); - new_opts[(optno == EMACSMODE) ? VIMODE : EMACSMODE] = 0; + if (zle_load_state == 1) + zleentry(ZLE_CMD_SET_KEYMAP, optno); + new_opts[optno ^ EMACSMODE ^ VIMODE] = 0; } else if (optno == SUNKEYBOARDHACK) { /* for backward compatibility */ keyboardhackchar = (value ? '`' : '\0'); |