'main': Avoid triggering a zsh bug related to hashed commands.
This manifested in completion of the form «./foo<TAB>» where there happened to be a program called 'foo' in $PATH. Fixes #354. Closes #355.
This commit is contained in:
		
							parent
							
								
									11c9081967
								
							
						
					
					
						commit
						51614ca2c9
					
				|  | @ -113,7 +113,14 @@ _zsh_highlight_main__type() { | ||||||
|       REPLY=builtin |       REPLY=builtin | ||||||
|     elif (( $+commands[(e)$1] )); then |     elif (( $+commands[(e)$1] )); then | ||||||
|       REPLY=command |       REPLY=command | ||||||
|     elif ! builtin type -w -- $1 >/dev/null 2>&1; then |     # zsh 5.2 and older have a bug whereby running 'type -w ./sudo' implicitly | ||||||
|  |     # runs 'hash ./sudo=/usr/local/bin/./sudo' (assuming /usr/local/bin/sudo | ||||||
|  |     # exists and is in $PATH).  Avoid triggering the bug, at the expense of | ||||||
|  |     # falling through to the $() below, incurring a fork.  (Issue #354.) | ||||||
|  |     # | ||||||
|  |     # The second disjunct mimics the isrelative() C call from the zsh bug. | ||||||
|  |     elif { is-at-least 5.3 || [[ $1 != */* ]] } && | ||||||
|  |          ! builtin type -w -- $1 >/dev/null 2>&1; then | ||||||
|       REPLY=none |       REPLY=none | ||||||
|     fi |     fi | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|  | @ -383,5 +383,7 @@ add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || { | ||||||
| # Load zsh/parameter module if available | # Load zsh/parameter module if available | ||||||
| zmodload zsh/parameter 2>/dev/null || true | zmodload zsh/parameter 2>/dev/null || true | ||||||
| 
 | 
 | ||||||
|  | autoload -U is-at-least | ||||||
|  | 
 | ||||||
| # Initialize the array of active highlighters if needed. | # Initialize the array of active highlighters if needed. | ||||||
| [[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) || true | [[ $#ZSH_HIGHLIGHT_HIGHLIGHTERS -eq 0 ]] && ZSH_HIGHLIGHT_HIGHLIGHTERS=(main) || true | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue