Fish updates to pure shell

This commit is contained in:
Colin Powell
2020-01-20 21:50:03 -05:00
parent 5d03c366df
commit 164bfebb83
16 changed files with 87 additions and 25 deletions

View File

@ -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 ()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,3 +1,3 @@
function _pure_prompt_ending
echo "$pure_color_normal "
echo (set_color normal)" "
end

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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