aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <mattn.jp@gmail.com>2019-12-16 15:02:16 +0900
committerYasuhiro Matsumoto <mattn.jp@gmail.com>2019-12-16 15:02:16 +0900
commit5ed5dc7239f76b3aacff15332e9a39e4772543e2 (patch)
tree06b6e625fe5fdd15554893907c1e8b89a1635cf6
parente14028f6d3f9ac75e1758f981b6e950d6c20521c (diff)
downloadvim-lsp-settings-5ed5dc7239f76b3aacff15332e9a39e4772543e2.tar.gz
vim-lsp-settings-5ed5dc7239f76b3aacff15332e9a39e4772543e2.tar.bz2
vim-lsp-settings-5ed5dc7239f76b3aacff15332e9a39e4772543e2.zip
Fix override
-rw-r--r--plugin/lsp_setup.vim26
1 files changed, 23 insertions, 3 deletions
diff --git a/plugin/lsp_setup.vim b/plugin/lsp_setup.vim
index 44e780d..8145708 100644
--- a/plugin/lsp_setup.vim
+++ b/plugin/lsp_setup.vim
@@ -28,6 +28,9 @@ function! s:executable(cmd) abort
endfunction
function! s:vimlsp_installer() abort
+ if !has_key(s:settings, &filetype)
+ return ''
+ endif
let l:setting = s:settings[&filetype]
if empty(l:setting)
return ''
@@ -49,7 +52,8 @@ function! s:vimlsp_installer() abort
if empty(l:found)
return ''
endif
- let l:command = printf('%s/install-%s', s:installer_dir, l:setting[0].command)
+ let l:command = s:vimlsp_settings_get(l:setting[0].command, 'cmd', l:setting[0].command)
+ let l:command = printf('%s/install-%s', s:installer_dir, l:command)
if has('win32')
let l:command = substitute(l:command, '/', '\', 'g') . '.cmd'
else
@@ -74,6 +78,22 @@ function! s:vimlsp_settings_suggest() abort
command! -buffer LspInstallServer call s:vimlsp_install_server()
endfunction
+function! s:vimlsp_settings_get(name, key, default) abort
+ let l:config = get(g:, 'lsp_settings', {})
+ if !has_key(l:config, a:name)
+ if !has_key(l:config, '*')
+ return a:default
+ endif
+ let l:config = l:config['*']
+ else
+ let l:config = l:config[a:name]
+ endif
+ if !has_key(l:config, a:key)
+ return a:default
+ endif
+ return l:config[a:key]
+endfunction
+
function! s:vimlsp_setting() abort
for l:ft in keys(s:settings)
let l:found = 0
@@ -81,7 +101,7 @@ function! s:vimlsp_setting() abort
continue
endif
for l:server in s:settings[l:ft]
- if s:executable(l:server.command)
+ if s:executable(s:vimlsp_settings_get(l:server.command, 'cmd', l:server.command))
let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command)
if filereadable(l:script)
exe 'source' l:script
@@ -95,7 +115,7 @@ function! s:vimlsp_setting() abort
au!
exe printf('autocmd FileType %s call s:vimlsp_settings_suggest()', l:ft)
augroup END
- else
+ elseif !empty(s:vimlsp_installer())
command! -buffer LspInstallServer call s:vimlsp_install_server()
endif
endfor