Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: In Vi mode, show whether "insert" or "command" state is active
On Dec 22, 9:44pm, ZyX wrote:
}
} [...] I think it may be adding as a question issued by
} zsh-newuser-install when user selects Vi keymap, but behaviour when
} `zsh -f` is run or when .zshrc exists because I am pretty sure that in
} the first case some tests rely on it and in the second case chances
} that user has already configured what he needs is higher then chances
} that he has failed to find the solution.
}
} And this should be changed prompt/rprompt, not changing cursor because
} changing cursor shape is less likely to work.
Then perhaps there should be a prompt escape for the keymap? The letters
'z' and 'Z' are not yet taken. (I hate requiring PROMPT_SUBST.)
Minimally:
diff --git a/Src/prompt.c b/Src/prompt.c
index 3552575..ef27699 100644
--- a/Src/prompt.c
+++ b/Src/prompt.c
@@ -404,6 +404,10 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
test = 1;
}
break;
+ case 'z':
+ if ((ss = getsparam("KEYMAP")))
+ test = !!strcmp(ss, "main");
+ break;
case '_':
test = (cmdsp >= arg);
break;
@@ -854,6 +858,14 @@ putpromptchar(int doprint, int endchar, unsigned int *txtchangep)
promptpath(scriptfilename ? scriptfilename : argzero,
arg, 0);
break;
+ case 'z':
+ if ((ss = getsparam("KEYMAP")))
+ stradd(ss);
+ break;
+ case 'Z':
+ if ((ss = getsparam("ZLE_STATE")))
+ stradd(ss);
+ break;
case '\0':
return 0;
case Meta:
This still requires one to write
zle-keymap-select() { zle reset-prompt }
zle -N zle-keymap-select
because the ZLE parameter set is only installed for user-defined widgets.
There's probably something more clever that could be done, particualarly
with ZLE_STATE and with the conditional. The above is just an example.
Incidentally you have to "fix" the keymap name etc. in zle-line-init as
well as in zle-keymap-select. Maybe zle-keymap-select should be called
just before (after?) zle-line-init, since the keymap is initialized at
that time.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author