diff --git a/themes/gitstatus/README.md b/themes/gitstatus/README.md new file mode 100644 index 0000000..556ee05 --- /dev/null +++ b/themes/gitstatus/README.md @@ -0,0 +1,14 @@ +## GitStatus + +![GitStatus](https://github.com/godfat/fish_prompt-gitstatus/raw/master/gitstatus.png) + +#### Characteristics + +* Displays host information in the command prompt when connected via ssh. + +* Displays git information in the command prompt when inside a git repository. + + - Shows current branch name. + - Shows * if working copy is dirty. + - Shows # if everything is staged. + - Shows no indicators if the working copy is clean. diff --git a/themes/gitstatus/fish_prompt.fish b/themes/gitstatus/fish_prompt.fish new file mode 100644 index 0000000..17e4b4c --- /dev/null +++ b/themes/gitstatus/fish_prompt.fish @@ -0,0 +1,35 @@ +# name: GitStatus +# Find latest version from: https://github.com/godfat/fish_prompt-gitstatus + +function _git_branch_name + echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||') +end + +function _git_status_symbol + set -l git_status (git status --porcelain ^/dev/null) + if test -n "$git_status" + # Is there anyway to preserve newlines so we can reuse $git_status? + if git status --porcelain ^/dev/null | grep '^.[^ ]' >/dev/null + echo '*' # dirty + else + echo '#' # all staged + end + else + echo '' # clean + end +end + +function _remote_hostname + if test $SSH_CONNECTION + echo (whoami)@(hostname) + end +end + +function fish_prompt + set -l cyan (set_color cyan) + set -l normal (set_color normal) + set -l cwd (set_color $fish_color_cwd)(prompt_pwd) + + echo -n (_remote_hostname) \ + $cwd $cyan(_git_status_symbol)(_git_branch_name)$normal'> ' +end