diff options
Diffstat (limited to 'share/tools/web_config/sample_prompts/classic_git.fish')
-rw-r--r-- | share/tools/web_config/sample_prompts/classic_git.fish | 96 |
1 files changed, 50 insertions, 46 deletions
diff --git a/share/tools/web_config/sample_prompts/classic_git.fish b/share/tools/web_config/sample_prompts/classic_git.fish index 0d91f5fe..aa4527f7 100644 --- a/share/tools/web_config/sample_prompts/classic_git.fish +++ b/share/tools/web_config/sample_prompts/classic_git.fish @@ -1,91 +1,95 @@ # name: Classic + Git # author: Kevin Ballard +# vim: set noet: function fish_prompt --description 'Write out the prompt' - set -l last_status $status - # Just calculate these once, to save a few cycles when displaying the prompt + # Just calculate this once, to save a few cycles when displaying the prompt if not set -q __fish_prompt_hostname set -g __fish_prompt_hostname (hostname|cut -d . -f 1) end - if not set -q __fish_prompt_normal - set -g __fish_prompt_normal (set_color normal) - end - + set -l normal (set_color normal) + + # Hack; fish_config only copies the fish_prompt function (see #736) if not set -q -g __fish_classic_git_functions_defined set -g __fish_classic_git_functions_defined function __fish_repaint_user --on-variable fish_color_user --description "Event handler, repaint when fish_color_user changes" if status --is-interactive - set -e __fish_prompt_user commandline -f repaint ^/dev/null end end function __fish_repaint_host --on-variable fish_color_host --description "Event handler, repaint when fish_color_host changes" if status --is-interactive - set -e __fish_prompt_host commandline -f repaint ^/dev/null end end function __fish_repaint_status --on-variable fish_color_status --description "Event handler; repaint when fish_color_status changes" if status --is-interactive - set -e __fish_prompt_status commandline -f repaint ^/dev/null end end - end - - set -l delim '>' - switch $USER - - case root - - if not set -q __fish_prompt_cwd - if set -q fish_color_cwd_root - set -g __fish_prompt_cwd (set_color $fish_color_cwd_root) - else - set -g __fish_prompt_cwd (set_color $fish_color_cwd) + function __fish_repaint_bind_mode --on-variable fish_key_bindings --description "Event handler; repaint when fish_key_bindings changes" + if status --is-interactive + commandline -f repaint ^/dev/null end end - case '*' - - if not set -q __fish_prompt_cwd - set -g __fish_prompt_cwd (set_color $fish_color_cwd) + # initialize our new variables + if not set -q __fish_classic_git_prompt_initialized + set -qU fish_color_user; or set -U fish_color_user -o green + set -qU fish_color_host; or set -U fish_color_host -o cyan + set -qU fish_color_status; or set -U fish_color_status red + set -U __fish_classic_git_prompt_initialized end + end + set -l color_cwd + set -l prefix + switch $USER + case root toor + if set -q fish_color_cwd_root + set color_cwd $fish_color_cwd_root + else + set color_cwd $fish_color_cwd + end + set suffix '#' + case '*' + set color_cwd $fish_color_cwd + set suffix '>' end set -l prompt_status if test $last_status -ne 0 - if not set -q __fish_prompt_status - set -g __fish_prompt_status (set_color $fish_color_status) - end - set prompt_status "$__fish_prompt_status [$last_status]$__fish_prompt_normal" + set prompt_status ' ' (set_color $fish_color_status) "[$last_status]" "$normal" end - if not set -q __fish_prompt_user - set -g __fish_prompt_user (set_color $fish_color_user) - end - if not set -q __fish_prompt_host - set -g __fish_prompt_host (set_color $fish_color_host) + set -l mode_str + switch "$fish_key_bindings" + case '*_vi_*' '*_vi' + # possibly fish_vi_key_bindings, or custom key bindings + # that includes the name "vi" + set mode_str ( + echo -n " " + switch $fish_bind_mode + case default + set_color --bold --background red white + echo -n "[N]" + case insert + set_color --bold green + echo -n "[I]" + case visual + set_color --bold magenta + echo -n "[V]" + end + set_color normal + ) end - echo -n -s "$__fish_prompt_user" "$USER" "$__fish_prompt_normal" @ "$__fish_prompt_host" "$__fish_prompt_hostname" "$__fish_prompt_normal" ' ' "$__fish_prompt_cwd" (prompt_pwd) (__fish_git_prompt) "$__fish_prompt_normal" "$prompt_status" "$delim" ' ' -end - - -# initialize our new variables -# in theory this would be in a fish_prompt event, but this file isn't sourced -# until the fish_prompt function is called anyway. -if not set -q __prompt_initialized_2 - set -U fish_color_user -o green - set -U fish_color_host -o cyan - set -U fish_color_status red - set -U __prompt_initialized_2 + echo -n -s (set_color $fish_color_user) "$USER" $normal @ (set_color $fish_color_host) "$__fish_prompt_hostname" $normal ' ' (set_color $color_cwd) (prompt_pwd) (__fish_git_prompt) $normal $prompt_status "$mode_str" "> " end |