diff options
author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2019-12-18 17:38:02 +0900 |
---|---|---|
committer | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2019-12-18 17:38:02 +0900 |
commit | 6b485e52f712de9686d9ada66a2ab7b1ed8842aa (patch) | |
tree | 3718d21e6463c3940600972f479ae3acf6f2b632 | |
parent | 96cdf55580701fbf084e2a43802007f6c077922d (diff) | |
download | vim-lsp-settings-6b485e52f712de9686d9ada66a2ab7b1ed8842aa.tar.gz vim-lsp-settings-6b485e52f712de9686d9ada66a2ab7b1ed8842aa.tar.bz2 vim-lsp-settings-6b485e52f712de9686d9ada66a2ab7b1ed8842aa.zip |
Enable server when installation finished successfully
-rw-r--r-- | plugin/lsp_settings.vim | 34 | ||||
-rw-r--r-- | settings/docker-langserver.vim | 2 |
2 files changed, 27 insertions, 9 deletions
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index bce5e5e..3f7df59 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -29,11 +29,11 @@ endfunction function! s:vimlsp_installer() abort if !has_key(s:settings, &filetype) - return '' + return [] endif let l:server = s:settings[&filetype] if empty(l:server) - return '' + return [] endif let l:found = {} for l:conf in l:server @@ -50,7 +50,7 @@ function! s:vimlsp_installer() abort endif endfor if empty(l:found) - return '' + return [] endif for l:conf in l:server let l:command = s:vimlsp_settings_get(l:conf.command, 'cmd', l:conf.command) @@ -64,15 +64,33 @@ function! s:vimlsp_installer() abort let l:command = l:command . '.sh' endif if s:executable(l:command) - return l:command + return [l:conf.command, l:command] endif endfor - return '' + return [] +endfunction + +function! s:vimlsp_install_server_post(command, job, code) abort + if a:code != 0 + return + endif + if s:executable(a:command) + let l:script = printf('%s/%s.vim', s:settings_dir, a:command) + echomsg l:script + if filereadable(l:script) + exe 'source' l:script + doautocmd User lsp_setup + endif + endif endfunction function! s:vimlsp_install_server() abort - let l:command = s:vimlsp_installer() - exe 'terminal' l:command + let l:entry = s:vimlsp_installer() + exe 'terminal' l:entry[1] + let l:job = term_getjob(bufnr('%')) + if l:job != v:null + call job_setoptions(l:job, {'exit_cb': function('s:vimlsp_install_server_post', [l:entry[0]])}) + endif endfunction function! s:vimlsp_settings_suggest() abort @@ -125,7 +143,7 @@ function! s:vimlsp_setting() abort if l:found ==# 0 exe printf('augroup vimlsp_suggest_%s', l:ft) au! - exe printf('autocmd FileType %s call s:vimlsp_settings_suggest()', l:ft) + exe printf('autocmd FileType %s ++once call s:vimlsp_settings_suggest()', l:ft) augroup END elseif !empty(s:vimlsp_installer()) command! -buffer LspInstallServer call s:vimlsp_install_server() diff --git a/settings/docker-langserver.vim b/settings/docker-langserver.vim index e07a841..936c47a 100644 --- a/settings/docker-langserver.vim +++ b/settings/docker-langserver.vim @@ -1,7 +1,7 @@ augroup vimlsp_settings_dockerfile_language_server_nodejs au! autocmd User lsp_setup ++once call lsp#register_server({ - \ 'name': 'dockerfile-language-server-nodejs', + \ 'name': 'docker-langserver', \ 'cmd': {server_info->lsp_settings#get('docker-langserver', 'cmd', [lsp_settings#exec_path('docker-langserver'), '--stdio'])}, \ 'whitelist': lsp_settings#get('docker-langserver', 'whitelist', ['dockerfile']), \ 'blacklist': lsp_settings#get('docker-langserver', 'blacklist', []), |