Enabling suggestions should not fetch a suggestion if buffer is empty

This commit is contained in:
Eric Freese 2017-03-04 17:04:04 -05:00
parent 7d4a1d9a4a
commit a2f0ffb122
5 changed files with 77 additions and 7 deletions

View file

@ -0,0 +1,36 @@
describe 'pasting using bracketed-paste-magic' do
let(:before_sourcing) do
-> do
session.
run_command('autoload -Uz bracketed-paste-magic').
run_command('zle -N bracketed-paste bracketed-paste-magic')
end
end
context 'with suggestions disabled while pasting' do
before do
session.
run_command('bpm_init() { zle autosuggest-disable }').
run_command('bpm_finish() { zle autosuggest-enable }').
run_command('zstyle :bracketed-paste-magic paste-init bpm_init').
run_command('zstyle :bracketed-paste-magic paste-finish bpm_finish')
end
it 'does not show an incorrect suggestion' do
with_history('echo hello') do
session.paste_string("echo #{'a' * 60}")
sleep 1
expect(session.content).to eq("echo #{'a' * 60}")
end
end
it 'shows a suggestion after a non-modifying keystroke' do
with_history('echo hello') do
session.paste_string('echo')
sleep 1
session.send_keys('left')
wait_for { session.content }.to eq('echo hello')
end
end
end
end

View file

@ -41,6 +41,13 @@ class TerminalSession
self
end
def paste_string(str)
tmux_command("set-buffer -- '#{str}'")
tmux_command("paste-buffer -dpr -t 0")
self
end
def content(esc_seqs: false)
cmd = 'capture-pane -p -t 0'
cmd += ' -e' if esc_seqs

View file

@ -6,16 +6,37 @@ describe 'the `autosuggest-enable` widget' do
end
it 'enables suggestions and fetches a suggestion' do
with_history('echo world', 'echo hello') do
session.send_string('echo')
with_history('echo hello') do
session.send_string('e')
sleep 1
expect(session.content).to eq('echo')
expect(session.content).to eq('e')
session.send_keys('C-b')
session.send_string('c')
wait_for { session.content }.to eq('echo hello')
end
end
session.send_string(' w')
wait_for { session.content }.to eq('echo world')
context 'invoked on an empty buffer' do
it 'does not fetch a suggestion' do
with_history('echo hello') do
session.send_keys('C-b')
sleep 1
expect(session.content).to eq('')
end
end
end
context 'invoked on a non-empty buffer' do
it 'fetches a suggestion' do
with_history('echo hello') do
session.send_string('e')
sleep 1
expect(session.content).to eq('e')
session.send_keys('C-b')
wait_for { session.content }.to eq('echo hello')
end
end
end
end

View file

@ -12,7 +12,10 @@ _zsh_autosuggest_disable() {
# Enable suggestions
_zsh_autosuggest_enable() {
unset _ZSH_AUTOSUGGEST_DISABLED
_zsh_autosuggest_fetch
if [ $#BUFFER -gt 0 ]; then
_zsh_autosuggest_fetch
fi
}
# Toggle suggestions (enable/disable)

View file

@ -290,7 +290,10 @@ _zsh_autosuggest_disable() {
# Enable suggestions
_zsh_autosuggest_enable() {
unset _ZSH_AUTOSUGGEST_DISABLED
_zsh_autosuggest_fetch
if [ $#BUFFER -gt 0 ]; then
_zsh_autosuggest_fetch
fi
}
# Toggle suggestions (enable/disable)