[bash] Do not append space when path completion is cancelled

Close #990
This commit is contained in:
Junegunn Choi 2017-07-30 21:51:44 +09:00
parent 1fcc07e54e
commit 376a76d1d3
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
2 changed files with 18 additions and 4 deletions

View File

@ -151,7 +151,7 @@ __fzf_generic_path_completion() {
matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS" $fzf $2 -q "$leftover" | while read -r item; do matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS" $fzf $2 -q "$leftover" | while read -r item; do
printf "%q$3 " "$item" printf "%q$3 " "$item"
done) done)
matches=${matches% } [ $4 = 1 ] && matches=${matches% }
if [ -n "$matches" ]; then if [ -n "$matches" ]; then
COMPREPLY=( "$matches" ) COMPREPLY=( "$matches" )
else else
@ -167,6 +167,7 @@ __fzf_generic_path_completion() {
shift shift
shift shift
shift shift
shift
_fzf_handle_dynamic_completion "$cmd" "$@" _fzf_handle_dynamic_completion "$cmd" "$@"
fi fi
} }
@ -198,7 +199,7 @@ _fzf_complete() {
} }
_fzf_path_completion() { _fzf_path_completion() {
__fzf_generic_path_completion _fzf_compgen_path "-m" "" "$@" __fzf_generic_path_completion _fzf_compgen_path "-m" "" 0 "$@"
} }
# Deprecated. No file only completion. # Deprecated. No file only completion.
@ -207,7 +208,7 @@ _fzf_file_completion() {
} }
_fzf_dir_completion() { _fzf_dir_completion() {
__fzf_generic_path_completion _fzf_compgen_dir "" "/" "$@" __fzf_generic_path_completion _fzf_compgen_dir "" "/" 1 "$@"
} }
_fzf_complete_kill() { _fzf_complete_kill() {
@ -299,7 +300,7 @@ _fzf_defc() {
# Anything # Anything
for cmd in $a_cmds; do for cmd in $a_cmds; do
_fzf_defc "$cmd" _fzf_path_completion "-o default -o bashdefault" _fzf_defc "$cmd" _fzf_path_completion "-o nospace -o default -o bashdefault"
done done
# Directory # Directory

View File

@ -1482,6 +1482,19 @@ module CompletionTest
tmux.send_keys :Enter tmux.send_keys :Enter
end end
def test_completion_cancel
%w[ls cd].each do |cmd|
tmux.prepare
tmux.send_keys "#{cmd} **", :Tab
tmux.until { |lines| lines.item_count > 0 }
tmux.send_keys 'C-c'
tmux.until { |lines| lines[-1].include?('**') }
tmux.send_keys 'xoxo'
tmux.until { |lines| lines[-1].include?('**xoxo') }
tmux.send_keys 'C-u'
end
end
def test_dir_completion def test_dir_completion
(1..100).each do |idx| (1..100).each do |idx|
FileUtils.mkdir_p "/tmp/fzf-test/d#{idx}" FileUtils.mkdir_p "/tmp/fzf-test/d#{idx}"