diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2016-01-20 01:09:58 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2016-01-20 01:38:24 +0900 |
commit | 96176476f3990507b38f2ec45d24c12fcb7aa075 (patch) | |
tree | 81d15944ac1e5778e3f75888c595e23f60bff146 /test | |
parent | 68c84264af17e735102957a5263026e3f96b1cb7 (diff) |
Make fuzzy completion customizable with _fzf_compgen_{path,dir}
Notes:
- You can now override _fzf_compgen_path and _fzf_compgen_dir functions
to use custom commands such as ag instead of find for listing
completion candidates.
- The first argument is the base path to start traversal
- Removed file-only completion in bash, i.e. _fzf_file_completion.
Maintaining a list of commands that only expect files, not
directories, is cumbersome (there are too many) and error-prone.
TBD:
- Added $FZF_COMPLETION_DIR_COMMANDS to customize the list of commands
which use directory-only completion. The default is "cd pushd rmdir".
Not sure if it's the best approach to address the requirement, I'll
leave it as an undocumented feature.
Related: #406 (@thomcom), #456 (@frizinak)
Diffstat (limited to 'test')
-rw-r--r-- | test/test_go.rb | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/test/test_go.rb b/test/test_go.rb index efbbf250..a8f75c64 100644 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -1269,7 +1269,7 @@ module CompletionTest 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.send_keys 'C-K', :Enter tmux.until do |lines| tmux.send_keys 'C-L' lines[-1].end_with?('/tmp/fzf\ test/foobar') @@ -1339,6 +1339,20 @@ module CompletionTest tmux.send_keys 'C-L' lines[-1] == "kill #{pid}" end + + def test_custom_completion + tmux.send_keys '_fzf_compgen_path() { echo "\$1"; seq 10; }', :Enter + tmux.prepare + tmux.send_keys 'ls /tmp/**', :Tab, pane: 0 + tmux.until(1) { |lines| lines.item_count == 11 } + tmux.send_keys :BTab, :BTab, :BTab + tmux.until(1) { |lines| lines[-2].include? '(3)' } + tmux.send_keys :Enter + tmux.until do |lines| + tmux.send_keys 'C-L' + lines[-1] == "ls /tmp 1 2" + end + end ensure Process.kill 'KILL', pid.to_i rescue nil if pid end |