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 #689 (née #622). See also #688 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:
parent
b85e313bc9
commit
b00be5f741
@ -86,12 +86,12 @@ _zsh_highlight()
|
|||||||
# Before we 'emulate -L', save the user's options
|
# Before we 'emulate -L', save the user's options
|
||||||
local -A zsyh_user_options
|
local -A zsyh_user_options
|
||||||
if zmodload -e zsh/parameter; then
|
if zmodload -e zsh/parameter; then
|
||||||
zsyh_user_options=("${(@kv)options}")
|
zsyh_user_options=("${(kv)options[@]}")
|
||||||
else
|
else
|
||||||
local canonical_options onoff option raw_options
|
local canonical_options onoff option raw_options
|
||||||
raw_options=(${(f)"$(emulate -R zsh; set -o)"})
|
raw_options=(${(f)"$(emulate -R zsh; set -o)"})
|
||||||
canonical_options=(${${${(M)raw_options:#*off}%% *}#no} ${${(M)raw_options:#*on}%% *})
|
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 ]]
|
[[ -o $option ]]
|
||||||
# This variable cannot be eliminated c.f. workers/42101.
|
# This variable cannot be eliminated c.f. workers/42101.
|
||||||
onoff=${${=:-off on}[2-$?]}
|
onoff=${${=:-off on}[2-$?]}
|
||||||
|
Loading…
Reference in New Issue
Block a user