Переглянути джерело

Fish updates to pure shell

Colin Powell 5 роки тому
батько
коміт
164bfebb83

+ 30 - 10
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 (❮)

+ 14 - 0
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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"

+ 2 - 2
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

+ 9 - 0
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

+ 1 - 1
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

+ 1 - 1
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

+ 2 - 2
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"

+ 2 - 2
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

+ 1 - 1
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

+ 19 - 0
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

+ 1 - 1
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