aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2020-01-23 00:01:13 +0900
committerGitHub <noreply@github.com>2020-01-23 00:01:13 +0900
commita31b6776c4a76c3720a8adeeb2c715753fe49986 (patch)
tree38a816298c01e85ef8a58ed2124adec3f32abe8a
parent695b18f119ffabb7c8d068ce1ce6cfaff4ae6b08 (diff)
parent213c7aef4cc6e7b70d20c268bb6a2194afcfa865 (diff)
downloadvim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.tar.gz
vim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.tar.bz2
vim-lsp-settings-a31b6776c4a76c3720a8adeeb2c715753fe49986.zip
Merge pull request #97 from mattn/add-common-lisp
Add common lisp
-rw-r--r--checkers/cl-lsp.vim7
-rw-r--r--installer/install-cl-lsp.cmd3
-rwxr-xr-xinstaller/install-cl-lsp.sh3
-rw-r--r--plugin/lsp_settings.vim31
-rw-r--r--settings.json124
-rw-r--r--settings/cl-lsp.vim13
6 files changed, 117 insertions, 64 deletions
diff --git a/checkers/cl-lsp.vim b/checkers/cl-lsp.vim
new file mode 100644
index 0000000..e8e7d9f
--- /dev/null
+++ b/checkers/cl-lsp.vim
@@ -0,0 +1,7 @@
+function! LspCheckCommand() abort
+ let l:command = trim(filter(systemlist('ros version'), 'v:val =~# "^homedir="')[0][8:], '''"') . '/bin/cl-lsp'
+ if filereadable(l:command)
+ return l:command
+ endif
+ return ''
+endfunction
diff --git a/installer/install-cl-lsp.cmd b/installer/install-cl-lsp.cmd
new file mode 100644
index 0000000..43cc164
--- /dev/null
+++ b/installer/install-cl-lsp.cmd
@@ -0,0 +1,3 @@
+@echo off
+
+ros install cxxxr/cl-lsp
diff --git a/installer/install-cl-lsp.sh b/installer/install-cl-lsp.sh
new file mode 100755
index 0000000..d1311fb
--- /dev/null
+++ b/installer/install-cl-lsp.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+ros install cxxxr/cl-lsp
diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim
index cf368be..ee25582 100644
--- a/plugin/lsp_settings.vim
+++ b/plugin/lsp_settings.vim
@@ -4,6 +4,7 @@ endif
let g:loaded_lsp_settings= 1
let s:settings_dir = expand('<sfile>:h:h').'/settings'
+let s:checkers_dir = expand('<sfile>:h:h').'/checkers'
let s:installer_dir = expand('<sfile>:h:h').'/installer'
let s:servers_dir = expand('<sfile>:h:h').'/servers'
let s:settings = json_decode(join(readfile(expand('<sfile>:h:h').'/settings.json'), "\n"))
@@ -203,13 +204,31 @@ function! s:vimlsp_load_or_suggest(ft) abort
if type(l:command) == type([])
let l:command = l:command[0]
endif
- if s:executable(l:command)
- let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command)
- if filereadable(l:script)
- exe 'source' l:script
- let l:found += 1
- break
+ if !s:executable(l:command)
+ let l:script = printf('%s/%s.vim', s:checkers_dir, l:server.command)
+ if !filereadable(l:script) || has_key(l:server, 'fallback')
+ continue
endif
+ let l:server['fallback'] = ''
+ try
+ exe 'source' l:script
+ let l:command = LspCheckCommand()
+ let l:server['fallback'] = l:command
+ catch
+ finally
+ if exists('*LspCheckCommand')
+ delfunction LspCheckCommand
+ endif
+ if empty(l:server['fallback'])
+ continue
+ endif
+ endtry
+ endif
+ let l:script = printf('%s/%s.vim', s:settings_dir, l:server.command)
+ if filereadable(l:script)
+ exe 'source' l:script
+ let l:found += 1
+ break
endif
endfor
diff --git a/settings.json b/settings.json
index 71740d5..f932004 100644
--- a/settings.json
+++ b/settings.json
@@ -66,45 +66,45 @@
"elixir": [
{
"command": "elixir-ls",
+ "requires": [
+ "elixir"
+ ],
"vim-plugin": {
- "name": "elixir-editors/vim-elixir",
"extensions": [
"ex",
"exs"
- ]
- },
- "requires": [
- "elixir"
- ]
+ ],
+ "name": "elixir-editors/vim-elixir"
+ }
}
],
"elm": [
{
"command": "elm-language-server",
+ "requires": [
+ "npm"
+ ],
"vim-plugin": {
- "name": "ElmCast/elm-vim",
"extensions": [
"elm"
- ]
- },
- "requires": [
- "npm"
- ]
+ ],
+ "name": "ElmCast/elm-vim"
+ }
}
],
"erlang": [
{
"command": "erlang-ls",
- "vim-plugin": {
- "name": "vim-erlang/vim-erlang-runtime",
- "extensions": [
- "erl"
- ]
- },
"requires": [
"make",
"rebar3"
- ]
+ ],
+ "vim-plugin": {
+ "extensions": [
+ "erl"
+ ],
+ "name": "vim-erlang/vim-erlang-runtime"
+ }
}
],
"fortran": [
@@ -137,6 +137,15 @@
]
}
],
+ "graphql": [
+ {
+ "command": "gql-language-server",
+ "requires": [
+ "npm",
+ "watchman"
+ ]
+ }
+ ],
"groovy": [
{
"command": "groovy-language-server",
@@ -200,15 +209,15 @@
"kotlin": [
{
"command": "kotlin-language-server",
+ "requires": [
+ "java"
+ ],
"vim-plugin": {
- "name": "udalov/kotlin-vim",
"extensions": [
"kt"
- ]
- },
- "requires": [
- "java"
- ]
+ ],
+ "name": "udalov/kotlin-vim"
+ }
}
],
"less": [
@@ -219,6 +228,14 @@
]
}
],
+ "lisp": [
+ {
+ "command": "cl-lsp",
+ "requires": [
+ "ros"
+ ]
+ }
+ ],
"lua": [
{
"command": "emmylua-ls",
@@ -230,13 +247,13 @@
"nim": [
{
"command": "nimlsp",
+ "requires": [],
"vim-plugin": {
- "name": "zah/nim.vim",
"extensions": [
"nim"
- ]
- },
- "requires": []
+ ],
+ "name": "zah/nim.vim"
+ }
}
],
"php": [
@@ -276,14 +293,14 @@
"reason": [
{
"command": "reason-language-server",
+ "requires": [],
"vim-plugin": {
- "name": "reasonml-editor/vim-reason-plus",
"extensions": [
"re",
"rei"
- ]
- },
- "requires": []
+ ],
+ "name": "reasonml-editor/vim-reason-plus"
+ }
}
],
"ruby": [
@@ -327,28 +344,28 @@
"swift": [
{
"command": "sourcekit-lsp",
+ "requires": [
+ "sourcekit-lsp"
+ ],
"vim-plugin": {
- "name": "keith/swift.vim",
"extensions": [
"swift"
- ]
- },
- "requires": [
- "sourcekit-lsp"
- ]
+ ],
+ "name": "keith/swift.vim"
+ }
}
],
"terraform": [
{
"command": "terraform-lsp",
+ "requires": [],
"vim-plugin": {
- "name": "hashivim/vim-terraform",
"extensions": [
"tf",
"tfvars"
- ]
- },
- "requires": []
+ ],
+ "name": "hashivim/vim-terraform"
+ }
}
],
"tex": [
@@ -390,15 +407,15 @@
"vue": [
{
"command": "vls",
+ "requires": [
+ "npm"
+ ],
"vim-plugin": {
- "name": "posva/vim-vue",
"extensions": [
"vue"
- ]
- },
- "requires": [
- "npm"
- ]
+ ],
+ "name": "posva/vim-vue"
+ }
}
],
"xml": [
@@ -416,14 +433,5 @@
"npm"
]
}
- ],
- "graphql": [
- {
- "command": "gql-language-server",
- "requires": [
- "npm",
- "watchman"
- ]
- }
]
}
diff --git a/settings/cl-lsp.vim b/settings/cl-lsp.vim
new file mode 100644
index 0000000..5fa2ad3
--- /dev/null
+++ b/settings/cl-lsp.vim
@@ -0,0 +1,13 @@
+augroup vimlsp_settings_cl_lsp
+ au!
+ LspRegisterServer {
+ \ 'name': 'cl-lsp',
+ \ 'cmd': {server_info->lsp_settings#get('cl-lsp', 'cmd', {key, name-> ['ros', '-Q', '--', trim(filter(systemlist("ros version"), 'v:val=~"^homedir"')[0][8:], '"''') . '/bin/cl-lsp', 'stdio']})},
+ \ 'root_uri':{server_info->lsp_settings#get('cl-lsp', 'root_uri', lsp_settings#root_uri(['.git/']))},
+ \ 'initialization_options': lsp_settings#get('cl-lsp', 'initialization_options', {}),
+ \ 'whitelist': lsp_settings#get('cl-lsp', 'whitelist', ['lisp']),
+ \ 'blacklist': lsp_settings#get('cl-lsp', 'blacklist', []),
+ \ 'config': lsp_settings#get('cl-lsp', 'config', {}),
+ \ 'workspace_config': lsp_settings#get('cl-lsp', 'workspace_config', {}),
+ \ }
+augroup END