diff --git a/autoenv/autoenv.zsh b/autoenv/autoenv.zsh index c41ff61..7bb0e79 100644 --- a/autoenv/autoenv.zsh +++ b/autoenv/autoenv.zsh @@ -134,9 +134,8 @@ _autoenv_entered=() # Per-directory shell state snapshots for computing enter/exit diffs. typeset -gA _autoenv_snap_pre_funcs _autoenv_snap_pre_aliases _autoenv_snap_pre_env -typeset -gA _autoenv_snap_pre_path _autoenv_snap_pre_ps1 _autoenv_snap_pre_bindkeys +typeset -gA _autoenv_snap_pre_path _autoenv_snap_pre_ps1 typeset -gA _autoenv_snap_diff_funcs _autoenv_snap_diff_aliases _autoenv_snap_diff_env -typeset -gA _autoenv_snap_new_bindkeys # Snapshot shell state before .enter modifications. Call in .enter BEFORE # sourcing scripts: _autoenv_snap_pre ${0:A:h} @@ -147,7 +146,6 @@ _autoenv_snap_pre() { _autoenv_snap_pre_env[$dir]="${(F)$(typeset +gx 2>/dev/null)}" _autoenv_snap_pre_path[$dir]="$PATH" _autoenv_snap_pre_ps1[$dir]="$PS1" - _autoenv_snap_pre_bindkeys[$dir]="$(bindkey -L)" } # Snapshot shell state after .enter modifications and compute the diff. @@ -170,20 +168,6 @@ _autoenv_snap_post() { _autoenv_snap_diff_funcs[$dir]="${(pj:\n:)diff_funcs}" _autoenv_snap_diff_aliases[$dir]="${(pj:\n:)diff_aliases}" _autoenv_snap_diff_env[$dir]="${(pj:\n:)diff_env}" - # Diff bindkeys: find truly new bindings (key sequence didn't exist in pre). - # Changed bindings (same key, different widget) are restored via eval of pre. - local -a pre_bk=("${(f)_autoenv_snap_pre_bindkeys[$dir]}") - typeset -A pre_keyspecs - local bkline - for bkline in "${pre_bk[@]}"; do - [[ -n "$bkline" ]] && pre_keyspecs[${bkline% *}]=1 - done - local -a new_bk=() - for bkline in "${(f)$(bindkey -L)}"; do - (( ${pre_bk[(Ie)$bkline]} )) && continue - (( ${+pre_keyspecs[${bkline% *}]} )) || new_bk+="$bkline" - done - _autoenv_snap_new_bindkeys[$dir]="${(pj:\n:)new_bk}" unset "_autoenv_snap_pre_funcs[$dir]" "_autoenv_snap_pre_aliases[$dir]" \ "_autoenv_snap_pre_env[$dir]" } @@ -203,15 +187,7 @@ _autoenv_snap_restore() { done PATH="${_autoenv_snap_pre_path[$dir]}" PS1="${_autoenv_snap_pre_ps1[$dir]}" - # Restore changed bindkeys to their pre values. - eval "${_autoenv_snap_pre_bindkeys[$dir]}" - # Remove truly new bindkeys (key sequence didn't exist before .enter). - local bkline - for bkline in "${(f)_autoenv_snap_new_bindkeys[$dir]}"; do - [[ -n "$bkline" ]] && eval "${${bkline% *}/bindkey/bindkey -r}" - done unset "_autoenv_snap_pre_path[$dir]" "_autoenv_snap_pre_ps1[$dir]" \ - "_autoenv_snap_pre_bindkeys[$dir]" "_autoenv_snap_new_bindkeys[$dir]" \ "_autoenv_snap_diff_funcs[$dir]" "_autoenv_snap_diff_aliases[$dir]" \ "_autoenv_snap_diff_env[$dir]" }