a little bit of config refactoring for zsh, more to come
This commit is contained in:
parent
2f6b8376f6
commit
0b2e8cf84d
1 changed files with 16 additions and 20 deletions
36
zshrc
36
zshrc
|
@ -64,13 +64,13 @@ bindkey -s '^j' '^atime ^m' # ctrl + j
|
||||||
# }}}
|
# }}}
|
||||||
# {{{ prompt
|
# {{{ prompt
|
||||||
prompt_nl=$'\n'
|
prompt_nl=$'\n'
|
||||||
prompt_ln1='[ %(!.%F{1}.%F{0})%n%f %m:%F{0}%d%f ]'
|
prompt_ln1='[ %(!.%F{red}.%F{black})%n%f %m:%F{black}%d%f ]'
|
||||||
prompt_ln2='%(!.%F{1}.%F{0})>%f '
|
prompt_ln2='%(!.%F{red}.%F{black})>%f '
|
||||||
prompt_state="$XDG_RUNTIME_DIR/zsh_rprompt_$$.tmp"
|
prompt_state="$XDG_RUNTIME_DIR/zsh_gitstatus_$$.tmp"
|
||||||
PROMPT="$prompt_ln1$prompt_nl$prompt_ln2"
|
PROMPT="$prompt_ln1$prompt_nl$prompt_ln2"
|
||||||
PROMPT2='%b%f%_%F{2}>%f%b '
|
PROMPT2='%b%f%_%F{green}>%f%b '
|
||||||
PROMPT3='%b%f?%F{2}#%f%b '
|
PROMPT3='%b%f?%F{green}#%f%b '
|
||||||
PROMPT4='%b%f+%N:%i%F{2}>%f%b '
|
PROMPT4='%b%f+%N:%i%F{green}>%f%b '
|
||||||
precmd.title() {
|
precmd.title() {
|
||||||
case ${TERM} in
|
case ${TERM} in
|
||||||
xterm*|rxvt*)
|
xterm*|rxvt*)
|
||||||
|
@ -98,26 +98,22 @@ precmd.git()
|
||||||
precmd.is_git_repo || return 0
|
precmd.is_git_repo || return 0
|
||||||
|
|
||||||
local raw_status=$(git status --porcelain -bu 2>/dev/null)
|
local raw_status=$(git status --porcelain -bu 2>/dev/null)
|
||||||
local branch_info full_status IFS=
|
local branch_info full_status git_status IFS=
|
||||||
local git_status=''
|
local staged_count=0 unstaged_count=0 untracked_count=0 unmerged_count=0
|
||||||
local staged_count=0
|
|
||||||
local unstaged_count=0
|
|
||||||
local untracked_count=0
|
|
||||||
local unmerged_count=0
|
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
[[ $line[1,2] == '##' ]] && branch_info=$line[4,-1]
|
[[ $line[1,2] == '##' ]] && branch_info=$line[4,-1]
|
||||||
[[ $line[1,2] == '??' ]] && (( untracked_count++ ))
|
[[ $line[1,2] == '??' ]] && (( untracked_count++ ))
|
||||||
[[ $line[1,2] =~ .[MD] ]] && (( unstaged_count++ ))
|
[[ $line[1,2] =~ .[MD] ]] && (( unstaged_count++ ))
|
||||||
[[ $line[1,2] =~ [MDARC]. ]] && (( staged_count++ ))
|
[[ $line[1,2] =~ [MDARC]. ]] && (( staged_count++ ))
|
||||||
[[ $line[1,2] =~ (U[ADU]|A[AU]|D[DU]) ]] && (( unmerged_count++ ))
|
[[ $line[1,2] =~ (U[ADU]|A[AU]|D[DU]) ]] && (( unmerged_count++ ))
|
||||||
done <<< "${raw_status}"
|
done <<< "${raw_status}"
|
||||||
|
|
||||||
(( unstaged_count )) && git_status+="%F{5}~$unstaged_count"
|
(( unstaged_count )) && git_status+="%F{yellow}~$unstaged_count"
|
||||||
(( staged_count )) && git_status+="%F{4}+$staged_count"
|
(( staged_count )) && git_status+="%F{blue}+$staged_count"
|
||||||
(( untracked_count )) && git_status+="%F{1}-$untracked_count"
|
(( untracked_count )) && git_status+="%F{red}-$untracked_count"
|
||||||
(( unmerged_count )) && git_status+="%F{9}*$unmerged_count"
|
(( unmerged_count )) && git_status+="%F{magenta}*$unmerged_count"
|
||||||
[[ -z $git_status ]] && git_status="%F{2}ok"
|
[[ -z $git_status ]] && git_status="%F{green}ok"
|
||||||
|
|
||||||
printf ' { %s | %s%%f }' $branch_info $git_status
|
printf ' { %s | %s%%f }' $branch_info $git_status
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue