diff options
-rw-r--r-- | plugin/lsp_setup.vim | 22 | ||||
-rw-r--r-- | setting.json | 86 |
2 files changed, 71 insertions, 37 deletions
diff --git a/plugin/lsp_setup.vim b/plugin/lsp_setup.vim index 8c22b00..dc5fe48 100644 --- a/plugin/lsp_setup.vim +++ b/plugin/lsp_setup.vim @@ -1,13 +1,29 @@ let s:setting_dir = expand('<sfile>:h:h').'/setting' let s:setting = json_decode(join(readfile(expand('<sfile>:h:h').'/setting.json'), "\n")) +function! s:vimlsp_settings_suggest(cmd) abort + echomsg "Do you install " . a:cmd +endfunction + function! s:vimlsp_setting() abort for l:ft in keys(s:setting) - for l:command in keys(s:setting[l:ft]) - if executable(l:command) - exe 'source' printf('%s/%s.vim', s:setting_dir, l:command) + let l:found = 0 + if empty(s:setting[l:ft]) + continue + endif + for l:server in s:setting[l:ft] + if executable(l:server.command) + exe 'source' printf('%s/%s.vim', s:setting_dir, l:server.command) + let l:found += 1 + break endif endfor + if l:found == 0 + exe printf('augroup vimlsp_suggest_%s', l:ft) + au! + exe printf('autocmd FileType %s call s:vimlsp_settings_suggest(%s)', l:ft, string(s:setting[l:ft][0].command)) + augroup END + endif endfor endfunction diff --git a/setting.json b/setting.json index 081cf05..842d6d3 100644 --- a/setting.json +++ b/setting.json @@ -1,72 +1,90 @@ { - "typescript": { - "typescript-language-server": { + "typescript": [ + { + "command": "typescript-language-server", "requires": [ "npm" ] } - }, - "javascript": { - "javascript-typescript-langserver": { + ], + "javascript": [ + { + "command": "javascript-typescript-langserver", "requires": [ "npm" ] }, - "typescript-language-server": { + { + "command": "typescript-language-server", "requires": [ "npm" ] } - }, - "python": { - "pyls": { + ], + "python": [ + { + "command": "pyls", "requires": [ "pip" ] } - }, - "rust": { - "rls": { + ], + "rust": [ + { + "command": "rls", "requires": [ "rustup" ] } - }, - "go": { - "gopls": { + ], + "go": [ + { + "command": "gopls", "requires": [ "go" ] } - }, - "ruby": { - "solargraph": { + ], + "ruby": [ + { + "command": "solargraph", "requires": [ "gem" ] } - }, - "php": { - "intelephense-server": { + ], + "php": [ + { + "command": "intelephense-server", "requires": [ "npm" ] } - }, - "java": { - "eclipse-jdt-ls": {} - }, - "kotlin": { - "kotlin-language-server": {} - }, - "lua": { - "emmylua-ls": {} - }, - "vim": { - "vim-language-server": { + ], + "java": [ + { + "command": "eclipse-jdt-ls", + "requires": [] + } + ], + "kotlin": [ + { + "command": "kotlin-language-server", + "requires": [] + } + ], + "lua": [ + { + "command": "emmylua-ls", + "requires": [] + } + ], + "vim": [ + { + "command": "vim-language-server", "requires": [ "npm" ] } - } + ] } |