diff options
Diffstat (limited to '.config/zsh/.zshrc')
-rw-r--r-- | .config/zsh/.zshrc | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index 07092fa..23f8ac6 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -1,6 +1,62 @@ # Enable colors and change prompt: autoload -U colors && colors # Load colors -PS1='%{$fg[green]%}%~%{$fg[magenta]%}%b${vcs_info_msg_0_}%{$fg[blue]%} -> %{$reset_color%}' + +git_status(){ +if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then + gbranch=$(git branch --show-current) + + gstatus="" + gadded="no" + gwaiting="no" + + waiting_commits=$(git rev-list @{u}..@ --count 2> /dev/null) + + if [[ $waiting_commits -gt 0 ]]; then + gwaiting="yes" + gstatus+="⇡" + fi + + for i in $(git status --porcelain | tac); do + i=$(echo "$i" | sed 's/ *$//; s/^ *//' | cut -f1 -d " ") + + gsymbol="" + if [[ "$i" == "A"* ]]; then + if [[ $gadded == "no" ]]; then + gadded="yes" + gstatus+="+" + fi + i="${i:1}" + fi + + if [[ "$i" == "??" ]]; then + gsymbol="?" + elif [[ "$i" == "M" ]]; then + gsymbol="!" + elif [[ "$i" == "D" ]]; then + gsymbol="✘" + elif [[ "$i" == "R" ]]; then + gsymbol=">" + elif [[ "$i" == "C" ]]; then + gsymbol=">" + else + gsymbol="" + fi + + if [[ "$gstatus" == *"$gsymbol"* ]]; then + continue + else + gstatus+="$gsymbol" + fi + done + + # Output in the format: branch [status] + echo -n "$gbranch [$gstatus] " +else + echo -n "" +fi +} + +PS1='%{$fg[green]%}%~ %{$fg[magenta]%}$(git_status)%{$fg[blue]%}-> %{$reset_color%}' setopt autocd # Automatically cd into typed directory. stty stop undef # Disable ctrl-s to freeze terminal. setopt interactive_comments @@ -11,10 +67,6 @@ SAVEHIST=10000000 HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history" setopt inc_append_history -autoload -Uz vcs_info # enable vcs_info -precmd () { vcs_info } -zstyle ':vcs_info:*' formats ' %F{magenta}%b%u%f' # git(main) - # Load aliases and shortcuts if existent. [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc" |