aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/lsp_settings.vim2
-rw-r--r--schema.json56
-rw-r--r--settings.json1
3 files changed, 59 insertions, 0 deletions
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim
index 72a8729..7c3787e 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
diff --git a/schema.json b/schema.json
new file mode 100644
index 0000000..3998775
--- /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",
+ "title": "filetype name",
+ "items": {
+ "title": "define command description",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "command",
+ "requires"
+ ],
+ "properties": {
+ "command": {
+ "title": "define name of language server",
+ "type": "string"
+ },
+ "requires": {
+ "title": "define commands to install this language server",
+ "type": "array",
+ "items": {
+ "type": "string",
+ "title": "executable command name"
+ }
+ },
+ "vim-plugin": {
+ "title": "define suggestion for vim-plugin",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "extensions": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "title": "file extensions"
+ }
+ },
+ "name": {
+ "type": "string",
+ "title": "plugin identify user/repo"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/settings.json b/settings.json
index a81206c..4d95605 100644
--- a/settings.json
+++ b/settings.json
@@ -1,4 +1,5 @@
{
+ "$schema": "./schema.json",
"c": [
{
"command": "clangd",