fish: Add fish prompt for customization
Some checks failed
Build Dotfile Bundles / bundle (push) Has been cancelled
Some checks failed
Build Dotfile Bundles / bundle (push) Has been cancelled
Signed-off-by: Nicholas Mello <nick@nmello.dev>
This commit is contained in:
64
fish/functions/fish_prompt.fish
Normal file
64
fish/functions/fish_prompt.fish
Normal file
@@ -0,0 +1,64 @@
|
||||
function fish_prompt
|
||||
set -l last_status $status
|
||||
set -l cwd (prompt_pwd)
|
||||
set -l jobs_count (count (jobs -p))
|
||||
|
||||
# --- Base path ---
|
||||
set_color cyan
|
||||
echo -n $cwd
|
||||
|
||||
# --- Git Info ---
|
||||
if command -sq git
|
||||
if git rev-parse --is-inside-work-tree >/dev/null 2>&1
|
||||
set -l branch (git symbolic-ref --short HEAD 2>/dev/null; or git rev-parse --short HEAD)
|
||||
|
||||
# Ahead / behind vs upstream
|
||||
set -l ahead 0
|
||||
set -l behind 0
|
||||
set -l counts (git rev-list --left-right --count @{upstream}...HEAD 2>/dev/null)
|
||||
|
||||
if test -n "$counts"
|
||||
set behind (echo $counts | awk '{print $1}')
|
||||
set ahead (echo $counts | awk '{print $2}')
|
||||
end
|
||||
|
||||
# Dirty working tree?
|
||||
git diff --quiet --ignore-submodules HEAD >/dev/null 2>&1
|
||||
or set -l dirty "*"
|
||||
|
||||
set_color magenta
|
||||
echo -n " ["$branch
|
||||
|
||||
if test $ahead -gt 0
|
||||
echo -n " ↑$ahead"
|
||||
end
|
||||
|
||||
if test $behind -gt 0
|
||||
echo -n " ↓$behind"
|
||||
end
|
||||
|
||||
if test -n "$dirty"
|
||||
echo -n " $dirty"
|
||||
end
|
||||
|
||||
echo -n "]"
|
||||
end
|
||||
end
|
||||
|
||||
if test $jobs_count -gt 0
|
||||
set_color yellow
|
||||
echo -n " [$jobs_count jobs]"
|
||||
set_color normal
|
||||
end
|
||||
|
||||
# --- Exit status ---
|
||||
if test $last_status -ne 0
|
||||
set_color red
|
||||
echo -n " [$last_status]"
|
||||
end
|
||||
|
||||
# --- Final prompt character ---
|
||||
set_color green
|
||||
echo -n "> "
|
||||
set_color normal
|
||||
end
|
||||
Reference in New Issue
Block a user