|
|
|
|
@ -94,18 +94,12 @@ shrink_path () { |
|
|
|
|
(( tilde )) && dir=${dir/$HOME/\~} |
|
|
|
|
tree=(${(s:/:)dir}) |
|
|
|
|
( |
|
|
|
|
# unset chpwd_functions since we'll be calling `cd` and don't |
|
|
|
|
# want any side-effects (eg., if the user was using auto-ls) |
|
|
|
|
chpwd_functions=() |
|
|
|
|
# unset chpwd since even if chpwd_functions is (), zsh will |
|
|
|
|
# attempt to execute chpwd |
|
|
|
|
unfunction chpwd 2> /dev/null |
|
|
|
|
if [[ $tree[1] == \~* ]] { |
|
|
|
|
cd ${~tree[1]} |
|
|
|
|
cd -q ${~tree[1]} |
|
|
|
|
result=$tree[1] |
|
|
|
|
shift tree |
|
|
|
|
} else { |
|
|
|
|
cd / |
|
|
|
|
cd -q / |
|
|
|
|
} |
|
|
|
|
for dir in $tree; { |
|
|
|
|
if (( lastfull && $#tree == 1 )) { |
|
|
|
|
@ -122,7 +116,7 @@ shrink_path () { |
|
|
|
|
(( short )) && break |
|
|
|
|
done |
|
|
|
|
result+="/$part" |
|
|
|
|
cd $dir |
|
|
|
|
cd -q $dir |
|
|
|
|
shift tree |
|
|
|
|
} |
|
|
|
|
echo ${result:-/} |
|
|
|
|
|