diff options
| author | kj_sh604 | 2025-12-28 23:23:02 -0500 |
|---|---|---|
| committer | kj_sh604 | 2025-12-28 23:23:02 -0500 |
| commit | f3b379dcdde48b80dc59664616157d4e38f6c447 (patch) | |
| tree | 8a95a9bd23643fbb5a720b74567034506640101e | |
| parent | c7272187cb46046dfe32fec63254013b161c65ea (diff) | |
refactor: better fish-style pwd for zsh
| -rw-r--r-- | .config/shell/git-prompts/kj_sh604-with-attempt-at-fish-style-pwd.zsh | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/.config/shell/git-prompts/kj_sh604-with-attempt-at-fish-style-pwd.zsh b/.config/shell/git-prompts/kj_sh604-with-attempt-at-fish-style-pwd.zsh index 8584150..d704782 100644 --- a/.config/shell/git-prompts/kj_sh604-with-attempt-at-fish-style-pwd.zsh +++ b/.config/shell/git-prompts/kj_sh604-with-attempt-at-fish-style-pwd.zsh @@ -18,4 +18,47 @@ ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[blue]%}U" ZSH_THEME_GIT_PROMPT_STASHED="%{$fg[blue]%}☐" ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg_bold[green]%}✓" -PROMPT=$'%F{cyan}${${${:-$(printf "/%.1s" ${(s./.)PWD:h})/${PWD:t}}/\\/\\///}//\\%/%%}%f %F{242}$(gitprompt)%f%(12V.%F{242}%12v%f .)%(?.%F{white}.%F{white})%%%f ' +__fish_pwd() { + local pwd="${PWD/#$HOME/~}" + + if [[ "$pwd" == "~" ]]; then + echo "~" + return + fi + + local -a parts + + parts=("${(@s:/:)pwd}") + + if [[ -z "${parts[1]}" ]]; then + parts=("${parts[@]:1}") + local prefix="/" + else + local prefix="" + fi + + if (( ${#parts[@]} <= 1 )); then + echo "${prefix}${parts[1]}" + return + fi + + local result="" + local i + + for (( i=1; i < ${#parts[@]}; i++ )); do + local part="${parts[$i]}" + if [[ "$part" == "~" ]]; then + result+="~/" + elif [[ "$part" == .* ]]; then + result+="${part:0:2}/" + else + result+="${part:0:1}/" + fi + done + + result+="${parts[-1]}" + + echo "${prefix}${result}" +} + +PROMPT=$'%F{cyan}$(__fish_pwd)%f %F{242}$(gitprompt)%f%(12V.%F{242}%12v%f .)%(?.%F{white}.%F{white})%%%f '
\ No newline at end of file |
