diff options
-rw-r--r-- | plugin/lsp_settings.vim | 19 | ||||
-rw-r--r-- | settings.json | 46 | ||||
-rw-r--r-- | settings/efm-langserver.vim | 13 |
3 files changed, 49 insertions, 29 deletions
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index 6e33743..ffe10b0 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -39,8 +39,8 @@ function! s:executable(cmd) abort return 0 endfunction -function! s:vimlsp_installer() abort - let l:ft = tolower(split(&filetype, '\.')[0]) +function! s:vimlsp_installer(ft) abort + let l:ft = tolower(split(a:ft, '\.')[0]) if !has_key(s:settings, l:ft) return [] endif @@ -103,8 +103,8 @@ function! s:vimlsp_install_server_post(command, job, code, ...) abort endif endfunction -function! s:vimlsp_install_server() abort - let l:entry = s:vimlsp_installer() +function! s:vimlsp_install_server(ft) abort + let l:entry = s:vimlsp_installer(a:ft) if empty(l:entry) return endif @@ -126,8 +126,8 @@ function! s:vimlsp_install_server() abort endif endfunction -function! s:vimlsp_settings_suggest() abort - if empty(s:vimlsp_installer()) +function! s:vimlsp_settings_suggest(ft) abort + if empty(s:vimlsp_installer(a:ft)) return endif if exists(':LspInstallServer') !=# 2 @@ -135,7 +135,7 @@ function! s:vimlsp_settings_suggest() abort echohl Directory echomsg 'If enable Language Server, please do :LspInstallServer' echohl None - command! -buffer LspInstallServer call s:vimlsp_install_server() + command! -buffer LspInstallServer call s:vimlsp_install_server(&l:filetype) endif endfunction @@ -253,11 +253,11 @@ function! s:vimlsp_load_or_suggest(ft) abort endfor if l:found ==# 0 - call s:vimlsp_settings_suggest() + call s:vimlsp_settings_suggest(a:ft) else doautocmd User lsp_setup if exists(':LspInstallServer') !=# 2 - command! -buffer LspInstallServer call s:vimlsp_install_server() + command! -buffer LspInstallServer call s:vimlsp_install_server(&l:filetype) endif endif @@ -271,3 +271,4 @@ function! s:load_or_suggest_group_name(ft) abort endfunction call s:vimlsp_setting() +call s:vimlsp_load_or_suggest('_') diff --git a/settings.json b/settings.json index a4d781f..5d32c03 100644 --- a/settings.json +++ b/settings.json @@ -1,4 +1,10 @@ { + "_": [ + { + "command": "efm-langserver", + "requires": [] + } + ], "c": [ { "command": "clangd", @@ -256,6 +262,26 @@ } } ], + "perl": [ + { + "command": "slp", + "requires": [ + "cpanm" + ] + }, + { + "command": "monastery", + "requires": [ + "cpanm" + ] + }, + { + "command": "perl-languageserver", + "requires": [ + "cpanm" + ] + } + ], "php": [ { "command": "intelephense", @@ -426,26 +452,6 @@ ] } ], - "perl": [ - { - "command": "slp", - "requires": [ - "cpanm" - ] - }, - { - "command": "monastery", - "requires": [ - "cpanm" - ] - }, - { - "command": "perl-languageserver", - "requires": [ - "cpanm" - ] - } - ], "yaml": [ { "command": "yaml-language-server", diff --git a/settings/efm-langserver.vim b/settings/efm-langserver.vim new file mode 100644 index 0000000..45711e2 --- /dev/null +++ b/settings/efm-langserver.vim @@ -0,0 +1,13 @@ +augroup vimlsp_settings_efm_langserver + au! + LspRegisterServer { + \ 'name': 'efm-langserver', + \ 'cmd': {server_info->lsp_settings#get('efm-langserver', 'cmd', [lsp_settings#exec_path('efm-langserver')])}, + \ 'root_uri':{server_info->lsp_settings#get('efm-langserver', 'root_uri', lsp_settings#root_uri(['.git/']))}, + \ 'initialization_options': lsp_settings#get('efm-langserver', 'initialization_options', v:null), + \ 'whitelist': lsp_settings#get('efm-langserver', 'whitelist', ['*']), + \ 'blacklist': lsp_settings#get('efm-langserver', 'blacklist', []), + \ 'config': lsp_settings#get('efm-langserver', 'config', {}), + \ 'workspace_config': lsp_settings#get('efm-langserver', 'workspace_config', {}), + \ } +augroup END |