mirror of
				https://github.com/zsh-users/zsh-autosuggestions.git
				synced 2025-10-30 15:26:29 +08:00 
			
		
		
		
	Add ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS option
				
					
				
			With this the until now hard-coded value of 200 can be configured.
This commit is contained in:
		
							parent
							
								
									afee79ef5b
								
							
						
					
					
						commit
						7a0c87155b
					
				@ -58,6 +58,9 @@ For more info, read the Character Highlighting section of the zsh manual: `man z
 | 
			
		||||
 | 
			
		||||
For example, setting `ZSH_AUTOSUGGEST_STRATEGY=(history completion)` will first try to find a suggestion from your history, but, if it can't find a match, will find a suggestion from the completion engine.
 | 
			
		||||
 | 
			
		||||
#### When `ZSH_AUTOSUGGEST_STRATEGY` contains `match_prev_cmd`:
 | 
			
		||||
 | 
			
		||||
- `ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS`: The previous command is only looked at of a number of the most recent commands that match the current prefix. This sets the maximum number of commands to consider. Set it to -1 to always use all matches.
 | 
			
		||||
 | 
			
		||||
### Widget Mapping
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,11 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
 | 
			
		||||
	ZSH_AUTOSUGGEST_STRATEGY=(history)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Maximum number of commands to consider for match_prev_cmd strategy
 | 
			
		||||
# Set to -1 to always use all matches
 | 
			
		||||
(( ! ${+ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS} )) &&
 | 
			
		||||
typeset -g ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS=200
 | 
			
		||||
 | 
			
		||||
# Widgets that clear the suggestion
 | 
			
		||||
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
 | 
			
		||||
	typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
 | 
			
		||||
 | 
			
		||||
@ -48,9 +48,9 @@ _zsh_autosuggest_strategy_match_prev_cmd() {
 | 
			
		||||
	# Get the previously executed command
 | 
			
		||||
	local prev_cmd="$(_zsh_autosuggest_escape_command "${history[$((HISTCMD-1))]}")"
 | 
			
		||||
 | 
			
		||||
	# Iterate up to the first 200 history event numbers that match $prefix
 | 
			
		||||
	# Iterate over the most recent history event numbers that match $prefix.
 | 
			
		||||
	local key
 | 
			
		||||
	for key in "${(@)history_match_keys[1,200]}"; do
 | 
			
		||||
	for key in "${(@)history_match_keys[1,$ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS]}"; do
 | 
			
		||||
		# Stop if we ran out of history
 | 
			
		||||
		[[ $key -gt 1 ]] || break
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -46,6 +46,11 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
 | 
			
		||||
	ZSH_AUTOSUGGEST_STRATEGY=(history)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Maximum number of commands to consider for match_prev_cmd strategy
 | 
			
		||||
# Set to -1 to always use all matches
 | 
			
		||||
(( ! ${+ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS} )) &&
 | 
			
		||||
typeset -g ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS=200
 | 
			
		||||
 | 
			
		||||
# Widgets that clear the suggestion
 | 
			
		||||
(( ! ${+ZSH_AUTOSUGGEST_CLEAR_WIDGETS} )) && {
 | 
			
		||||
	typeset -ga ZSH_AUTOSUGGEST_CLEAR_WIDGETS
 | 
			
		||||
@ -710,9 +715,9 @@ _zsh_autosuggest_strategy_match_prev_cmd() {
 | 
			
		||||
	# Get the previously executed command
 | 
			
		||||
	local prev_cmd="$(_zsh_autosuggest_escape_command "${history[$((HISTCMD-1))]}")"
 | 
			
		||||
 | 
			
		||||
	# Iterate up to the first 200 history event numbers that match $prefix
 | 
			
		||||
	# Iterate over the most recent history event numbers that match $prefix.
 | 
			
		||||
	local key
 | 
			
		||||
	for key in "${(@)history_match_keys[1,200]}"; do
 | 
			
		||||
	for key in "${(@)history_match_keys[1,$ZSH_AUTOSUGGEST_MATCH_PREV_MAX_CMDS]}"; do
 | 
			
		||||
		# Stop if we ran out of history
 | 
			
		||||
		[[ $key -gt 1 ]] || break
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user