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