fish: switched to taktoa theme
This commit is contained in:
parent
ff9a01ddc6
commit
2804aed8f4
2 changed files with 79 additions and 105 deletions
|
@ -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
|
|
|
@ -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
|
Loading…
Reference in a new issue