diff options
author | mattn <mattn.jp@gmail.com> | 2020-01-23 00:01:13 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-23 00:01:13 +0900 |
commit | a31b6776c4a76c3720a8adeeb2c715753fe49986 (patch) | |
tree | 38a816298c01e85ef8a58ed2124adec3f32abe8a /plugin | |
parent | 695b18f119ffabb7c8d068ce1ce6cfaff4ae6b08 (diff) | |
parent | 213c7aef4cc6e7b70d20c268bb6a2194afcfa865 (diff) | |
download | vim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.tar.gz vim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.tar.bz2 vim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.zip |
Merge pull request #97 from mattn/add-common-lisp
Add common lisp
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/lsp_settings.vim | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index cf368be..ee25582 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('<sfile>:h:h').'/settings' +let s:checkers_dir = expand('<sfile>:h:h').'/checkers' let s:installer_dir = expand('<sfile>:h:h').'/installer' let s:servers_dir = expand('<sfile>:h:h').'/servers' let s:settings = json_decode(join(readfile(expand('<sfile>:h:h').'/settings.json'), "\n")) @@ -203,13 +204,31 @@ 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) || 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 + finally + 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) + if filereadable(l:script) + exe 'source' l:script + let l:found += 1 + break endif endfor |