feat: Display Vi mode as PROMPT (#169)

Add Vi-mode indicator for zsh
This commit is contained in:
Shu Kutsuzawa
2019-08-18 04:33:19 +09:00
committed by Kevin Song
parent 9c213b36b0
commit d90c43b8b1
6 changed files with 56 additions and 13 deletions
+6
View File
@@ -158,6 +158,12 @@ if [[ ${preexec_functions[(ie)starship_preexec]} -gt ${#preexec_functions} ]]; t
preexec_functions+=(starship_preexec);
fi;
STARSHIP_START_TIME="$(date +%s)";
function zle-keymap-select
{
PROMPT=$(starship prompt --keymap=$KEYMAP --jobs="$(jobs | wc -l)");
zle reset-prompt;
};
zle -N zle-keymap-select;
"##;
/* Fish setup is simple because they give us CMD_DURATION. Just account for name
+10
View File
@@ -43,6 +43,14 @@ fn main() {
.help("The execution duration of the last command, in seconds")
.takes_value(true);
let keymap_arg = Arg::with_name("keymap")
.short("k")
.long("keymap")
.value_name("KEYMAP")
// zsh only
.help("The keymap of zsh")
.takes_value(true);
let jobs_arg = Arg::with_name("jobs")
.short("j")
.long("jobs")
@@ -69,6 +77,7 @@ fn main() {
.arg(&status_code_arg)
.arg(&path_arg)
.arg(&cmd_duration_arg)
.arg(&keymap_arg)
.arg(&jobs_arg),
)
.subcommand(
@@ -82,6 +91,7 @@ fn main() {
.arg(&status_code_arg)
.arg(&path_arg)
.arg(&cmd_duration_arg)
.arg(&keymap_arg)
.arg(&jobs_arg),
)
.get_matches();
+5
View File
@@ -12,6 +12,8 @@ use ansi_term::Color;
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
const SUCCESS_CHAR: &str = "";
const FAILURE_CHAR: &str = "";
const VICMD_CHAR: &str = "";
let color_success = Color::Green.bold();
let color_failure = Color::Red.bold();
@@ -23,11 +25,14 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
.config_value_bool("use_symbol_for_status")
.unwrap_or(false);
let exit_success = arguments.value_of("status_code").unwrap_or("0") == "0";
let keymap = arguments.value_of("keymap").unwrap_or("viins");
/* If an error symbol is set in the config, use symbols to indicate
success/failure, in addition to color */
let symbol = if use_symbol && !exit_success {
module.new_segment("error_symbol", FAILURE_CHAR)
} else if keymap == "vicmd" {
module.new_segment("vicmd_symbol", VICMD_CHAR)
} else {
module.new_segment("symbol", SUCCESS_CHAR)
};
-13
View File
@@ -111,17 +111,4 @@ mod tests {
let input = "Python 3.7.2";
assert_eq!(format_python_version(input), "v3.7.2");
}
#[test]
fn test_no_virtual_env() {
env::set_var("VIRTUAL_ENV", "");
assert_eq!(get_python_virtual_env(), None)
}
#[test]
fn test_virtual_env() {
env::set_var("VIRTUAL_ENV", "/foo/bar/my_venv");
assert_eq!(get_python_virtual_env().unwrap(), "my_venv")
}
}