mirror of
				https://github.com/zsh-users/zsh-autosuggestions.git
				synced 2025-10-30 15:26:29 +08:00 
			
		
		
		
	Merge 61312cc885 into f8907cf32b
				
					
				
			This commit is contained in:
		
						commit
						39eb1b1af0
					
				
							
								
								
									
										18
									
								
								spec/yank_pop_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								spec/yank_pop_spec.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					context 'after positioning cursor before a word' do
 | 
				
			||||||
 | 
					  before do
 | 
				
			||||||
 | 
					    session.send_string('echo hello world bye')
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe '`yank` then `yank-pop`' do
 | 
				
			||||||
 | 
					    it 'should insert text in correct position before word' do
 | 
				
			||||||
 | 
					      session.send_keys('C-w').send_keys('C-h').send_keys('C-w')
 | 
				
			||||||
 | 
					      wait_for { session.content }.to eq('echo hello')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      session.send_keys('M-b').send_keys('C-y')
 | 
				
			||||||
 | 
					      wait_for { session.content }.to eq('echo worldhello')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      session.send_keys('M-y')
 | 
				
			||||||
 | 
					      wait_for { session.content }.to eq('echo byehello')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -51,8 +51,16 @@ _zsh_autosuggest_bind_widget() {
 | 
				
			|||||||
	# correctly. $WIDGET cannot be trusted because other plugins call
 | 
						# correctly. $WIDGET cannot be trusted because other plugins call
 | 
				
			||||||
	# zle without the `-w` flag (e.g. `zle self-insert` instead of
 | 
						# zle without the `-w` flag (e.g. `zle self-insert` instead of
 | 
				
			||||||
	# `zle self-insert -w`).
 | 
						# `zle self-insert -w`).
 | 
				
			||||||
 | 
						# Preserve the ZLE_KILL | ZLE_YANK flags for builtin widgets for ZSH >= 5.2
 | 
				
			||||||
	eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() {
 | 
						eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() {
 | 
				
			||||||
		_zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@
 | 
							_zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@
 | 
				
			||||||
 | 
							if [[ ! "${ZSH_VERSION}" < 5.2 ]]; then
 | 
				
			||||||
 | 
								case ${(q)widget} in
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS}) zle -f 'kill';;
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS}) zle -f 'yank';;
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS}) zle -f 'yankbefore';;
 | 
				
			||||||
 | 
								esac
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
	}"
 | 
						}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# Create the bound widget
 | 
						# Create the bound widget
 | 
				
			||||||
 | 
				
			|||||||
@ -84,12 +84,41 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
 | 
				
			|||||||
		run-help
 | 
							run-help
 | 
				
			||||||
		set-local-history
 | 
							set-local-history
 | 
				
			||||||
		which-command
 | 
							which-command
 | 
				
			||||||
		yank
 | 
					 | 
				
			||||||
		yank-pop
 | 
							yank-pop
 | 
				
			||||||
		zle-\*
 | 
							zle-\*
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
						if [[ "${ZSH_VERSION}" < 5.2 ]]; then
 | 
				
			||||||
 | 
							ZSH_AUTOSUGGEST_IGNORE_WIDGETS+=(yank)
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Pty name for capturing completions for completion suggestion strategy
 | 
					# Pty name for capturing completions for completion suggestion strategy
 | 
				
			||||||
(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
 | 
					(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
 | 
				
			||||||
typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
 | 
					typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_KILL flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS=(
 | 
				
			||||||
 | 
							kill-\*
 | 
				
			||||||
 | 
							backward-kill-\*
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_YANK flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS=(
 | 
				
			||||||
 | 
							bracketed-paste
 | 
				
			||||||
 | 
							vi-put-after
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_YANKBEFORE flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS=(
 | 
				
			||||||
 | 
							vi-put-before
 | 
				
			||||||
 | 
							yank
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -110,16 +110,45 @@ typeset -g ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX=autosuggest-orig-
 | 
				
			|||||||
		run-help
 | 
							run-help
 | 
				
			||||||
		set-local-history
 | 
							set-local-history
 | 
				
			||||||
		which-command
 | 
							which-command
 | 
				
			||||||
		yank
 | 
					 | 
				
			||||||
		yank-pop
 | 
							yank-pop
 | 
				
			||||||
		zle-\*
 | 
							zle-\*
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 | 
						if [[ "${ZSH_VERSION}" < 5.2 ]]; then
 | 
				
			||||||
 | 
							ZSH_AUTOSUGGEST_IGNORE_WIDGETS+=(yank)
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Pty name for capturing completions for completion suggestion strategy
 | 
					# Pty name for capturing completions for completion suggestion strategy
 | 
				
			||||||
(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
 | 
					(( ! ${+ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME} )) &&
 | 
				
			||||||
typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
 | 
					typeset -g ZSH_AUTOSUGGEST_COMPLETIONS_PTY_NAME=zsh_autosuggest_completion_pty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_KILL flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS=(
 | 
				
			||||||
 | 
							kill-\*
 | 
				
			||||||
 | 
							backward-kill-\*
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_YANK flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS=(
 | 
				
			||||||
 | 
							bracketed-paste
 | 
				
			||||||
 | 
							vi-put-after
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Widgets that should preserve ZLE_YANKBEFORE flag
 | 
				
			||||||
 | 
					(( ! ${+ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS} )) && {
 | 
				
			||||||
 | 
						typeset -ga ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS
 | 
				
			||||||
 | 
						ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS=(
 | 
				
			||||||
 | 
							vi-put-before
 | 
				
			||||||
 | 
							yank
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#--------------------------------------------------------------------#
 | 
					#--------------------------------------------------------------------#
 | 
				
			||||||
# Utility Functions                                                  #
 | 
					# Utility Functions                                                  #
 | 
				
			||||||
#--------------------------------------------------------------------#
 | 
					#--------------------------------------------------------------------#
 | 
				
			||||||
@ -183,8 +212,16 @@ _zsh_autosuggest_bind_widget() {
 | 
				
			|||||||
	# correctly. $WIDGET cannot be trusted because other plugins call
 | 
						# correctly. $WIDGET cannot be trusted because other plugins call
 | 
				
			||||||
	# zle without the `-w` flag (e.g. `zle self-insert` instead of
 | 
						# zle without the `-w` flag (e.g. `zle self-insert` instead of
 | 
				
			||||||
	# `zle self-insert -w`).
 | 
						# `zle self-insert -w`).
 | 
				
			||||||
 | 
						# Preserve the ZLE_KILL | ZLE_YANK flags for builtin widgets for ZSH >= 5.2
 | 
				
			||||||
	eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() {
 | 
						eval "_zsh_autosuggest_bound_${bind_count}_${(q)widget}() {
 | 
				
			||||||
		_zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@
 | 
							_zsh_autosuggest_widget_$autosuggest_action $prefix$bind_count-${(q)widget} \$@
 | 
				
			||||||
 | 
							if [[ ! "${ZSH_VERSION}" < 5.2 ]]; then
 | 
				
			||||||
 | 
								case ${(q)widget} in
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_KILL_WIDGETS}) zle -f 'kill';;
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_YANK_WIDGETS}) zle -f 'yank';;
 | 
				
			||||||
 | 
									(${(j:|:)ZSH_AUTOSUGGEST_ZLE_YANKBEFORE_WIDGETS}) zle -f 'yankbefore';;
 | 
				
			||||||
 | 
								esac
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
	}"
 | 
						}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# Create the bound widget
 | 
						# Create the bound widget
 | 
				
			||||||
@ -859,9 +896,9 @@ autoload -Uz add-zsh-hook is-at-least
 | 
				
			|||||||
# older versions because there is a bug when using async mode where ^C does not
 | 
					# older versions because there is a bug when using async mode where ^C does not
 | 
				
			||||||
# work immediately after fetching a suggestion.
 | 
					# work immediately after fetching a suggestion.
 | 
				
			||||||
# See https://github.com/zsh-users/zsh-autosuggestions/issues/364
 | 
					# See https://github.com/zsh-users/zsh-autosuggestions/issues/364
 | 
				
			||||||
if is-at-least 5.0.8; then
 | 
					# if is-at-least 5.0.8; then
 | 
				
			||||||
	typeset -g ZSH_AUTOSUGGEST_USE_ASYNC=
 | 
					# 	typeset -g ZSH_AUTOSUGGEST_USE_ASYNC=
 | 
				
			||||||
fi
 | 
					# fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Start the autosuggestion widgets on the next precmd
 | 
					# Start the autosuggestion widgets on the next precmd
 | 
				
			||||||
add-zsh-hook precmd _zsh_autosuggest_start
 | 
					add-zsh-hook precmd _zsh_autosuggest_start
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user