[zsh-completion] Respect backslash-escaped spaces (#230)

This commit is contained in:
Junegunn Choi 2015-05-12 01:40:44 +09:00
parent 2b61dc6557
commit 26d2af5ee8
2 changed files with 22 additions and 4 deletions

View File

@ -12,7 +12,7 @@
_fzf_path_completion() { _fzf_path_completion() {
local base lbuf find_opts fzf_opts suffix tail fzf dir leftover matches nnm local base lbuf find_opts fzf_opts suffix tail fzf dir leftover matches nnm
base=$1 base=${(Q)1}
lbuf=$2 lbuf=$2
find_opts=$3 find_opts=$3
fzf_opts=$4 fzf_opts=$4
@ -102,7 +102,8 @@ fzf-completion() {
local tokens cmd prefix trigger tail fzf matches lbuf d_cmds local tokens cmd prefix trigger tail fzf matches lbuf d_cmds
# http://zsh.sourceforge.net/FAQ/zshfaq03.html # http://zsh.sourceforge.net/FAQ/zshfaq03.html
tokens=(${=LBUFFER}) # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
tokens=(${(z)LBUFFER})
if [ ${#tokens} -lt 1 ]; then if [ ${#tokens} -lt 1 ]; then
eval "zle ${fzf_default_completion:-expand-or-complete}" eval "zle ${fzf_default_completion:-expand-or-complete}"
return return

View File

@ -582,7 +582,12 @@ end
module CompletionTest module CompletionTest
def test_file_completion def test_file_completion
tmux.send_keys 'mkdir -p /tmp/fzf-test; touch /tmp/fzf-test/{1..100}; touch ~/fzf-home no~such~user', :Enter FileUtils.mkdir_p '/tmp/fzf-test'
FileUtils.mkdir_p '/tmp/fzf test'
(1..100).each { |i| FileUtils.touch "/tmp/fzf-test/#{i}" }
['no~such~user', '/tmp/fzf test/foobar', '~/fzf-home'].each do |f|
FileUtils.touch File.expand_path(f)
end
tmux.prepare tmux.prepare
tmux.send_keys 'cat /tmp/fzf-test/10**', :Tab, pane: 0 tmux.send_keys 'cat /tmp/fzf-test/10**', :Tab, pane: 0
tmux.until(1) { |lines| lines.item_count > 0 } tmux.until(1) { |lines| lines.item_count > 0 }
@ -614,8 +619,20 @@ module CompletionTest
tmux.send_keys 'C-L' tmux.send_keys 'C-L'
lines[-1].end_with?('no~such~user') lines[-1].end_with?('no~such~user')
end end
# /tmp/fzf\ test**<TAB>
tmux.send_keys 'C-u'
tmux.send_keys 'cat /tmp/fzf\ test/**', :Tab, pane: 0
tmux.until(1) { |lines| lines.item_count > 0 }
tmux.send_keys :Enter
tmux.until do |lines|
tmux.send_keys 'C-L'
lines[-1].end_with?('/tmp/fzf\ test/foobar')
end
ensure ensure
File.unlink 'no~such~user' ['/tmp/fzf-test', '/tmp/fzf test', '~/fzf-home', 'no~such~user'].each do |f|
FileUtils.rm_rf File.expand_path(f)
end
end end
def test_dir_completion def test_dir_completion