fish: switched to taktoa theme

This commit is contained in:
Marcel Kapfer 2017-08-10 09:43:18 +02:00
parent ff9a01ddc6
commit 2804aed8f4
2 changed files with 79 additions and 105 deletions

View file

@ -1,91 +0,0 @@
function fish_prompt --description 'Write out the prompt'
set -l last_status $status
# 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
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
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
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
commandline -f repaint ^/dev/null
end
end
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
# 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
set prompt_status ' ' (set_color $fish_color_status) "[$last_status]" "$normal"
end
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 (set_color $fish_color_user) "$USER" $normal @ (set_color $fish_color_host) "$__fish_prompt_hostname" $normal ' ' (set_color $color_cwd) (prompt_pwd) $normal (__fish_git_prompt) $normal $prompt_status "$mode_str" "> "
end

View file

@ -1,16 +1,81 @@
function fish_prompt --description 'Write out the prompt' # name: taktoa
# Just calculate these once, to save a few cycles when displaying the prompt # by taktoa (Remy Goldschmidt) <taktoa@gmail.com>
if not set -q __fish_prompt_hostname # License: public domain
set -g __fish_prompt_hostname (hostname -s)
end
if not set -q __fish_prompt_normal function _git_branch_name
set -g __fish_prompt_normal (set_color normal) echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end end
if not set -q __fish_prompt_cwd function _git_status_symbol
set -g __fish_prompt_cwd (set_color $fish_color_cwd) set -l git_status (git status --porcelain ^/dev/null)
end if test -n "$git_status"
if git status --porcelain ^/dev/null | grep '^.[^ ]' >/dev/null
echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) (__fish_vcs_prompt) "$__fish_prompt_normal" '> ' echo '*' # dirty
else
echo '#' # all staged
end
else
echo '' # clean
end
end
function _remote_hostname
echo (whoami)
if test -n "$SSH_CONNECTION"
echo " (ssh)"
end
end
function _get_tmux_window
tmux lsw | grep active | sed 's/\*.*$//g;s/: / /1' | awk '{ print $2 "-" $1 }' -
end
function _get_screen_window
set initial (screen -Q windows; screen -Q echo "")
set middle (echo $initial | sed 's/ /\n/g' | grep '\*' | sed 's/\*\$ / /g')
echo $middle | awk '{ print $2 "-" $1 }' -
end
function _is_multiplexed
set multiplexer ""
if test -z $TMUX
else
set multiplexer "tmux"
end
if test -z $WINDOW
else
set multiplexer "screen"
end
echo $multiplexer
end
function fish_prompt
set -l cyan (set_color cyan)
set -l brown (set_color brown)
set -l normal (set_color normal)
set -l arrow "λ"
set -l cwd (set_color $fish_color_cwd)(prompt_pwd)
set -l git_status (_git_status_symbol)(_git_branch_name)
if test -n "$git_status"
set git_status " $git_status"
end
set multiplexer (_is_multiplexed)
switch $multiplexer
case screen
set pane (_get_screen_window)
case tmux
set pane (_get_tmux_window)
end
if test -z $pane
set window ""
else
set window " ($pane)"
end
echo -n -s (_remote_hostname) ' ' $cwd $brown $window $cyan $git_status $normal ' ' $arrow ' '
end end