summaryrefslogtreecommitdiff
path: root/Src/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/options.c')
-rw-r--r--Src/options.c5
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');