diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2015-12-29 00:00:20 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2015-12-29 00:21:38 +0900 |
commit | e1dd798482490db6c43158d418973aa6e61659b7 (patch) | |
tree | 35279c7813366b4dd5908ec5c19631cc78195509 | |
parent | c8a3f6f06a171fcb5fc7c8129c225999859d398e (diff) |
[bash/zsh-completion] List hidden files as well
Close #456 and #457
-rw-r--r-- | shell/completion.bash | 10 | ||||
-rw-r--r-- | shell/completion.zsh | 8 | ||||
-rw-r--r-- | test/test_go.rb | 12 |
3 files changed, 21 insertions, 9 deletions
diff --git a/shell/completion.bash b/shell/completion.bash index f40e25e0..191091d0 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -110,9 +110,9 @@ __fzf_generic_path_completion() { if [ -z "$dir" -o -d "$dir" ]; then leftover=${base/#"$dir"} leftover=${leftover/#\/} - [ "$dir" = './' ] && dir='' + [ -z "$dir" ] && dir='.' || dir="${dir/%\//}" tput sc - matches=$(find -L "$dir"* $1 2> /dev/null | $fzf $FZF_COMPLETION_OPTS $2 -q "$leftover" | while read item; do + matches=$(\find -L "$dir" $1 -a -not -path "$dir" -print 2> /dev/null | sed 's@^\./@@' | $fzf $FZF_COMPLETION_OPTS $2 -q "$leftover" | while read item; do printf "%q$3 " "$item" done) matches=${matches% } @@ -171,19 +171,19 @@ _fzf_complete() { _fzf_path_completion() { __fzf_generic_path_completion \ - "-name .git -prune -o -name .svn -prune -o -type d -print -o -type f -print -o -type l -print" \ + "-name .git -prune -o -name .svn -prune -o ( -type d -o -type f -o -type l )" \ "-m" "" "$@" } _fzf_file_completion() { __fzf_generic_path_completion \ - "-name .git -prune -o -name .svn -prune -o -type f -print -o -type l -print" \ + "-name .git -prune -o -name .svn -prune -o ( -type f -o -type l )" \ "-m" "" "$@" } _fzf_dir_completion() { __fzf_generic_path_completion \ - "-name .git -prune -o -name .svn -prune -o -type d -print" \ + "-name .git -prune -o -name .svn -prune -o -type d" \ "" "/" "$@" } diff --git a/shell/completion.zsh b/shell/completion.zsh index 76ca801d..1b2a7dd2 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -30,9 +30,9 @@ __fzf_generic_path_completion() { if [ -z "$dir" -o -d ${~dir} ]; then leftover=${base/#"$dir"} leftover=${leftover/#\/} - [ "$dir" = './' ] && dir='' + [ -z "$dir" ] && dir='.' || dir="${dir/%\//}" dir=${~dir} - matches=$(\find -L $dir* ${=find_opts} 2> /dev/null | ${=fzf} ${=FZF_COMPLETION_OPTS} ${=fzf_opts} -q "$leftover" | while read item; do + matches=$(\find -L "$dir" ${=find_opts} -a -not -path "$dir" -print 2> /dev/null | sed 's@^\./@@' | ${=fzf} ${=FZF_COMPLETION_OPTS} ${=fzf_opts} -q "$leftover" | while read item; do printf "%q$suffix " "$item" done) matches=${matches% } @@ -50,13 +50,13 @@ __fzf_generic_path_completion() { _fzf_path_completion() { __fzf_generic_path_completion "$1" "$2" \ - "-name .git -prune -o -name .svn -prune -o -type d -print -o -type f -print -o -type l -print" \ + "-name .git -prune -o -name .svn -prune -o ( -type d -o -type f -o -type l )" \ "-m" "" " " } _fzf_dir_completion() { __fzf_generic_path_completion "$1" "$2" \ - "-name .git -prune -o -name .svn -prune -o -type d -print" \ + "-name .git -prune -o -name .svn -prune -o -type d" \ "" "/" "" } diff --git a/test/test_go.rb b/test/test_go.rb index 1e13ba38..c938921d 100644 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -1071,6 +1071,8 @@ module CompletionTest tmux.prepare tmux.send_keys 'cat /tmp/fzf-test/10**', :Tab, pane: 0 tmux.until(1) { |lines| lines.item_count > 0 } + tmux.send_keys ' !d' + tmux.until(1) { |lines| lines[-2].include?(' 2/') } tmux.send_keys :BTab, :BTab tmux.until(1) { |lines| lines[-2].include?('(2)') } tmux.send_keys :Enter @@ -1111,6 +1113,16 @@ module CompletionTest tmux.send_keys 'C-L' lines[-1].end_with?('/tmp/fzf\ test/foobar') end + + # Should include hidden files + (1..100).each { |i| FileUtils.touch "/tmp/fzf-test/.hidden-#{i}" } + tmux.send_keys 'C-u' + tmux.send_keys 'cat /tmp/fzf-test/hidden**', :Tab, pane: 0 + tmux.until(1) do |lines| + tmux.send_keys 'C-L' + lines[-2].include?('100/') && + lines[-3].include?('/tmp/fzf-test/.hidden-') + end ensure ['/tmp/fzf-test', '/tmp/fzf test', '~/.fzf-home', 'no~such~user'].each do |f| FileUtils.rm_rf File.expand_path(f) |