From eb3c99c54e57a13e3fd7ee1f3e7504b6327c807f Mon Sep 17 00:00:00 2001 From: axel Date: Sun, 19 Nov 2006 07:21:47 +1000 Subject: [PATCH] Move the event handler for fish_color_cwd to init file, so it is not autounloaded. Also cache output of call to set_color command to improve performance a bit. darcs-hash:20061118212147-ac50b-b0f44cca2acf7465dd9ff071aa35a3ac81f0615f.gz --- share/config_interactive.fish.in | 11 +++++++++++ share/functions/fish_prompt.fish | 15 ++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) 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