aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2020-01-23 00:01:13 +0900
committerGitHub <noreply@github.com>2020-01-23 00:01:13 +0900
commita31b6776c4a76c3720a8adeeb2c715753fe49986 (patch)
tree38a816298c01e85ef8a58ed2124adec3f32abe8a /plugin
parent695b18f119ffabb7c8d068ce1ce6cfaff4ae6b08 (diff)
parent213c7aef4cc6e7b70d20c268bb6a2194afcfa865 (diff)
downloadvim-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.vim31
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