From bcd732aacc6a1bad700c8ceca5974656cbfc3cf2 Mon Sep 17 00:00:00 2001 From: Yigit Sever Date: Thu, 11 Nov 2021 18:36:14 +0300 Subject: fish: welcome! --- .config/fish/functions/fish_right_prompt.fish | 75 +++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .config/fish/functions/fish_right_prompt.fish (limited to '.config/fish/functions/fish_right_prompt.fish') diff --git a/.config/fish/functions/fish_right_prompt.fish b/.config/fish/functions/fish_right_prompt.fish new file mode 100644 index 0000000..0dbcc37 --- /dev/null +++ b/.config/fish/functions/fish_right_prompt.fish @@ -0,0 +1,75 @@ +function fish_right_prompt -d "Write out the right prompt" + + if not set -q -g __fish_right_prompt_functions_defined + set -g __fish_right_prompt_functions_defined + function _git_branch_name + set -l branch (git symbolic-ref --quiet HEAD 2>/dev/null) + if set -q branch[1] + echo (string replace -r '^refs/heads/' '' $branch) + else + echo (git rev-parse --short HEAD 2>/dev/null) + end + end + + function _is_git_dirty + not command git diff-index --cached --quiet HEAD -- &>/dev/null + or not command git diff --no-ext-diff --quiet --exit-code &>/dev/null + end + + function _is_git_repo + type -q git + or return 1 + git rev-parse --git-dir >/dev/null 2>&1 + end + + function _hg_branch_name + echo (hg branch 2>/dev/null) + end + + function _is_hg_dirty + set -l stat (hg status -mard 2>/dev/null) + test -n "$stat" + end + + function _is_hg_repo + fish_print_hg_root >/dev/null + end + + function _repo_branch_name + _$argv[1]_branch_name + end + + function _is_repo_dirty + _is_$argv[1]_dirty + end + + function _repo_type + if _is_hg_repo + echo hg + return 0 + else if _is_git_repo + echo git + return 0 + end + return 1 + end + end + + set -l yellow (set_color -o yellow) + set -l red (set_color -o red) + set -l blue (set_color -o blue) + + set -l repo_info + if set -l repo_type (_repo_type) + set -l repo_branch $red(_repo_branch_name $repo_type) + set repo_info "$blue $repo_type:($repo_branch$blue)" + + if _is_repo_dirty $repo_type + set -l dirty "$yellow ✗" + set repo_info "$repo_info$dirty" + end + end + + set hour $blue(date '+%R') + echo -n -s $repo_info ' ' $hour +end -- cgit v1.2.3-61-g4310