From d2a871d1cf98fb737c39d6d49341e0eb6ac2d8ae Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 19:56:01 +0900 Subject: Add checker --- plugin/lsp_settings.vim | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'plugin') diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index cf368be..dcf4a3d 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -4,6 +4,7 @@ endif let g:loaded_lsp_settings= 1 let s:settings_dir = expand(':h:h').'/settings' +let s:checkers_dir = expand(':h:h').'/checkers' let s:installer_dir = expand(':h:h').'/installer' let s:servers_dir = expand(':h:h').'/servers' let s:settings = json_decode(join(readfile(expand(':h:h').'/settings.json'), "\n")) @@ -203,13 +204,28 @@ function! s:vimlsp_load_or_suggest(ft) abort if type(l:command) == type([]) let l:command = l:command[0] endif - if s:executable(l:command) - let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command) - if filereadable(l:script) - exe 'source' l:script - let l:found += 1 - break + if !s:executable(l:command) + let l:script = printf('%s/%s.vim', s:checkers_dir, l:server.command) + if !filereadable(l:script) || get(l:server, 'disabled', 0) == 1 + continue endif + try + exe 'source' l:script + let l:command = LspCheckCommand() + catch + continue + finally + let l:server['disabled'] = 1 + if exists('*LspCheckCommand') + delfunction LspCheckCommand + endif + endtry + endif + let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command) + if filereadable(l:script) + exe 'source' l:script + let l:found += 1 + break endif endfor -- cgit v1.2.3-54-g00ecf From 129f123045dbb5055fd9d5c4760c5335642229c9 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 23:58:33 +0900 Subject: Use fallback --- plugin/lsp_settings.vim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'plugin') diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index dcf4a3d..ee25582 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -206,19 +206,22 @@ function! s:vimlsp_load_or_suggest(ft) abort endif if !s:executable(l:command) let l:script = printf('%s/%s.vim', s:checkers_dir, l:server.command) - if !filereadable(l:script) || get(l:server, 'disabled', 0) == 1 + if !filereadable(l:script) || has_key(l:server, 'fallback') continue endif + let l:server['fallback'] = '' try exe 'source' l:script let l:command = LspCheckCommand() + let l:server['fallback'] = l:command catch - continue finally - let l:server['disabled'] = 1 if exists('*LspCheckCommand') delfunction LspCheckCommand endif + if empty(l:server['fallback']) + continue + endif endtry endif let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command) -- cgit v1.2.3-54-g00ecf