diff --git a/share/functions/fish_prompt.fish b/share/functions/fish_prompt.fish index aaa48c684..b4a350b8f 100644 --- a/share/functions/fish_prompt.fish +++ b/share/functions/fish_prompt.fish @@ -1,40 +1,27 @@ -# Set the default prompt command. Make sure that every terminal escape -# string has a newline before and after, so that fish will know how -# long it is. +# vim: set noet: +# +# Set the default prompt command. function fish_prompt --description "Write out the prompt" - - # 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 color_cwd + set -l suffix switch $USER - - case root toor - - 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) - end + 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 - - echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '# ' - - case '*' - - if not set -q __fish_prompt_cwd - set -g __fish_prompt_cwd (set_color $fish_color_cwd) - end - - echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '> ' - + set suffix '#' + case '*' + set color_cwd $fish_color_cwd + set suffix '>' end -end + echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix " +end diff --git a/share/tools/web_config/sample_prompts/classic.fish b/share/tools/web_config/sample_prompts/classic.fish index 64c2fb500..b092803e4 100644 --- a/share/tools/web_config/sample_prompts/classic.fish +++ b/share/tools/web_config/sample_prompts/classic.fish @@ -1,36 +1,24 @@ # name: Classic function fish_prompt --description "Write out the prompt" - - # 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 color_cwd + set -l suffix switch $USER - - case root toor - - 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) - end + 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 - - echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '# ' - - case '*' - - if not set -q __fish_prompt_cwd - set -g __fish_prompt_cwd (set_color $fish_color_cwd) - end - - echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '> ' - + set suffix '#' + case '*' + set color_cwd $fish_color_cwd + set suffix '>' end + + echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix " end diff --git a/share/tools/web_config/sample_prompts/classic_git.fish b/share/tools/web_config/sample_prompts/classic_git.fish index 299faa34a..aa4527f70 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 toor - - 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 diff --git a/share/tools/web_config/sample_prompts/classic_status.fish b/share/tools/web_config/sample_prompts/classic_status.fish index 4b062c5da..fe64f7934 100644 --- a/share/tools/web_config/sample_prompts/classic_status.fish +++ b/share/tools/web_config/sample_prompts/classic_status.fish @@ -1,7 +1,7 @@ # name: Classic + Status # author: David Frascone -function fish_prompt --description 'Write out the prompt' +function fish_prompt --description "Write out the prompt" # Save our status set -l last_status $status @@ -10,38 +10,25 @@ function fish_prompt --description 'Write out the prompt' printf "%s(%d)%s " (set_color red --bold) $last_status (set_color normal) end - # 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 user_prompt '>' + set -l color_cwd + set -l suffix switch $USER - # Set our root colors, if we're root :) - case root toor - set user_prompt '#' - 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) - end - end - case '*' - if not set -q __fish_prompt_cwd - set -g __fish_prompt_cwd (set_color $fish_color_cwd) - end + 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 - #printf '%s@%s %s%s%s# ' $USER $__fish_prompt_hostname "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" - #printf "LAST STATUS STRING: $last_status_string \n" - printf '%s@%s %s%s%s%s%s ' $USER $__fish_prompt_hostname "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" $user_prompt -end - -function fish_title - echo $_ ' ' (prompt_pwd) + echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix " end