aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/lsp_settings.vim6
-rw-r--r--schema.json56
-rw-r--r--settings.json15
-rw-r--r--settings/json-languageserver.vim2
-rw-r--r--settings/vim-language-server.vim4
5 files changed, 78 insertions, 5 deletions
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim
index ffe10b0..3d4ee3d 100644
--- a/plugin/lsp_settings.vim
+++ b/plugin/lsp_settings.vim
@@ -17,6 +17,8 @@ let s:servers_dir = expand('<sfile>:h:h').'/servers'
let s:settings = json_decode(join(readfile(expand('<sfile>:h:h').'/settings.json'), "\n"))
let s:ftmap = {}
+call remove(s:settings, '$schema')
+
function! s:executable(cmd) abort
if executable(a:cmd)
return 1
@@ -133,7 +135,7 @@ function! s:vimlsp_settings_suggest(ft) abort
if exists(':LspInstallServer') !=# 2
redraw
echohl Directory
- echomsg 'If enable Language Server, please do :LspInstallServer'
+ echomsg 'Please do :LspInstallServer to enable Language Server'
echohl None
command! -buffer LspInstallServer call s:vimlsp_install_server(&l:filetype)
endif
@@ -186,7 +188,7 @@ function! s:vimlsp_suggest_plugin() abort
endif
redraw
echohl Directory
- echomsg printf('If enable Language Server, please install vim-plugin "%s"', l:server['vim-plugin']['name'])
+ echomsg printf('Please install vim-plugin "%s" to enable Language Server', l:server['vim-plugin']['name'])
echohl None
return
endfor
diff --git a/schema.json b/schema.json
new file mode 100644
index 0000000..c9ccb91
--- /dev/null
+++ b/schema.json
@@ -0,0 +1,56 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema",
+ "type": "object",
+ "title": "vim-lsp-settings",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^\\$schema$": {
+ "type": "string"
+ },
+ "^([a-z0-9_-]+)+$": {
+ "type": "array",
+ "description": "filetype name",
+ "items": {
+ "description": "define command description",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "command",
+ "requires"
+ ],
+ "properties": {
+ "command": {
+ "description": "define name of language server",
+ "type": "string"
+ },
+ "requires": {
+ "description": "define commands to install this language server",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "executable command name"
+ }
+ },
+ "vim-plugin": {
+ "description": "define suggestion for vim-plugin",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "extensions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "description": "file extensions"
+ }
+ },
+ "name": {
+ "type": "string",
+ "description": "plugin identify user/repo"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/settings.json b/settings.json
index 5d32c03..2c971d5 100644
--- a/settings.json
+++ b/settings.json
@@ -1,4 +1,5 @@
{
+ "$schema": "./schema.json",
"_": [
{
"command": "efm-langserver",
@@ -212,6 +213,20 @@
]
}
],
+ "jsonc": [
+ {
+ "command": "json-languageserver",
+ "requires": [
+ "npm"
+ ],
+ "vim-plugin": {
+ "extensions": [
+ "cjson"
+ ],
+ "name": "neoclide/jsonc.vim"
+ }
+ }
+ ],
"kotlin": [
{
"command": "kotlin-language-server",
diff --git a/settings/json-languageserver.vim b/settings/json-languageserver.vim
index d7e79ca..a19b3b6 100644
--- a/settings/json-languageserver.vim
+++ b/settings/json-languageserver.vim
@@ -5,7 +5,7 @@ augroup vimlsp_settings_json_languageserver
\ 'cmd': {server_info->lsp_settings#get('json-languageserver', 'cmd', [lsp_settings#exec_path('json-languageserver'), '--stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('json-languageserver', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
\ 'initialization_options': lsp_settings#get('json-languageserver', 'initialization_options', v:null),
- \ 'whitelist': lsp_settings#get('json-languageserver', 'whitelist', ['json']),
+ \ 'whitelist': lsp_settings#get('json-languageserver', 'whitelist', ['json', 'jsonc']),
\ 'blacklist': lsp_settings#get('json-languageserver', 'blacklist', []),
\ 'config': lsp_settings#get('json-languageserver', 'config', {}),
\ 'workspace_config': lsp_settings#get('json-languageserver', 'workspace_config', {name, key->{'json': {'format': {'enable': v:true}, 'schemas': json_decode(join(readfile(expand('<sfile>:h:h') . '/data/catalog.json'), "\n"))['schemas']}}}),
diff --git a/settings/vim-language-server.vim b/settings/vim-language-server.vim
index ab91f10..e31efed 100644
--- a/settings/vim-language-server.vim
+++ b/settings/vim-language-server.vim
@@ -4,8 +4,8 @@ augroup vimlsp_settings_vim_language_server
\ 'name': 'vim-language-server',
\ 'cmd': {server_info->lsp_settings#get('vim-language-server', 'cmd', [lsp_settings#exec_path('vim-language-server'), '--stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('vim-language-server', 'root_uri', lsp_settings#root_uri(extend(['.vim/', 'vimfiles/'], g:lsp_settings_root_markers)))},
- \ 'initialization_options': { 'vimruntime': $VIMRUNTIME, 'runtimepath': &rtp },
- \ 'whitelist': lsp_settings#get('vim-language-server', 'whitelist', ['vim']),
+ \ 'initialization_options': extend({'vimruntime': $VIMRUNTIME, 'runtimepath': &rtp}, lsp_settings#get('vim-language-server', 'initialization_options', {}), 'force'),
+ \ 'whitelist': lsp_settings#get('vim-language-server', 'whitelist', ['vim']),
\ 'blacklist': lsp_settings#get('vimbash-language-server', 'blacklist', []),
\ 'config': lsp_settings#get('vim-language-server', 'config', {}),
\ 'workspace_config': lsp_settings#get('vim-language-server', 'workspace_config', {}),