73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
describe 'the `completion` suggestion strategy' do
 | 
						|
  let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=completion'] }
 | 
						|
  let(:before_sourcing) do
 | 
						|
    -> do
 | 
						|
      session.
 | 
						|
        run_command('autoload compinit && compinit').
 | 
						|
        run_command('_foo() { compadd bar; compadd bat }').
 | 
						|
        run_command('_num() { compadd two; compadd three }').
 | 
						|
        run_command('compdef _foo baz').
 | 
						|
        run_command('compdef _num one')
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  it 'suggests the first completion result' do
 | 
						|
    session.send_string('baz ')
 | 
						|
    wait_for { session.content }.to eq('baz bar')
 | 
						|
  end
 | 
						|
 | 
						|
  it 'does not add extra carriage returns when prefix has a line feed' do
 | 
						|
    skip '`stty` does not work inside zpty below zsh version 5.0.3' if session.zsh_version < Gem::Version.new('5.0.3')
 | 
						|
    session.send_string('baz \\').send_keys('C-v', 'C-j')
 | 
						|
    wait_for { session.content }.to eq("baz \\\nbar")
 | 
						|
  end
 | 
						|
 | 
						|
  context 'when `_complete` is aliased' do
 | 
						|
    let(:before_sourcing) do
 | 
						|
      -> do
 | 
						|
        session.
 | 
						|
          run_command('autoload compinit && compinit').
 | 
						|
          run_command('_foo() { compadd bar; compadd bat }').
 | 
						|
          run_command('compdef _foo baz').
 | 
						|
          run_command('alias _complete=_complete')
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    it 'suggests the first completion result' do
 | 
						|
      session.send_string('baz ')
 | 
						|
      wait_for { session.content }.to eq('baz bar')
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  context 'when ZSH_AUTOSUGGEST_COMPLETION_IGNORE is set to a pattern' do
 | 
						|
    let(:options) { ['ZSH_AUTOSUGGEST_STRATEGY=completion', 'ZSH_AUTOSUGGEST_COMPLETION_IGNORE="one *"'] }
 | 
						|
 | 
						|
    it 'makes suggestions when the buffer does not match the pattern' do
 | 
						|
      session.send_string('baz ')
 | 
						|
      wait_for { session.content }.to eq('baz bar')
 | 
						|
    end
 | 
						|
 | 
						|
    it 'does not make suggestions when the buffer matches the pattern' do
 | 
						|
      session.send_string('one t')
 | 
						|
      sleep 1
 | 
						|
      expect(session.content).to eq('one t')
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  context 'when async mode is enabled' do
 | 
						|
    let(:options) { ['ZSH_AUTOSUGGEST_USE_ASYNC=true', 'ZSH_AUTOSUGGEST_STRATEGY=completion'] }
 | 
						|
 | 
						|
    it 'suggests the first completion result' do
 | 
						|
      session.send_string('baz ')
 | 
						|
      wait_for { session.content }.to eq('baz bar')
 | 
						|
    end
 | 
						|
 | 
						|
    it 'does not add extra carriage returns when prefix has a line feed' do
 | 
						|
      skip '`stty` does not work inside zpty below zsh version 5.0.3' if session.zsh_version < Gem::Version.new('5.0.3')
 | 
						|
      session.send_string('baz \\').send_keys('C-v', 'C-j')
 | 
						|
      wait_for { session.content }.to eq("baz \\\nbar")
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 |