mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2024-11-25 10:01:05 +01:00
73 lines
2.4 KiB
Ruby
73 lines
2.4 KiB
Ruby
|
describe 'a zle widget' do
|
||
|
let(:before_sourcing) { -> { session.run_command('my-widget() {}; zle -N my-widget; bindkey ^B my-widget') } }
|
||
|
|
||
|
context 'when added to ZSH_AUTOSUGGEST_ACCEPT_WIDGETS' do
|
||
|
let(:options) { ['ZSH_AUTOSUGGEST_ACCEPT_WIDGETS=(my-widget)'] }
|
||
|
|
||
|
it 'accepts the suggestion when invoked' do
|
||
|
with_history('echo hello') do
|
||
|
session.send_string('e')
|
||
|
wait_for { session.content }.to eq('echo hello')
|
||
|
session.send_keys('C-b')
|
||
|
wait_for { session.content(esc_seqs: true) }.to eq('echo hello')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when added to ZSH_AUTOSUGGEST_CLEAR_WIDGETS' do
|
||
|
let(:options) { ['ZSH_AUTOSUGGEST_CLEAR_WIDGETS=(my-widget)'] }
|
||
|
|
||
|
it 'clears the suggestion when invoked' do
|
||
|
with_history('echo hello') do
|
||
|
session.send_string('e')
|
||
|
wait_for { session.content }.to eq('echo hello')
|
||
|
session.send_keys('C-b')
|
||
|
wait_for { session.content }.to eq('e')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when added to ZSH_AUTOSUGGEST_EXECUTE_WIDGETS' do
|
||
|
let(:options) { ['ZSH_AUTOSUGGEST_EXECUTE_WIDGETS=(my-widget)'] }
|
||
|
|
||
|
it 'executes the suggestion when invoked' do
|
||
|
with_history('echo hello') do
|
||
|
session.send_string('e')
|
||
|
wait_for { session.content }.to eq('echo hello')
|
||
|
session.send_keys('C-b')
|
||
|
wait_for { session.content }.to end_with("\nhello")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'a zle widget that moves the cursor forward' do
|
||
|
let(:before_sourcing) { -> { session.run_command('my-widget() { zle forward-char }; zle -N my-widget; bindkey ^B my-widget') } }
|
||
|
|
||
|
context 'when added to ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS' do
|
||
|
let(:options) { ['ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS=(my-widget)'] }
|
||
|
|
||
|
it 'accepts the suggestion as far as the cursor is moved when invoked' do
|
||
|
with_history('echo hello') do
|
||
|
session.send_string('e')
|
||
|
wait_for { session.content }.to start_with('echo hello')
|
||
|
session.send_keys('C-b')
|
||
|
wait_for { session.content(esc_seqs: true) }.to match(/\Aec\e\[[0-9]+mho hello/)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'a builtin zle widget' do
|
||
|
let(:widget) { 'beep' }
|
||
|
|
||
|
context 'when added to ZSH_AUTOSUGGEST_IGNORE_WIDGETS' do
|
||
|
let(:options) { ["ZSH_AUTOSUGGEST_IGNORE_WIDGETS=(#{widget})"] }
|
||
|
|
||
|
it 'should not be wrapped with an autosuggest widget' do
|
||
|
session.run_command("echo $widgets[#{widget}]")
|
||
|
wait_for { session.content }.to end_with("\nbuiltin")
|
||
|
end
|
||
|
end
|
||
|
end
|