summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2016-08-19 03:04:20 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2016-08-19 03:05:22 +0900
commit62f6ff9d6cc414d7c424281c7a6f40e02776b044 (patch)
tree24a09525f6e0f3f661d054daf5a12aabb45115db
parent37dc273148df0893053bf5cda0582a23f5c2b2d2 (diff)
[vim] Make arguments to fzf#wrap() optional
fzf#wrap([name string,] [opts dict,] [fullscreen boolean])
-rw-r--r--README.md2
-rw-r--r--plugin/fzf.vim25
2 files changed, 17 insertions, 10 deletions
diff --git a/README.md b/README.md
index 5de73037..7f0dd7a6 100644
--- a/README.md
+++ b/README.md
@@ -344,7 +344,7 @@ page](https://github.com/junegunn/fzf/wiki/Examples-(vim)).
#### `fzf#wrap`
-`fzf#wrap(name string, [opts dict, [fullscreen boolean]])` is a helper
+`fzf#wrap([name string,] [opts dict,] [fullscreen boolean])` is a helper
function that decorates the options dictionary so that it understands
`g:fzf_layout`, `g:fzf_action`, and `g:fzf_history_dir` like `:FZF`.
diff --git a/plugin/fzf.vim b/plugin/fzf.vim
index b7e7dc49..b9d39cd6 100644
--- a/plugin/fzf.vim
+++ b/plugin/fzf.vim
@@ -154,13 +154,20 @@ function! s:common_sink(action, lines) abort
endtry
endfunction
-" name string, [opts dict, [fullscreen boolean]]
-function! fzf#wrap(name, ...)
- if type(a:name) != type('')
- throw 'invalid name type: string expected'
- endif
- let opts = copy(get(a:000, 0, {}))
- let bang = get(a:000, 1, 0)
+" [name string,] [opts dict,] [fullscreen boolean]
+function! fzf#wrap(...)
+ let args = ['', {}, 0]
+ let expects = map(copy(args), 'type(v:val)')
+ let tidx = 0
+ for arg in copy(a:000)
+ let tidx = index(expects, type(arg), tidx)
+ if tidx < 0
+ throw 'invalid arguments (expected: [name string] [opts dict] [fullscreen boolean])'
+ endif
+ let args[tidx] = arg
+ let tidx += 1
+ endfor
+ let [name, opts, bang] = args
" Layout: g:fzf_layout (and deprecated g:fzf_height)
if bang
@@ -179,12 +186,12 @@ function! fzf#wrap(name, ...)
" History: g:fzf_history_dir
let opts.options = get(opts, 'options', '')
- if len(get(g:, 'fzf_history_dir', ''))
+ if len(name) && len(get(g:, 'fzf_history_dir', ''))
let dir = expand(g:fzf_history_dir)
if !isdirectory(dir)
call mkdir(dir, 'p')
endif
- let opts.options = join(['--history', s:escape(dir.'/'.a:name), opts.options])
+ let opts.options = join(['--history', s:escape(dir.'/'.name), opts.options])
endif
" Action: g:fzf_action