- _autoenv_debug "Calling chpwd handler: PWD=$PWD"
-
- if (( $AUTOENV_DISABLED )); then
- _autoenv_debug "Disabled (AUTOENV_DISABLED)."
- return
- fi
-
- local env_file="$PWD/$AUTOENV_FILE_ENTER"
- _autoenv_debug "env_file: $env_file"
-
- # Handle leave event for previously sourced env files.
- if [[ $AUTOENV_HANDLE_LEAVE == 1 ]] && (( $#_autoenv_stack_entered )); then
- local prev_file prev_dir
- for prev_file in ${_autoenv_stack_entered}; do
- prev_dir=${prev_file:h}
- if ! [[ ${PWD}/ == ${prev_dir}/* ]]; then
- local env_file_leave=$prev_dir/$AUTOENV_FILE_LEAVE
- if _autoenv_check_authorized_env_file $env_file_leave; then
- _autoenv_source $env_file_leave leave $prev_dir
- fi
-
- # Unstash any autostashed stuff.
- if [[ -n "$functions[(I)autostash]" ]]; then
- varstash_dir=$prev_dir autounstash
- fi
-
- _autoenv_stack_entered_remove $prev_file
- fi
- done
- fi
-
- if ! [[ -f $env_file ]] && [[ $AUTOENV_LOOK_UPWARDS == 1 ]]; then
- env_file=$(_autoenv_get_file_upwards $PWD)
- if [[ -z $env_file ]]; then
- return
+ emulate -L zsh
+ (( $AUTOENV_DISABLED )) && return
+ local env_file="$PWD/$AUTOENV_FILE_ENTER"
+ if [[ $AUTOENV_HANDLE_LEAVE == 1 ]] && (( $#_autoenv_stack_entered )); then
+ local prev_file prev_dir
+ for prev_file in ${_autoenv_stack_entered}; do
+ prev_dir=${prev_file:h}
+ if ! [[ ${PWD}/ == ${prev_dir}/* ]]; then
+ local env_file_leave=$prev_dir/$AUTOENV_FILE_LEAVE
+ if _autoenv_check_authorized_env_file $env_file_leave; then
+ varstash_dir=$prev_dir _autoenv_source $env_file_leave leave $prev_dir
+ fi
+ (( $+functions[autostash] )) && varstash_dir=$prev_dir autounstash
+ _autoenv_stack_entered_remove $prev_file
+ fi
+ done