diff --git a/fish/.config/fish/conf.d/pure.fish b/fish/.config/fish/conf.d/pure.fish index ec91e35..396fa93 100644 --- a/fish/.config/fish/conf.d/pure.fish +++ b/fish/.config/fish/conf.d/pure.fish @@ -1,28 +1,47 @@ -set --universal pure_version 2.4.2 # used for bug report +set --global pure_version 2.5.2 # used for bug report # Base colors -_pure_set_default pure_color_primary (set_color blue) -_pure_set_default pure_color_info (set_color cyan) -_pure_set_default pure_color_mute (set_color brblack) -_pure_set_default pure_color_success (set_color magenta) -_pure_set_default pure_color_normal (set_color normal) -_pure_set_default pure_color_danger (set_color red) -_pure_set_default pure_color_light (set_color white) -_pure_set_default pure_color_warning (set_color yellow) -_pure_set_default pure_color_dark (set_color black) +_pure_set_default pure_color_primary blue +_pure_set_default pure_color_info cyan +_pure_set_default pure_color_mute brblack +_pure_set_default pure_color_success magenta +_pure_set_default pure_color_normal normal +_pure_set_default pure_color_danger red +_pure_set_default pure_color_light white +_pure_set_default pure_color_warning yellow +_pure_set_default pure_color_dark black # Prompt _pure_set_default pure_symbol_prompt "❯" _pure_set_default pure_symbol_reverse_prompt "❮" # used for VI mode +_pure_set_default pure_color_prompt_on_error pure_color_danger +_pure_set_default pure_color_prompt_on_success pure_color_success + +# Current Working Directory +_pure_set_default pure_color_current_directory pure_color_primary # Git _pure_set_default pure_enable_git true _pure_set_default pure_symbol_git_unpulled_commits "⇣" _pure_set_default pure_symbol_git_unpushed_commits "⇡" _pure_set_default pure_symbol_git_dirty "*" +_pure_set_default pure_color_git_unpulled_commits pure_color_info +_pure_set_default pure_color_git_unpushed_commits pure_color_info +_pure_set_default pure_color_git_branch pure_color_mute +_pure_set_default pure_color_git_dirty pure_color_mute + +# SSH info +_pure_set_default pure_color_ssh_hostname pure_color_mute +_pure_set_default pure_color_ssh_separator pure_color_mute +_pure_set_default pure_color_ssh_user_normal pure_color_mute +_pure_set_default pure_color_ssh_user_root pure_color_light # Number of running jobs _pure_set_default pure_show_jobs false +_pure_set_default pure_color_jobs pure_color_normal + +# Virtualenv for Python +_pure_set_default pure_color_virtualenv pure_color_mute # Print current working directory at the beginning of prompt # true (default): current directory, git, user@hostname (ssh-only), command duration @@ -36,6 +55,7 @@ _pure_set_default pure_separate_prompt_on_error false # Max execution time of a process before its run time is shown when it exits _pure_set_default pure_threshold_command_duration 5 +_pure_set_default pure_color_command_duration pure_color_warning # VI mode indicator # true (default): indicate a non-insert mode by reversing the prompt symbol (❮) diff --git a/fish/.config/fish/fish_variables b/fish/.config/fish/fish_variables index f1048b8..190956b 100644 --- a/fish/.config/fish/fish_variables +++ b/fish/.config/fish/fish_variables @@ -43,14 +43,28 @@ SETUVAR fish_pager_color_prefix:white\x1e\x2d\x2dbold\x1e\x2d\x2dunderline SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan SETUVAR fish_user_paths:/Users/colinpowell/\x2efzf/bin SETUVAR pure_begin_prompt_with_current_directory:true +SETUVAR pure_color_command_duration:pure_color_warning +SETUVAR pure_color_current_directory:pure_color_primary SETUVAR pure_color_danger:\x1b\x5b31m SETUVAR pure_color_dark:\x1b\x5b30m +SETUVAR pure_color_git_branch:pure_color_mute +SETUVAR pure_color_git_dirty:pure_color_mute +SETUVAR pure_color_git_unpulled_commits:pure_color_info +SETUVAR pure_color_git_unpushed_commits:pure_color_info SETUVAR pure_color_info:\x1b\x5b36m +SETUVAR pure_color_jobs:pure_color_normal SETUVAR pure_color_light:\x1b\x5b37m SETUVAR pure_color_mute:\x1b\x5b90m SETUVAR pure_color_normal:\x1b\x5b30m\x1b\x5bm SETUVAR pure_color_primary:\x1b\x5b34m +SETUVAR pure_color_prompt_on_error:pure_color_danger +SETUVAR pure_color_prompt_on_success:pure_color_success +SETUVAR pure_color_ssh_hostname:pure_color_mute +SETUVAR pure_color_ssh_separator:pure_color_mute +SETUVAR pure_color_ssh_user_normal:pure_color_mute +SETUVAR pure_color_ssh_user_root:pure_color_light SETUVAR pure_color_success:\x1b\x5b35m +SETUVAR pure_color_virtualenv:pure_color_mute SETUVAR pure_color_warning:\x1b\x5b33m SETUVAR pure_enable_git:true SETUVAR pure_reverse_prompt_symbol_in_vimode:true diff --git a/fish/.config/fish/functions/_pure_prompt_command_duration.fish b/fish/.config/fish/functions/_pure_prompt_command_duration.fish index 803d129..d35b3a6 100644 --- a/fish/.config/fish/functions/_pure_prompt_command_duration.fish +++ b/fish/.config/fish/functions/_pure_prompt_command_duration.fish @@ -5,7 +5,7 @@ function _pure_prompt_command_duration if test -n "$CMD_DURATION" set command_duration (_pure_format_time $CMD_DURATION $pure_threshold_command_duration) end - set --local command_duration_color (_pure_get_var pure_color_command_duration $pure_color_warning) + set --local command_duration_color (_pure_set_color $pure_color_command_duration) echo "$command_duration_color$command_duration" end diff --git a/fish/.config/fish/functions/_pure_prompt_current_folder.fish b/fish/.config/fish/functions/_pure_prompt_current_folder.fish index 981f705..af8e9ee 100644 --- a/fish/.config/fish/functions/_pure_prompt_current_folder.fish +++ b/fish/.config/fish/functions/_pure_prompt_current_folder.fish @@ -5,7 +5,7 @@ function _pure_prompt_current_folder --argument-names current_prompt_width if test -z "$current_prompt_width"; return $fail; end set --local current_folder (_pure_parse_directory (math $COLUMNS - $current_prompt_width - 1)) - set --local current_folder_color (_pure_get_var pure_color_current_directory $pure_color_primary) + set --local current_folder_color (_pure_set_color $pure_color_current_directory) echo "$current_folder_color$current_folder" end diff --git a/fish/.config/fish/functions/_pure_prompt_ending.fish b/fish/.config/fish/functions/_pure_prompt_ending.fish index b2d5e30..ba92511 100644 --- a/fish/.config/fish/functions/_pure_prompt_ending.fish +++ b/fish/.config/fish/functions/_pure_prompt_ending.fish @@ -1,3 +1,3 @@ function _pure_prompt_ending - echo "$pure_color_normal " + echo (set_color normal)" " end diff --git a/fish/.config/fish/functions/_pure_prompt_git_branch.fish b/fish/.config/fish/functions/_pure_prompt_git_branch.fish index dce0c4d..777cd0e 100644 --- a/fish/.config/fish/functions/_pure_prompt_git_branch.fish +++ b/fish/.config/fish/functions/_pure_prompt_git_branch.fish @@ -1,6 +1,6 @@ function _pure_prompt_git_branch set --local git_branch (_pure_parse_git_branch) # current git branch - set --local git_branch_color (_pure_get_var pure_color_git_branch $pure_color_mute) + set --local git_branch_color (_pure_set_color $pure_color_git_branch) echo "$git_branch_color$git_branch" end diff --git a/fish/.config/fish/functions/_pure_prompt_git_dirty.fish b/fish/.config/fish/functions/_pure_prompt_git_dirty.fish index 3a48b96..fbf31e3 100644 --- a/fish/.config/fish/functions/_pure_prompt_git_dirty.fish +++ b/fish/.config/fish/functions/_pure_prompt_git_dirty.fish @@ -11,7 +11,7 @@ function _pure_prompt_git_dirty ) if test -n "$is_git_dirty" # untracked or un-commited files set git_dirty_symbol "$pure_symbol_git_dirty" - set git_dirty_color (_pure_get_var pure_color_git_dirty $pure_color_mute) + set git_dirty_color (_pure_set_color $pure_color_git_dirty) end echo "$git_dirty_color$git_dirty_symbol" diff --git a/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish b/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish index c9e1d87..98359c4 100644 --- a/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish +++ b/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish @@ -12,13 +12,13 @@ function _pure_prompt_git_pending_commits if test $commit_to_push -gt 0 # upstream is behind local repo set --local git_unpushed_commits_color \ - (_pure_get_var pure_color_git_unpushed_commits $pure_color_info) + (_pure_set_color $pure_color_git_unpushed_commits) set git_unpushed_commits "$git_unpushed_commits_color$pure_symbol_git_unpushed_commits" end if test $commit_to_pull -gt 0 # upstream is ahead of local repo set --local git_unpulled_commits_color \ - (_pure_get_var pure_color_git_unpulled_commits $pure_color_info) + (_pure_set_color $pure_color_git_unpulled_commits) set git_unpulled_commits "$git_unpulled_commits_color$pure_symbol_git_unpulled_commits" end end diff --git a/fish/.config/fish/functions/_pure_prompt_jobs.fish b/fish/.config/fish/functions/_pure_prompt_jobs.fish new file mode 100644 index 0000000..b04fd8c --- /dev/null +++ b/fish/.config/fish/functions/_pure_prompt_jobs.fish @@ -0,0 +1,9 @@ +function _pure_prompt_jobs --description "Display number of running jobs" + if test $pure_show_jobs = true + set --local njobs (count (jobs -p)) + set --local jobs_color (_pure_set_color $pure_color_jobs) + if test $njobs -gt 0 + echo "$jobs_color"[$njobs] + end + end +end diff --git a/fish/.config/fish/functions/_pure_prompt_ssh_host.fish b/fish/.config/fish/functions/_pure_prompt_ssh_host.fish index f888cae..d403c80 100644 --- a/fish/.config/fish/functions/_pure_prompt_ssh_host.fish +++ b/fish/.config/fish/functions/_pure_prompt_ssh_host.fish @@ -1,7 +1,7 @@ function _pure_prompt_ssh_host set --query --global hostname or set --local hostname (hostname -s) # current host name compatible busybox - set --local hostname_color (_pure_get_var pure_color_ssh_hostname $pure_color_mute) + set --local hostname_color (_pure_set_color $pure_color_ssh_hostname) echo "$hostname_color$hostname" end diff --git a/fish/.config/fish/functions/_pure_prompt_ssh_separator.fish b/fish/.config/fish/functions/_pure_prompt_ssh_separator.fish index 1995550..10ae5e8 100644 --- a/fish/.config/fish/functions/_pure_prompt_ssh_separator.fish +++ b/fish/.config/fish/functions/_pure_prompt_ssh_separator.fish @@ -1,6 +1,6 @@ function _pure_prompt_ssh_separator set --local separator_symbol "@" - set --local separator_symbol_color (_pure_get_var pure_color_ssh_separator $pure_color_mute) + set --local separator_symbol_color (_pure_set_color $pure_color_ssh_separator) echo "$separator_symbol_color$separator_symbol" end diff --git a/fish/.config/fish/functions/_pure_prompt_ssh_user.fish b/fish/.config/fish/functions/_pure_prompt_ssh_user.fish index fda8320..e0cf879 100644 --- a/fish/.config/fish/functions/_pure_prompt_ssh_user.fish +++ b/fish/.config/fish/functions/_pure_prompt_ssh_user.fish @@ -1,9 +1,9 @@ function _pure_prompt_ssh_user set --local username (whoami) # current user name - set --local username_color (_pure_get_var pure_color_ssh_user_normal $pure_color_mute) # default color + set --local username_color (_pure_set_color $pure_color_ssh_user_normal) # default color if test "$username" = "root" - set username_color (_pure_get_var pure_color_ssh_user_root $pure_color_light) # different color for root + set username_color (_pure_set_color $pure_color_ssh_user_root) # different color for root end echo "$username_color$username" diff --git a/fish/.config/fish/functions/_pure_prompt_symbol.fish b/fish/.config/fish/functions/_pure_prompt_symbol.fish index 94487d3..768eca7 100644 --- a/fish/.config/fish/functions/_pure_prompt_symbol.fish +++ b/fish/.config/fish/functions/_pure_prompt_symbol.fish @@ -3,8 +3,8 @@ function _pure_prompt_symbol \ --argument-names exit_code set --local prompt_symbol (_pure_get_prompt_symbol) - set --local symbol_color_success (_pure_get_var pure_color_prompt_on_success $pure_color_success) - set --local symbol_color_error (_pure_get_var pure_color_prompt_on_error $pure_color_danger) + set --local symbol_color_success (_pure_set_color $pure_color_prompt_on_success) + set --local symbol_color_error (_pure_set_color $pure_color_prompt_on_error) set --local command_succeed 0 set --local symbol_color $symbol_color_success # default pure symbol color diff --git a/fish/.config/fish/functions/_pure_prompt_virtualenv.fish b/fish/.config/fish/functions/_pure_prompt_virtualenv.fish index 16c6ef1..6cb2ed6 100644 --- a/fish/.config/fish/functions/_pure_prompt_virtualenv.fish +++ b/fish/.config/fish/functions/_pure_prompt_virtualenv.fish @@ -1,7 +1,7 @@ function _pure_prompt_virtualenv --description "Display virtualenv directory" if test -n "$VIRTUAL_ENV" set --local virtualenv (basename "$VIRTUAL_ENV") - set --local virtualenv_color (_pure_get_var pure_color_virtualenv $pure_color_mute) + set --local virtualenv_color (_pure_set_color $pure_color_virtualenv) echo "$virtualenv_color$virtualenv" end diff --git a/fish/.config/fish/functions/_pure_set_color.fish b/fish/.config/fish/functions/_pure_set_color.fish new file mode 100644 index 0000000..c05769a --- /dev/null +++ b/fish/.config/fish/functions/_pure_set_color.fish @@ -0,0 +1,19 @@ +function _pure_set_color \ + --description 'Set color' \ + --argument-names var + + set --local color $var + # Backwards compatibility for colors defined as control sequencies instead of fish colors + if not string match --quiet --all --regex '\e\[[^m]*m' $color[1] + and set -q $color + set color $$var + end + + set --local result $color + if not string match --quiet --all --regex '\e\[[^m]*m' $result[1] + and not test -z $result[1] + set result (set_color $color) + end + + echo "$result" +end diff --git a/fish/.config/fish/functions/_pure_set_default.fish b/fish/.config/fish/functions/_pure_set_default.fish index 070ca90..69e6054 100644 --- a/fish/.config/fish/functions/_pure_set_default.fish +++ b/fish/.config/fish/functions/_pure_set_default.fish @@ -2,7 +2,7 @@ function _pure_set_default \ --description 'Set default value for configuration variable' \ --argument-names var default - if not set -q $var + if not set -q --universal $var set --universal $var $default end end