commit
						cbf0e24b18
					
				|  | @ -1,5 +1,10 @@ | |||
| # Changelog | ||||
| 
 | ||||
| ## v0.5.1 | ||||
| - Speed up widget rebinding (#413) | ||||
| - Clean up global variable creations (#403) | ||||
| - Respect user's set options when running original widget (#402) | ||||
| 
 | ||||
| ## v0.5.0 | ||||
| - Don't overwrite config with default values (#335) | ||||
| - Support fallback strategies by supplying array to suggestion config var | ||||
|  |  | |||
|  | @ -0,0 +1,14 @@ | |||
| describe 'with `AUTO_CD` option set' do | ||||
|   let(:after_sourcing) do | ||||
|     -> { | ||||
|       session.run_command('setopt AUTO_CD') | ||||
|       session.run_command('autoload compinit && compinit') | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   it 'directory names are still completed' do | ||||
|     session.send_string('sr') | ||||
|     session.send_keys('C-i') | ||||
|     wait_for { session.content }.to eq('src/') | ||||
|   end | ||||
| end | ||||
|  | @ -0,0 +1,12 @@ | |||
| describe 'with `GLOB_SUBST` option set' do | ||||
|   let(:after_sourcing) do | ||||
|     -> { | ||||
|       session.run_command('setopt GLOB_SUBST') | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   it 'error messages are not printed' do | ||||
|     session.send_string('[[') | ||||
|     wait_for { session.content }.to eq('[[') | ||||
|   end | ||||
| end | ||||
|  | @ -1,6 +1,6 @@ | |||
| require 'strategies/special_characters_helper' | ||||
| 
 | ||||
| describe 'the match_prev_cmd strategy' do | ||||
| describe 'the `match_prev_cmd` strategy' do | ||||
|   let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd'] } | ||||
| 
 | ||||
|   it 'suggests the last matching history entry after the previous command' do | ||||
|  |  | |||
							
								
								
									
										29
									
								
								src/bind.zsh
								
								
								
								
							
							
						
						
									
										29
									
								
								src/bind.zsh
								
								
								
								
							|  | @ -4,21 +4,8 @@ | |||
| #--------------------------------------------------------------------# | ||||
| 
 | ||||
| _zsh_autosuggest_incr_bind_count() { | ||||
| 	if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then | ||||
| 		((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]++)) | ||||
| 	else | ||||
| 		_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=1 | ||||
| 	fi | ||||
| 
 | ||||
| 	typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] | ||||
| } | ||||
| 
 | ||||
| _zsh_autosuggest_get_bind_count() { | ||||
| 	if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then | ||||
| 		typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] | ||||
| 	else | ||||
| 		typeset -gi bind_count=0 | ||||
| 	fi | ||||
| 	typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) | ||||
| 	_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count | ||||
| } | ||||
| 
 | ||||
| # Bind a single widget to an autosuggest widget, saving a reference to the original widget | ||||
|  | @ -34,30 +21,30 @@ _zsh_autosuggest_bind_widget() { | |||
| 	# Save a reference to the original widget | ||||
| 	case $widgets[$widget] in | ||||
| 		# Already bound | ||||
| 		user:_zsh_autosuggest_(bound|orig)_*);; | ||||
| 		user:_zsh_autosuggest_(bound|orig)_*) | ||||
| 			bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) | ||||
| 			;; | ||||
| 
 | ||||
| 		# User-defined widget | ||||
| 		user:*) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			zle -N $prefix${bind_count}-$widget ${widgets[$widget]#*:} | ||||
| 			zle -N $prefix$bind_count-$widget ${widgets[$widget]#*:} | ||||
| 			;; | ||||
| 
 | ||||
| 		# Built-in widget | ||||
| 		builtin) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			eval "_zsh_autosuggest_orig_${(q)widget}() { zle .${(q)widget} }" | ||||
| 			zle -N $prefix${bind_count}-$widget _zsh_autosuggest_orig_$widget | ||||
| 			zle -N $prefix$bind_count-$widget _zsh_autosuggest_orig_$widget | ||||
| 			;; | ||||
| 
 | ||||
| 		# Completion widget | ||||
| 		completion:*) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			eval "zle -C $prefix${bind_count}-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" | ||||
| 			eval "zle -C $prefix$bind_count-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" | ||||
| 			;; | ||||
| 	esac | ||||
| 
 | ||||
| 	_zsh_autosuggest_get_bind_count $widget | ||||
| 
 | ||||
| 	# Pass the original widget's name explicitly into the autosuggest | ||||
| 	# function. Use this passed in widget name to call the original | ||||
| 	# widget instead of relying on the $WIDGET variable being set | ||||
|  |  | |||
|  | @ -6,17 +6,24 @@ | |||
| # Color to use when highlighting suggestion | ||||
| # Uses format of `region_highlight` | ||||
| # More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets | ||||
| : ${ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' | ||||
| 
 | ||||
| # Prefix to use when saving original versions of bound widgets | ||||
| : ${ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- | ||||
| 
 | ||||
| # Strategies to use to fetch a suggestion | ||||
| # Will try each strategy in order until a suggestion is returned | ||||
| (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && ZSH_AUTOSUGGEST_STRATEGY=(history) | ||||
| (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_STRATEGY | ||||
| 	ZSH_AUTOSUGGEST_STRATEGY=(history) | ||||
| } | ||||
| 
 | ||||
| # Widgets that clear the suggestion | ||||
| (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( | ||||
| 		history-search-forward | ||||
| 		history-search-backward | ||||
| 		history-beginning-search-forward | ||||
|  | @ -29,22 +36,31 @@ | |||
| 		down-line-or-history | ||||
| 		accept-line | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the entire suggestion | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( | ||||
| 		forward-char | ||||
| 		end-of-line | ||||
| 		vi-forward-char | ||||
| 		vi-end-of-line | ||||
| 		vi-add-eol | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the entire suggestion and execute it | ||||
| (( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the suggestion as far as the cursor moves | ||||
| (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( | ||||
| 		forward-word | ||||
| 		emacs-forward-word | ||||
| 		vi-forward-word | ||||
|  | @ -54,9 +70,12 @@ | |||
| 		vi-find-next-char | ||||
| 		vi-find-next-char-skip | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that should be ignored (globbing supported but must be escaped) | ||||
| (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( | ||||
| 		orig-\* | ||||
| 		beep | ||||
| 		run-help | ||||
|  | @ -65,9 +84,12 @@ | |||
| 		yank | ||||
| 		yank-pop | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Max size of buffer to trigger autosuggestion. Leave null for no upper bound. | ||||
| : ${ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE= | ||||
| 
 | ||||
| # Pty name for calculating autosuggestions asynchronously | ||||
| : ${ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ASYNC_PTY_NAME} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| _zsh_autosuggest_fetch_suggestion() { | ||||
| 	typeset -g suggestion | ||||
| 	local -a strategies | ||||
| 	local strategy | ||||
| 
 | ||||
| 	# Ensure we are working with an array | ||||
| 	strategies=(${=ZSH_AUTOSUGGEST_STRATEGY}) | ||||
|  |  | |||
|  | @ -37,8 +37,6 @@ _zsh_autosuggest_clear() { | |||
| 
 | ||||
| # Modify the buffer and get a new suggestion | ||||
| _zsh_autosuggest_modify() { | ||||
| 	emulate -L zsh | ||||
| 
 | ||||
| 	local -i retval | ||||
| 
 | ||||
| 	# Only available in zsh >= 5.4 | ||||
|  | @ -55,6 +53,8 @@ _zsh_autosuggest_modify() { | |||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| 	retval=$? | ||||
| 
 | ||||
| 	emulate -L zsh | ||||
| 
 | ||||
| 	# Don't fetch a new suggestion if there's more input to be read immediately | ||||
| 	if (( $PENDING > 0 )) || (( $KEYS_QUEUED_COUNT > 0 )); then | ||||
| 		POSTDISPLAY="$orig_postdisplay" | ||||
|  | @ -190,6 +190,8 @@ _zsh_autosuggest_partial_accept() { | |||
| 	return $retval | ||||
| } | ||||
| 
 | ||||
| () { | ||||
| 	local action | ||||
| 	for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do | ||||
| 		eval "_zsh_autosuggest_widget_$action() { | ||||
| 			local -i retval | ||||
|  | @ -215,3 +217,4 @@ zle -N autosuggest-execute _zsh_autosuggest_widget_execute | |||
| 	zle -N autosuggest-enable _zsh_autosuggest_widget_enable | ||||
| 	zle -N autosuggest-disable _zsh_autosuggest_widget_disable | ||||
| 	zle -N autosuggest-toggle _zsh_autosuggest_widget_toggle | ||||
| } | ||||
|  |  | |||
|  | @ -42,17 +42,24 @@ zmodload zsh/zpty | |||
| # Color to use when highlighting suggestion | ||||
| # Uses format of `region_highlight` | ||||
| # More info: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets | ||||
| : ${ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8' | ||||
| 
 | ||||
| # Prefix to use when saving original versions of bound widgets | ||||
| : ${ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig- | ||||
| 
 | ||||
| # Strategies to use to fetch a suggestion | ||||
| # Will try each strategy in order until a suggestion is returned | ||||
| (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && ZSH_AUTOSUGGEST_STRATEGY=(history) | ||||
| (( ! ${+ZSH_AUTOSUGGEST_STRATEGY} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_STRATEGY | ||||
| 	ZSH_AUTOSUGGEST_STRATEGY=(history) | ||||
| } | ||||
| 
 | ||||
| # Widgets that clear the suggestion | ||||
| (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_CLEAR_WIDGETS=( | ||||
| 		history-search-forward | ||||
| 		history-search-backward | ||||
| 		history-beginning-search-forward | ||||
|  | @ -65,22 +72,31 @@ zmodload zsh/zpty | |||
| 		down-line-or-history | ||||
| 		accept-line | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the entire suggestion | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ACCEPT_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_ACCEPT_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=( | ||||
| 		forward-char | ||||
| 		end-of-line | ||||
| 		vi-forward-char | ||||
| 		vi-end-of-line | ||||
| 		vi-add-eol | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the entire suggestion and execute it | ||||
| (( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_EXECUTE_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_EXECUTE_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=( | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that accept the suggestion as far as the cursor moves | ||||
| (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=( | ||||
| 		forward-word | ||||
| 		emacs-forward-word | ||||
| 		vi-forward-word | ||||
|  | @ -90,9 +106,12 @@ zmodload zsh/zpty | |||
| 		vi-find-next-char | ||||
| 		vi-find-next-char-skip | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Widgets that should be ignored (globbing supported but must be escaped) | ||||
| (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( | ||||
| (( ! ${+ZSH_AUTOSUGGEST_IGNORE_WIDGETS} )) && { | ||||
| 	typeset -ga ZSH_AUTOSUGGEST_IGNORE_WIDGETS | ||||
| 	ZSH_AUTOSUGGEST_IGNORE_WIDGETS=( | ||||
| 		orig-\* | ||||
| 		beep | ||||
| 		run-help | ||||
|  | @ -101,12 +120,15 @@ zmodload zsh/zpty | |||
| 		yank | ||||
| 		yank-pop | ||||
| 	) | ||||
| } | ||||
| 
 | ||||
| # Max size of buffer to trigger autosuggestion. Leave null for no upper bound. | ||||
| : ${ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE= | ||||
| 
 | ||||
| # Pty name for calculating autosuggestions asynchronously | ||||
| : ${ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty} | ||||
| (( ! ${+ZSH_AUTOSUGGEST_ASYNC_PTY_NAME} )) && | ||||
| typeset -g ZSH_AUTOSUGGEST_ASYNC_PTY_NAME=zsh_autosuggest_pty | ||||
| 
 | ||||
| #--------------------------------------------------------------------# | ||||
| # Utility Functions                                                  # | ||||
|  | @ -143,21 +165,8 @@ _zsh_autosuggest_feature_detect_zpty_returns_fd() { | |||
| #--------------------------------------------------------------------# | ||||
| 
 | ||||
| _zsh_autosuggest_incr_bind_count() { | ||||
| 	if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then | ||||
| 		((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]++)) | ||||
| 	else | ||||
| 		_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=1 | ||||
| 	fi | ||||
| 
 | ||||
| 	typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] | ||||
| } | ||||
| 
 | ||||
| _zsh_autosuggest_get_bind_count() { | ||||
| 	if ((${+_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]})); then | ||||
| 		typeset -gi bind_count=$_ZSH_AUTOSUGGEST_BIND_COUNTS[$1] | ||||
| 	else | ||||
| 		typeset -gi bind_count=0 | ||||
| 	fi | ||||
| 	typeset -gi bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]+1)) | ||||
| 	_ZSH_AUTOSUGGEST_BIND_COUNTS[$1]=$bind_count | ||||
| } | ||||
| 
 | ||||
| # Bind a single widget to an autosuggest widget, saving a reference to the original widget | ||||
|  | @ -173,30 +182,30 @@ _zsh_autosuggest_bind_widget() { | |||
| 	# Save a reference to the original widget | ||||
| 	case $widgets[$widget] in | ||||
| 		# Already bound | ||||
| 		user:_zsh_autosuggest_(bound|orig)_*);; | ||||
| 		user:_zsh_autosuggest_(bound|orig)_*) | ||||
| 			bind_count=$((_ZSH_AUTOSUGGEST_BIND_COUNTS[$widget])) | ||||
| 			;; | ||||
| 
 | ||||
| 		# User-defined widget | ||||
| 		user:*) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			zle -N $prefix${bind_count}-$widget ${widgets[$widget]#*:} | ||||
| 			zle -N $prefix$bind_count-$widget ${widgets[$widget]#*:} | ||||
| 			;; | ||||
| 
 | ||||
| 		# Built-in widget | ||||
| 		builtin) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			eval "_zsh_autosuggest_orig_${(q)widget}() { zle .${(q)widget} }" | ||||
| 			zle -N $prefix${bind_count}-$widget _zsh_autosuggest_orig_$widget | ||||
| 			zle -N $prefix$bind_count-$widget _zsh_autosuggest_orig_$widget | ||||
| 			;; | ||||
| 
 | ||||
| 		# Completion widget | ||||
| 		completion:*) | ||||
| 			_zsh_autosuggest_incr_bind_count $widget | ||||
| 			eval "zle -C $prefix${bind_count}-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" | ||||
| 			eval "zle -C $prefix$bind_count-${(q)widget} ${${(s.:.)widgets[$widget]}[2,3]}" | ||||
| 			;; | ||||
| 	esac | ||||
| 
 | ||||
| 	_zsh_autosuggest_get_bind_count $widget | ||||
| 
 | ||||
| 	# Pass the original widget's name explicitly into the autosuggest | ||||
| 	# function. Use this passed in widget name to call the original | ||||
| 	# widget instead of relying on the $WIDGET variable being set | ||||
|  | @ -322,8 +331,6 @@ _zsh_autosuggest_clear() { | |||
| 
 | ||||
| # Modify the buffer and get a new suggestion | ||||
| _zsh_autosuggest_modify() { | ||||
| 	emulate -L zsh | ||||
| 
 | ||||
| 	local -i retval | ||||
| 
 | ||||
| 	# Only available in zsh >= 5.4 | ||||
|  | @ -340,6 +347,8 @@ _zsh_autosuggest_modify() { | |||
| 	_zsh_autosuggest_invoke_original_widget $@ | ||||
| 	retval=$? | ||||
| 
 | ||||
| 	emulate -L zsh | ||||
| 
 | ||||
| 	# Don't fetch a new suggestion if there's more input to be read immediately | ||||
| 	if (( $PENDING > 0 )) || (( $KEYS_QUEUED_COUNT > 0 )); then | ||||
| 		POSTDISPLAY="$orig_postdisplay" | ||||
|  | @ -475,6 +484,8 @@ _zsh_autosuggest_partial_accept() { | |||
| 	return $retval | ||||
| } | ||||
| 
 | ||||
| () { | ||||
| 	local action | ||||
| 	for action in clear modify fetch suggest accept partial_accept execute enable disable toggle; do | ||||
| 		eval "_zsh_autosuggest_widget_$action() { | ||||
| 			local -i retval | ||||
|  | @ -500,6 +511,7 @@ zle -N autosuggest-execute _zsh_autosuggest_widget_execute | |||
| 	zle -N autosuggest-enable _zsh_autosuggest_widget_enable | ||||
| 	zle -N autosuggest-disable _zsh_autosuggest_widget_disable | ||||
| 	zle -N autosuggest-toggle _zsh_autosuggest_widget_toggle | ||||
| } | ||||
| 
 | ||||
| #--------------------------------------------------------------------# | ||||
| # History Suggestion Strategy                                        # | ||||
|  | @ -595,6 +607,7 @@ _zsh_autosuggest_strategy_match_prev_cmd() { | |||
| _zsh_autosuggest_fetch_suggestion() { | ||||
| 	typeset -g suggestion | ||||
| 	local -a strategies | ||||
| 	local strategy | ||||
| 
 | ||||
| 	# Ensure we are working with an array | ||||
| 	strategies=(${=ZSH_AUTOSUGGEST_STRATEGY}) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue