driver: Be resilient to KSH_ARRAYS being set in the calling scope

The «emulate» call isn't sufficient, since these lines are parsed before
it takes effect.

Fixes  (née ).

See also  for preventing these gymnastics from being needed in the
first place.

See also https://github.com/junegunn/fzf/pull/1924 for an inter-plugin
interaction that this probably fixes.
This commit is contained in:
Austin Traver 2020-03-13 01:16:40 -07:00 committed by Daniel Shahaf
parent b85e313bc9
commit b00be5f741

View File

@ -86,12 +86,12 @@ _zsh_highlight()
# Before we 'emulate -L', save the user's options
local -A zsyh_user_options
if zmodload -e zsh/parameter; then
zsyh_user_options=("${(@kv)options}")
zsyh_user_options=("${(kv)options[@]}")
else
local canonical_options onoff option raw_options
raw_options=(${(f)"$(emulate -R zsh; set -o)"})
canonical_options=(${${${(M)raw_options:#*off}%% *}#no} ${${(M)raw_options:#*on}%% *})
for option in $canonical_options; do
for option in "${canonical_options[@]}"; do
[[ -o $option ]]
# This variable cannot be eliminated c.f. workers/42101.
onoff=${${=:-off on}[2-$?]}