aboutsummaryrefslogtreecommitdiff
path: root/.config/zsh/.zshrc
diff options
context:
space:
mode:
Diffstat (limited to '.config/zsh/.zshrc')
-rw-r--r--.config/zsh/.zshrc62
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"