mirror of
https://github.com/starship/starship.git
synced 2026-06-23 02:05:51 +07:00
committed by
Kevin Song
parent
9c213b36b0
commit
d90c43b8b1
@@ -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
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
};
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user