fish-shell/share/tools/web_config/sample_prompts/sorin.fish
Fabian Homborg 9cfb1394bf sample_prompts/sorin: Add a safe way to determine merge status
Based on what __fish_git_prompt is doing.

See #5388.

[ci skip]
2018-12-06 16:15:11 +01:00

62 lines
1.9 KiB
Fish
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# name: Sorin
# author: Ivan Tham <ivanthamjunhoe@gmail.com>
function fish_prompt
test $SSH_TTY
and printf (set_color red)$USER(set_color brwhite)'@'(set_color yellow)(prompt_hostname)' '
test "$USER" = 'root'
and echo (set_color red)"#"
# Main
echo -n (set_color cyan)(prompt_pwd) (set_color red)''(set_color yellow)''(set_color green)' '
end
function fish_right_prompt
# last status
test $status != 0
and printf (set_color red)"⏎ "
if set -l git_dir (git rev-parse --git-dir 2>/dev/null)
# Magenta if branch detached else green
set -l branch (command git branch -qv | string match "\**")
string match -rq detached -- $branch
and set_color brmagenta
or set_color brgreen
git name-rev --name-only HEAD
# Merging state
test -f "$git_dir/MERGE_HEAD"
and printf ':'(set_color red)'merge'
printf ' '
# Symbols
if set -l count (command git rev-list --count --left-right $upstream...HEAD 2>/dev/null)
echo $count | read -l ahead behind
if test "$ahead" -gt 0
printf (set_color magenta)' '
end
if test "$behind" -gt 0
printf (set_color magenta)' '
end
end
for i in (git status --porcelain | string sub -l 2 | uniq)
switch $i
case "."
printf (set_color green)' '
case " D"
printf (set_color red)' '
case "*M*"
printf (set_color blue)' '
case "*R*"
printf (set_color brmagenta)' '
case "*U*"
printf (set_color bryellow)' '
case "??"
printf (set_color brwhite)' '
end
end
end
end