mirror of
https://github.com/oh-my-fish/oh-my-fish.git
synced 2025-02-02 21:36:15 +08:00
160 lines
4.6 KiB
Fish
160 lines
4.6 KiB
Fish
# TODO: color definitions
|
||
# TODO: elapsed time segment
|
||
# TODO: configurable pwd_style
|
||
|
||
function __budspencer_is_git_ahead -d "Check if there are unpushed commits"
|
||
echo (command git status -s -b ^/dev/null | grep ahead)
|
||
end
|
||
|
||
function __budspencer_is_git_behind -d "Check if there are unpushed commits"
|
||
echo (command git status -s -b ^/dev/null | grep behind)
|
||
end
|
||
|
||
function __budspencer_is_git_added -d "Check if there are added files"
|
||
echo (command git status -s -b ^/dev/null | grep "^A")
|
||
end
|
||
|
||
function __budspencer_is_git_deleted -d "Check if there are deleted files"
|
||
echo (command git status -s -b ^/dev/null | grep "^.D")
|
||
end
|
||
|
||
function __budspencer_is_git_changed -d "Check if there are changed files"
|
||
echo (command git status -s -b ^/dev/null | grep "^.M")
|
||
end
|
||
|
||
function __budspencer_is_git_uncomitted -d "Check if there are uncommited changes"
|
||
echo (command git status -s -b ^/dev/null | grep "^??")
|
||
end
|
||
|
||
function __budspencer_is_git_stashed -d "Check if there are stashed commits"
|
||
echo (command git stash list ^/dev/null)
|
||
end
|
||
|
||
if set -q -x $PWDSTYLE
|
||
set -x PWDSTYLE short long none
|
||
end
|
||
set pwd_style $PWDSTYLE[1]
|
||
function fish_pwd_toggle_cm --description "Toggles style of pwd segment, press space bar in NORMAL mode"
|
||
for i in (seq 1 (count $PWDSTYLE))
|
||
if test $PWDSTYLE[$i] = $pwd_style
|
||
set pwd_style $PWDSTYLE[(math $i%(count $PWDSTYLE)+1)]
|
||
commandline -f repaint
|
||
break
|
||
end
|
||
end
|
||
end
|
||
bind -M default ' ' fish_pwd_toggle_cm
|
||
|
||
function fish_pwd_prompt_cm --description "Displays the present working directory"
|
||
switch $fish_bind_mode
|
||
case default
|
||
set_color blue
|
||
echo -n ""
|
||
set_color normal
|
||
set_color --background blue 000
|
||
case insert
|
||
set_color yellow
|
||
echo -n ""
|
||
set_color normal
|
||
set_color --background yellow 000
|
||
case visual
|
||
set_color magenta
|
||
echo -n ""
|
||
set_color normal
|
||
set_color --background magenta 000
|
||
end
|
||
switch $pwd_style
|
||
case none
|
||
echo -n ' '
|
||
case short
|
||
echo -n ' '(prompt_pwd)' '
|
||
case long
|
||
echo -n ' '$PWD' ' # | sed "s|$HOME|~|"
|
||
end
|
||
set_color normal
|
||
end
|
||
|
||
function fish_right_prompt -d "Write out the right prompt of the budspencer theme"
|
||
# Init colors
|
||
|
||
set -l fcol_black (set_color 000000)
|
||
set -l fcol_base03 (set_color -o 002b36)
|
||
set -l fcol_base02 (set_color -o 073642)
|
||
set -l fcol_base01 (set_color -o 586e75)
|
||
set -l fcol_base00 (set_color -o 657b83)
|
||
set -l fcol_base0 (set_color -o 839496)
|
||
set -l fcol_base1 (set_color -o 93a1a1)
|
||
set -l fcol_base2 (set_color -o eee8d5)
|
||
set -l fcol_base3 (set_color -o fdf6e3)
|
||
set -l fcol_yellow (set_color -o b58900)
|
||
set -l fcol_orange (set_color -o cb4b16)
|
||
set -l fcol_red (set_color -o red)
|
||
set -l fcol_magenta (set_color -o d33682)
|
||
set -l fcol_violet (set_color -o 6c71c4)
|
||
set -l fcol_blue (set_color -o 268bd2)
|
||
set -l fcol_blue (set_color -o 268bd2)
|
||
set -l fcol_cyan (set_color -o 2aa198)
|
||
set -l fcol_green (set_color -o 859900)
|
||
set -l bcol_base03 (set_color -b 002b36)
|
||
set -l bcol_base02 (set_color -b 073642)
|
||
set -l bcol_base01 (set_color -b 586e75)
|
||
set -l bcol_base00 (set_color -b 657b83)
|
||
set -l bcol_base0 (set_color -b 839496)
|
||
set -l bcol_base1 (set_color -b 93a1a1)
|
||
set -l bcol_base2 (set_color -b eee8d5)
|
||
set -l bcol_base3 (set_color -b fdf6e3)
|
||
set -l bcol_yellow (set_color -b b58900)
|
||
set -l bcol_orange (set_color -b cb4b16)
|
||
set -l bcol_red (set_color -b dc322f)
|
||
set -l bcol_magenta (set_color -b d33682)
|
||
set -l bcol_violet (set_color -b 6c71c4)
|
||
set -l bcol_blue (set_color -b 268bd2)
|
||
set -l bcol_cyan (set_color -b 2aa198)
|
||
set -l bcol_green (set_color -b 859900)
|
||
|
||
# Segments
|
||
|
||
# git
|
||
set -l ps_git ""
|
||
if test -n (__budspencer_is_git_ahead)
|
||
set ps_git $fcol_yellow" ↑"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_behind)
|
||
set ps_git $ps_git$fcol_yellow" ↓"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_added)
|
||
set ps_git $ps_git$fcol_green" +"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_deleted)
|
||
set ps_git $ps_git$fcol_red" –"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_changed)
|
||
set ps_git $ps_git$fcol_blue" ✱"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_uncomitted)
|
||
set ps_git $ps_git$fcol_base3" ●"
|
||
end
|
||
|
||
if test -n (__budspencer_is_git_stashed)
|
||
set ps_git $ps_git$fcol_cyan" ✭"
|
||
end
|
||
|
||
if test -n "$ps_git"
|
||
set ps_git $fcol_base02""$bcol_base02""$ps_git
|
||
end
|
||
|
||
# pwd
|
||
set -l ps_pwd ""
|
||
if test "$fish_key_bindings" = "fish_vi_key_bindings" -o "$fish_key_bindings" = "my_fish_key_bindings"
|
||
set ps_pwd (fish_pwd_prompt_cm)
|
||
end
|
||
|
||
echo -n $ps_git $ps_pwd
|
||
set_color normal
|
||
end
|