From 2aa689724cb12f15b460e67bf4b9be544cb807fc Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Sun, 22 Jun 2025 08:52:40 +0200 Subject: [PATCH] XCHG tab to space --- smd.zsh-theme | 73 +++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 37 deletions(-) diff --git a/smd.zsh-theme b/smd.zsh-theme index 5aa15d8..3ad30b3 100644 --- a/smd.zsh-theme +++ b/smd.zsh-theme @@ -1,4 +1,4 @@ -# smd.zsh-theme, based on smt.zsh-theme, based on dogenpunk by Matthew Nelson. +# smd.zsh-theme by Thomas Kuschel, based on smt.zsh-theme, based on dogenpunk by Matthew Nelson. MODE_INDICATOR="%{$fg_bold[red]%}❮%{$reset_color%}%{$fg[red]%}❮❮%{$reset_color%}" local return_status="%{$fg[red]%}%(?..%?⏎)%{$reset_color%} " @@ -21,7 +21,7 @@ ZSH_THEME_GIT_PROMPT_SHA_BEFORE="➤ %{$fg_bold[yellow]%}" ZSH_THEME_GIT_PROMPT_SHA_AFTER="%{$reset_color%}" function prompt_char() { - command git branch &>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" || echo "%{$fg[cyan]%}◯%{$reset_color%}" + command git branch &>/dev/null && echo "%{$fg[green]%}±%{$reset_color%}" || echo "%{$fg[cyan]%}◯%{$reset_color%}" } # Colors vary depending on time lapsed. @@ -33,49 +33,48 @@ ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL="%{$fg[cyan]%}" # Determine the time since last commit. If branch is clean, # use a neutral color, otherwise colors will vary according to time. function git_time_since_commit() { - local COLOR MINUTES HOURS DAYS SUB_HOURS SUB_MINUTES - local last_commit now seconds_since_last_commit + local COLOR MINUTES HOURS DAYS SUB_HOURS SUB_MINUTES + local last_commit now seconds_since_last_commit - # Only proceed if there is actually a commit - if ! last_commit=$(command git -c log.showSignature=false log --pretty=format:'%at' -1 2>/dev/null); then - echo "[$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL~%{$reset_color%}]" - return - fi + # Only proceed if there is actually a commit + if ! last_commit=$(command git -c log.showSignature=false log --pretty=format:'%at' -1 2>/dev/null); then + echo "[$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL~%{$reset_color%}]" + return + fi - # Totals - now=$(date +%s) - seconds_since_last_commit=$(( now - last_commit )) - MINUTES=$(( seconds_since_last_commit / 60 )) - HOURS=$(( MINUTES / 60 )) + # Totals + now=$(date +%s) + seconds_since_last_commit=$(( now - last_commit )) + MINUTES=$(( seconds_since_last_commit / 60 )) + HOURS=$(( MINUTES / 60 )) - # Sub-hours and sub-minutes - DAYS=$(( HOURS / 24 )) - SUB_HOURS=$(( HOURS % 24 )) - SUB_MINUTES=$(( MINUTES % 60 )) + # Sub-hours and sub-minutes + DAYS=$(( HOURS / 24 )) + SUB_HOURS=$(( HOURS % 24 )) + SUB_MINUTES=$(( MINUTES % 60 )) - if [[ -z "$(command git status -s 2>/dev/null)" ]]; then - COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" - else - if [[ "$MINUTES" -gt 30 ]]; then - COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" - elif [[ "$MINUTES" -gt 10 ]]; then - COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" - else - COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" - fi - fi + if [[ -z "$(command git status -s 2>/dev/null)" ]]; then + COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_NEUTRAL" + else + if [[ "$MINUTES" -gt 30 ]]; then + COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_LONG" + elif [[ "$MINUTES" -gt 10 ]]; then + COLOR="$ZSH_THEME_GIT_TIME_SHORT_COMMIT_MEDIUM" + else + COLOR="$ZSH_THEME_GIT_TIME_SINCE_COMMIT_SHORT" + fi + fi - if [[ "$HOURS" -gt 24 ]]; then - echo "[${COLOR}${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]" - elif [[ "$MINUTES" -gt 60 ]]; then - echo "[${COLOR}${HOURS}h${SUB_MINUTES}m%{$reset_color%}]" - else - echo "[${COLOR}${MINUTES}m%{$reset_color%}]" - fi + if [[ "$HOURS" -gt 24 ]]; then + echo "[${COLOR}${DAYS}d${SUB_HOURS}h${SUB_MINUTES}m%{$reset_color%}]" + elif [[ "$MINUTES" -gt 60 ]]; then + echo "[${COLOR}${HOURS}h${SUB_MINUTES}m%{$reset_color%}]" + else + echo "[${COLOR}${MINUTES}m%{$reset_color%}]" + fi } PROMPT=' %{$fg[cyan]%}%m%{$reset_color%} 福 %{$fg[cyan]%}%~ %{$reset_color%}$(git_prompt_short_sha)$(git_prompt_info) %{$fg[red]%}%!%{$reset_color%} $(prompt_char) ❯ ' - RPROMPT='${return_status}$(git_time_since_commit)$(git_prompt_status)%{$reset_color%}'