diff --git a/share/config_interactive.fish.in b/share/config_interactive.fish.in index c15493753..83fee3c6b 100644 --- a/share/config_interactive.fish.in +++ b/share/config_interactive.fish.in @@ -161,6 +161,17 @@ set_default CDPATH . ~ functions -e set_default +# +# This event handler makes sure the prompt is repainted when +# fish_color_cwd changes value. Like all event handlers, it can't be +# autoloaded. +# + +function __fish_repaint --on-variable fish_color_cwd -d (N_ "Event handler, repaints the prompt when fish_color_cwd changes") + set -e __fish_prompt_cwd + commandline -f null +end + # # A few minor convenience functions # diff --git a/share/functions/fish_prompt.fish b/share/functions/fish_prompt.fish index 42666ff7e..bfded25ac 100644 --- a/share/functions/fish_prompt.fish +++ b/share/functions/fish_prompt.fish @@ -2,24 +2,21 @@ # string has a newline before and after, so that fish will know how # long it is. -# This event handler makes sure the prompt is repainted when fish_color_cwd changes value -function __fish_repaint --on-variable fish_color_cwd -d (N_ "Event handler, repaints the prompt when fish_color_cwd changes") - commandline -f null -end - function fish_prompt -d (N_ "Write out the prompt") # Just calculate these 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 prompt_color (set_color $fish_color_cwd) - printf '%s@%s %s%s%s> \n' $USER $__fish_prompt_hostname "$prompt_color" (prompt_pwd) "$__fish_prompt_normal" + if not set -q __fish_prompt_cwd + set -g __fish_prompt_cwd (set_color $fish_color_cwd) + end + + printf '%s@%s %s%s%s> \n' $USER $__fish_prompt_hostname "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" end