From 111d1934c49ac22cf84abf0ada9c24f091fc38cd Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Thu, 2 Mar 2017 14:14:57 +0900 Subject: [PATCH] [vim] Throw error if g:fzf_layout is incorrectly used https://github.com/junegunn/fzf.vim/issues/327 https://github.com/junegunn/fzf.vim/issues/317 --- plugin/fzf.vim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 932efde..840d1fe 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -192,6 +192,16 @@ function! s:defaults() return empty(colors) ? '' : ('--color='.colors) endfunction +function! s:validate_layout(layout) + for key in keys(a:layout) + if index(s:layout_keys, key) < 0 + throw printf('invalid entry in g:fzf_layout: %s (allowed: %s)%s', + \ key, join(s:layout_keys, ', '), key == 'options' ? '. Use $FZF_DEFAULT_OPTS.' : '') + endif + endfor + return a:layout +endfunction + " [name string,] [opts dict,] [fullscreen boolean] function! fzf#wrap(...) let args = ['', {}, 0] @@ -223,7 +233,7 @@ function! fzf#wrap(...) if !exists('g:fzf_layout') && exists('g:fzf_height') let opts.down = g:fzf_height else - let opts = extend(opts, get(g:, 'fzf_layout', s:default_layout)) + let opts = extend(opts, s:validate_layout(get(g:, 'fzf_layout', s:default_layout))) endif endif