mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-21 09:13:44 +08:00
89 lines
2.8 KiB
VimL
89 lines
2.8 KiB
VimL
function! SpaceVim#layers#lsp#plugins() abort
|
|
let plugins = []
|
|
|
|
if has('nvim')
|
|
let plugins = add(plugins, ['SpaceVim/LanguageClient-neovim',
|
|
\ { 'merged': 0, 'if': has('python3') }])
|
|
endif
|
|
|
|
return plugins
|
|
endfunction
|
|
|
|
function! SpaceVim#layers#lsp#config() abort
|
|
" SpaceVim/LanguageClient-neovim {{{
|
|
let g:LanguageClient_diagnosticsDisplay = {
|
|
\ 1: {
|
|
\ 'name': 'Error',
|
|
\ 'signText': g:spacevim_error_symbol,
|
|
\ },
|
|
\ 2: {
|
|
\ 'name': 'Warning',
|
|
\ 'signText': g:spacevim_warning_symbol,
|
|
\ },
|
|
\ 3: {
|
|
\ 'name': 'Information',
|
|
\ 'signText': g:spacevim_info_symbol,
|
|
\ },
|
|
\ 4: {
|
|
\ 'name': 'Hint',
|
|
\ 'signText': g:spacevim_info_symbol,
|
|
\ },
|
|
\ }
|
|
|
|
if g:spacevim_enable_neomake
|
|
let g:LanguageClient_diagnosticsDisplay[1].texthl = 'NeomakeError'
|
|
let g:LanguageClient_diagnosticsDisplay[1].signTexthl = 'NeomakeErrorSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[2].texthl = 'NeomakeWarning'
|
|
let g:LanguageClient_diagnosticsDisplay[2].signTexthl =
|
|
\ 'NeomakeWarningSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[3].texthl = 'NeomakeInfo'
|
|
let g:LanguageClient_diagnosticsDisplay[3].signTexthl = 'NeomakeInfoSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[4].texthl = 'NeomakeMessage'
|
|
let g:LanguageClient_diagnosticsDisplay[4].signTexthl =
|
|
\ 'NeomakeMessageSign'
|
|
elseif g:spacevim_enable_ale
|
|
let g:LanguageClient_diagnosticsDisplay[1].texthl = 'ALEError'
|
|
let g:LanguageClient_diagnosticsDisplay[1].signTexthl = 'ALEErrorSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[2].texthl = 'ALEWarning'
|
|
let g:LanguageClient_diagnosticsDisplay[2].signTexthl = 'ALEWarningSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[3].texthl = 'ALEInfo'
|
|
let g:LanguageClient_diagnosticsDisplay[3].signTexthl = 'ALEInfoSign'
|
|
|
|
let g:LanguageClient_diagnosticsDisplay[4].texthl = 'ALEInfo'
|
|
let g:LanguageClient_diagnosticsDisplay[4].signTexthl = 'ALEInfoSign'
|
|
endif
|
|
|
|
let g:LanguageClient_autoStart = 1
|
|
" }}}
|
|
endfunction
|
|
|
|
let s:enabled_fts = []
|
|
|
|
let s:lsp_servers = {
|
|
\ 'javascript' : ['javascript-typescript-stdio'],
|
|
\ }
|
|
|
|
function! SpaceVim#layers#lsp#set_variable(var) abort
|
|
for ft in get(a:var, 'filetypes', [])
|
|
let cmd = get(s:lsp_servers, ft, [''])[0]
|
|
if empty(cmd)
|
|
call SpaceVim#logger#warn('Failed to find the lsp server command for ' . ft)
|
|
else
|
|
if executable(cmd)
|
|
call add(s:enabled_fts, ft)
|
|
else
|
|
call SpaceVim#logger#warn('Failed to enable lsp for ' . ft . ', ' . cmd . 'is not executable!')
|
|
endif
|
|
endif
|
|
endfor
|
|
endfunction
|
|
|
|
function! SpaceVim#layers#lsp#check_filetype(ft) abort
|
|
return index(s:enabled_fts, a:ft) != -1
|
|
endfunction
|