diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2020-08-11 12:28:44 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2020-08-11 12:50:41 +0000 |
| commit | b9532a4ac82ade874c93e0076134fc3a9e476676 (patch) | |
| tree | 9a5e46b053dce08814be9334891bb64aa1b66078 /.config/zsh | |
| parent | 8ad41fa7160ecc2afd7c509ac9405842e1588398 (diff) | |
Add zsh theme
Diffstat (limited to '.config/zsh')
| -rw-r--r-- | .config/zsh/.zshrc | 1 | ||||
| -rw-r--r-- | .config/zsh/custom/themes/0undefined.zsh-theme | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index a720792..df2e863 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -16,6 +16,7 @@ fi export ZSH="${XDG_CONFIG_HOME:-$HOME/.config}/oh-my-zsh" ZSH_THEME="0undefined" +ZSH_CUSTOM="${XDG_CONFIG_HOME:-$HOME/.config}/zsh/custom" # Uncomment the following line to use case-sensitive completion. CASE_SENSITIVE="true" diff --git a/.config/zsh/custom/themes/0undefined.zsh-theme b/.config/zsh/custom/themes/0undefined.zsh-theme new file mode 100644 index 0000000..05dacf8 --- /dev/null +++ b/.config/zsh/custom/themes/0undefined.zsh-theme @@ -0,0 +1,43 @@ +# vim: ft=zsh: ts=2: sts=2: expandtab +append_if_nz() { + # echo " -- $1 --" + if [[ "$1" == "0" || "$1" == "" ]]; then + echo -n "" + else + [ -z "$3" ] && echo -nE "${2}${1}" || echo -nE "$FG[${3}]${2}${1}%{$reset_color%}" + fi +} + +git_status() { + local STATUS CURRENT_COMMIT BRANCH AHEAD BEHIND STAGED CONFLICT CHANGHED DELETED UNTRACKED + + STATUS="$(git status --porcelain=v2 --ignore-submodules --branch 2> /dev/null)" + + [ $? = 0 ] || return + + CURRENT_COMMIT=$(echo "$STATUS" | sed -En '/^# branch.oid/p' | sed -Ee 's/# branch.oid (([a-f0-9]{8}).*|\((initial)\))$/\2\3/g') + BRANCH=$(echo "$STATUS" | awk '/^# branch.head/{print $3}') + AHEAD=$(append_if_nz "$(echo "$STATUS" | sed -n '/^# branch.ab/p' | sed -Ee 's/^.*\+([0-9]+).*/\1/g')" "\u2191") + BEHIND=$(append_if_nz "$(echo "$STATUS" | sed -n '/^# branch.ab/p' | sed -Ee 's/^.*-([0-9]+).*/\1/g')" "\u2193") + STAGED=$(append_if_nz "$(echo "$STATUS" | sed -En '/^[0-9]+ (A|M). /p' | wc -l)" "+" "046") # green + CONFLICT=$(append_if_nz "$(echo "$STATUS" | sed -En '/^u /p' | wc -l)" "!" "009") # red + CHANGED=$(append_if_nz "$(echo "$STATUS" | sed -En '/^[0-9]+ .M /p' | wc -l)" "~" "081") # cyan + RENAMED=$(append_if_nz "$(echo "$STATUS" | sed -En '/^[0-9]+ (R.|.R) /p' | wc -l)" "" "226") # YELLOW + DELETED=$(append_if_nz "$(echo "$STATUS" | sed -En '/^[0-9]+ .D /p' | wc -l)" "×" "248") # gray + UNTRACKED=$(if [ "$(echo "$STATUS" | sed -En '/^\? /p' | wc -l)" != "0" ] ; then echo "…"; fi) # ""; fi) + + [ "$BRANCH" == "(detached)" ] || [ "$CURRENT_COMMIT" == "initial" ] && BRANCH=":$CURRENT_COMMIT" + + RES="${AHEAD}${BEHIND}${STAGED}${CONFLICT}${CHANGED}${RENAMED}${DELETED}${UNTRACKED}" + + # Are we dirty? + [ -z "$RES" ] && RES="$FG[118]${BRANCH}%{$reset_color%}" || RES="$FG[228]${BRANCH}%{$reset_color%}|${RES}" + + echo -ne "(${RES}) " +} + +PROMPT='%(?..(%?%) )' +if [ -n "$SSH_CLIENT" ]; then + PROMPT+="$FG[251][%{$reset_color%}$FG[081]%n%{$reset_color%}@$FG[092]%M%{$reset_color%}$FG[251]]%{$reset_color%} " +fi +PROMPT+='$FG[039]%c%{$reset_color%} $(git_status)%(!.#.$) ' |
