aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/lsp_setup.vim22
-rw-r--r--setting.json86
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"
]
}
- }
+ ]
}