unset chpwd_functions before running cd to work with the path, to avoid side-effects if the user has set any chpwd_functions which cause output, such as is the case if the user is using auto-ls (#6830)

This commit is contained in:
dt-rush 2018-05-17 08:45:04 -04:00 committed by Marc Cornellà
parent e8aaab56b9
commit 3dab7e46e8

View file

@ -94,6 +94,11 @@ shrink_path () {
(( tilde )) && dir=${dir/$HOME/\~} (( tilde )) && dir=${dir/$HOME/\~}
tree=(${(s:/:)dir}) 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 unfunction chpwd 2> /dev/null
if [[ $tree[1] == \~* ]] { if [[ $tree[1] == \~* ]] {
cd ${~tree[1]} cd ${~tree[1]}