From 111d1934c49ac22cf84abf0ada9c24f091fc38cd Mon Sep 17 00:00:00 2001
From: Junegunn Choi <junegunn.c@gmail.com>
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 932efde1..840d1fed 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
 
-- 
GitLab