mirror of
				https://github.com/zsh-users/zsh-autosuggestions.git
				synced 2025-10-30 15:26:29 +08:00 
			
		
		
		
	A new suggestion strategy 'match_prev_cmd' is available. This is a bit more context aware variaton on the default strategy. The suggestion will be: - The newest history entry that matches the current prefix, AND - Whose preceding history entry also matches the previously executed command. See src/strategies/match_prev_cmd.zsh for an example.
		
			
				
	
	
		
			123 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env zsh
 | 
						|
 | 
						|
SCRIPT_DIR=$(dirname "$0")
 | 
						|
TEST_DIR=$SCRIPT_DIR/../test
 | 
						|
DIST_DIR=$SCRIPT_DIR/../
 | 
						|
 | 
						|
# Use stub.sh for stubbing/mocking
 | 
						|
source $TEST_DIR/stub-1.0.2.sh
 | 
						|
 | 
						|
source $DIST_DIR/zsh-autosuggestions.zsh
 | 
						|
 | 
						|
#--------------------------------------------------------------------#
 | 
						|
# Match Previous Command Suggestion Strategy                         #
 | 
						|
#--------------------------------------------------------------------#
 | 
						|
 | 
						|
TMPHIST_FILE=/tmp/zsh-autosuggestions-test-tmp-hist
 | 
						|
 | 
						|
HISTSIZE=0  # Clear history
 | 
						|
HISTSIZE=100
 | 
						|
 | 
						|
cat > $TMPHIST_FILE <<-EOH
 | 
						|
	one
 | 
						|
	two
 | 
						|
	three
 | 
						|
	four
 | 
						|
	five
 | 
						|
	six
 | 
						|
	seven
 | 
						|
	eight
 | 
						|
	nine
 | 
						|
	ten
 | 
						|
	eleven
 | 
						|
EOH
 | 
						|
echo >> $TMPHIST_FILE
 | 
						|
 | 
						|
fc -R $TMPHIST_FILE
 | 
						|
 | 
						|
rm $TMPHIST_FILE
 | 
						|
 | 
						|
ZSH_AUTOSUGGEST_STRATEGY=match_prev_cmd
 | 
						|
 | 
						|
testNoMatchPrevIsOne() {
 | 
						|
	stub_and_echo _zsh_autosuggest_prev_command "one"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'garbage' after 'one'" \
 | 
						|
		"" \
 | 
						|
		"$(_zsh_autosuggest_suggestion garbage)"
 | 
						|
}
 | 
						|
 | 
						|
testMatchPrevIsOne() {
 | 
						|
	stub_and_echo _zsh_autosuggest_prev_command "one"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'o' after 'one'" \
 | 
						|
		"one" \
 | 
						|
		"$(_zsh_autosuggest_suggestion o)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 't' after 'one'" \
 | 
						|
		"two" \
 | 
						|
		"$(_zsh_autosuggest_suggestion t)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'th' after 'one'" \
 | 
						|
		"three" \
 | 
						|
		"$(_zsh_autosuggest_suggestion th)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'f' after 'one'" \
 | 
						|
		"five" \
 | 
						|
		"$(_zsh_autosuggest_suggestion f)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'fo' after 'one" \
 | 
						|
		"four" \
 | 
						|
		"$(_zsh_autosuggest_suggestion fo)"
 | 
						|
}
 | 
						|
 | 
						|
testNoMatchPrevIsTwo() {
 | 
						|
	stub_and_echo _zsh_autosuggest_prev_command "two"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'garbage' after 'two'" \
 | 
						|
		"" \
 | 
						|
		"$(_zsh_autosuggest_suggestion garbage)"
 | 
						|
}
 | 
						|
 | 
						|
testMatchPrevIsTwo() {
 | 
						|
	stub_and_echo _zsh_autosuggest_prev_command "two"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'o' after 'two'" \
 | 
						|
		"one" \
 | 
						|
		"$(_zsh_autosuggest_suggestion o)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 't' after 'two'" \
 | 
						|
		"three" \
 | 
						|
		"$(_zsh_autosuggest_suggestion t)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'tw' after 'two'" \
 | 
						|
		"two" \
 | 
						|
		"$(_zsh_autosuggest_suggestion tw)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'f' after 'two'" \
 | 
						|
		"five" \
 | 
						|
		"$(_zsh_autosuggest_suggestion f)"
 | 
						|
 | 
						|
	assertEquals \
 | 
						|
		"Did not pick correct suggestion for prefix 'fo' after 'two" \
 | 
						|
		"four" \
 | 
						|
		"$(_zsh_autosuggest_suggestion fo)"
 | 
						|
}
 | 
						|
 | 
						|
setopt shwordsplit
 | 
						|
SHUNIT_PARENT=$0
 | 
						|
 | 
						|
source $TEST_DIR/shunit2-2.1.6/src/shunit2
 | 
						|
 |