From b08b8519c600b3011dc8578ca4c5606955f895bf Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Fri, 25 Sep 2015 11:45:02 +0900 Subject: [PATCH] Append extra options string in completion functions --- autoload/fzf/vim.vim | 5 +++++ autoload/fzf/vim/complete.vim | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index 0a8a033..5faaab2 100644 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -778,6 +778,11 @@ function! fzf#vim#complete(...) endif let s:opts = s:eval(s:opts, 'source', s:query) let s:opts = s:eval(s:opts, 'options', s:query) + let s:opts = s:eval(s:opts, 'extra_options', s:query) + if has_key(s:opts, 'extra_options') + let s:opts.options = + \ join(filter([get(s:opts, 'options', ''), remove(s:opts, 'extra_options')], '!empty(v:val)')) + endif call feedkeys("\(-fzf-complete-trigger)") return '' diff --git a/autoload/fzf/vim/complete.vim b/autoload/fzf/vim/complete.vim index cd5147d..8b0011c 100644 --- a/autoload/fzf/vim/complete.vim +++ b/autoload/fzf/vim/complete.vim @@ -24,8 +24,18 @@ let s:cpo_save = &cpo set cpo&vim +function! s:extend(base, extra) + let base = copy(a:base) + if has_key(a:extra, 'options') + let extra = copy(a:extra) + let extra.extra_options = remove(extra, 'options') + return extend(base, extra) + endif + return extend(base, a:extra) +endfunction + function! fzf#vim#complete#word(...) - return fzf#vim#complete(extend({ + return fzf#vim#complete(s:extend({ \ 'source': 'cat /usr/share/dict/words'}, \ get(a:000, 0, g:fzf#vim#default_layout))) endfunction @@ -104,7 +114,7 @@ endfunction function! fzf#vim#complete#path(command, ...) let s:file_cmd = a:command - return fzf#vim#complete(extend({ + return fzf#vim#complete(s:extend({ \ 'prefix': function('s:fname_prefix'), \ 'source': function('s:file_source'), \ 'options': function('s:file_options')}, get(a:000, 0, g:fzf#vim#default_layout))) @@ -119,7 +129,7 @@ function! s:reduce_line(lines) endfunction function! fzf#vim#complete#line(...) - return fzf#vim#complete(extend({ + return fzf#vim#complete(s:extend({ \ 'prefix': '^.*$', \ 'source': fzf#vim#_lines(0), \ 'options': '--tiebreak=index --ansi --nth 3..', @@ -127,7 +137,7 @@ function! fzf#vim#complete#line(...) endfunction function! fzf#vim#complete#buffer_line(...) - call fzf#vim#complete(extend({ + call fzf#vim#complete(s:extend({ \ 'prefix': '^.*$', \ 'source': s:uniq(getline(1, '$'))}, get(a:000, 0, g:fzf#vim#default_layout))) endfunction