diff --git a/themes/idan/fish_prompt.fish b/themes/idan/fish_prompt.fish new file mode 100644 index 0000000..874b092 --- /dev/null +++ b/themes/idan/fish_prompt.fish @@ -0,0 +1,50 @@ +# Display the following bits on the left: +# * Virtualenv name (if applicable, see https://github.com/adambrenecki/virtualfish) +# * Current directory name +# * Git branch and dirty state (if inside a git repo) + +function _git_branch_name + echo (git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||') +end + +function _is_git_dirty + echo (git status -s --ignore-submodules=dirty ^/dev/null) +end + +function fish_prompt + set -l cyan (set_color -o cyan) + set -l yellow (set_color -o yellow) + set -l red (set_color -o red) + set -l blue (set_color -o blue) + set -l green (set_color -o green) + set -l normal (set_color normal) + + set -l cwd $cyan(basename (prompt_pwd)) + + # output the prompt, left to right + + # Display [venvname] if in a virtualenv + if set -q VIRTUAL_ENV + echo -n -s (set_color -b cyan black) '[' (basename "$VIRTUAL_ENV") ']' $normal ' ' + end + + # Display the current directory name + echo -n -s $cwd $normal + + + # Show git branch and dirty state + if [ (_git_branch_name) ] + set -l git_branch '(' (_git_branch_name) ')' + + if [ (_is_git_dirty) ] + set git_info $red $git_branch " ★ " + else + set git_info $green $git_branch + end + echo -n -s ' · ' $git_info $normal + end + + # Terminate with a nice prompt char + echo -n -s ' ⟩ ' $normal + +end diff --git a/themes/idan/fish_right_prompt.fish b/themes/idan/fish_right_prompt.fish new file mode 100644 index 0000000..6d693dd --- /dev/null +++ b/themes/idan/fish_right_prompt.fish @@ -0,0 +1,17 @@ +# Display the compressed current working path on the right +# If the previous command returned any kind of error code, display that too + +function fish_right_prompt + set -l last_status $status + set -l cyan (set_color -o cyan) + set -l red (set_color -o red) + set -l normal (set_color normal) + + echo -n -s $cyan (prompt_pwd) + + if test $last_status -ne 0 + set_color red + printf ' %d' $last_status + set_color normal + end +end