aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <mattn.jp@gmail.com>2020-01-30 19:15:46 +0900
committerYasuhiro Matsumoto <mattn.jp@gmail.com>2020-01-30 19:15:46 +0900
commit3db5a74ca943c6e9b36d3fd14a4b477d2f064cf7 (patch)
tree816858c30c238ceb1739b4e0dda54e2e589d2e10
parent8a75f94bbbf2e2a0574883a61f0ef04bc5855c33 (diff)
downloadvim-lsp-settings-3db5a74ca943c6e9b36d3fd14a4b477d2f064cf7.tar.gz
vim-lsp-settings-3db5a74ca943c6e9b36d3fd14a4b477d2f064cf7.tar.bz2
vim-lsp-settings-3db5a74ca943c6e9b36d3fd14a4b477d2f064cf7.zip
Poissible to specify settings value with lambda.
Fixes #118
-rw-r--r--autoload/lsp_settings.vim3
-rw-r--r--test/lsp_settings.vimspec2
2 files changed, 5 insertions, 0 deletions
diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim
index 82ba5e6..0b149f1 100644
--- a/autoload/lsp_settings.vim
+++ b/autoload/lsp_settings.vim
@@ -102,6 +102,9 @@ function! lsp_settings#get(name, key, default) abort
endif
return a:default
endif
+ if type(l:config[a:key]) == v:t_func
+ return l:config[a:key](a:name, a:key)
+ endif
return l:config[a:key]
endfunction
diff --git a/test/lsp_settings.vimspec b/test/lsp_settings.vimspec
index 30995f6..529187e 100644
--- a/test/lsp_settings.vimspec
+++ b/test/lsp_settings.vimspec
@@ -4,6 +4,8 @@ Describe lsp_settings
Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'bad')
let g:lsp_settings = {'pyls': {'cmd': 'good'}}
Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'good')
+ let g:lsp_settings = {'pyls': {'cmd': {key,name->'good'}}}
+ Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'good')
unlet g:lsp_settings
End