aboutsummaryrefslogtreecommitdiff
path: root/config/fish/functions
diff options
context:
space:
mode:
Diffstat (limited to 'config/fish/functions')
-rw-r--r--config/fish/functions/diff.fish3
-rw-r--r--config/fish/functions/fish_prompt.fish77
2 files changed, 80 insertions, 0 deletions
diff --git a/config/fish/functions/diff.fish b/config/fish/functions/diff.fish
new file mode 100644
index 0000000..eb6fe47
--- /dev/null
+++ b/config/fish/functions/diff.fish
@@ -0,0 +1,3 @@
+function diff
+ colordiff $argv;
+end
diff --git a/config/fish/functions/fish_prompt.fish b/config/fish/functions/fish_prompt.fish
new file mode 100644
index 0000000..0a39fe7
--- /dev/null
+++ b/config/fish/functions/fish_prompt.fish
@@ -0,0 +1,77 @@
+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
+ 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
+
+ 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)
+ end
+ end
+
+ case '*'
+
+ if not set -q __fish_prompt_cwd
+ set -g __fish_prompt_cwd (set_color $fish_color_cwd)
+ end
+
+ 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"
+ 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)
+ 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