diff options
author | mattn <mattn.jp@gmail.com> | 2020-01-23 00:01:13 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-23 00:01:13 +0900 |
commit | a31b6776c4a76c3720a8adeeb2c715753fe49986 (patch) | |
tree | 38a816298c01e85ef8a58ed2124adec3f32abe8a | |
parent | 695b18f119ffabb7c8d068ce1ce6cfaff4ae6b08 (diff) | |
parent | 213c7aef4cc6e7b70d20c268bb6a2194afcfa865 (diff) | |
download | vim-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.vim | 7 | ||||
-rw-r--r-- | installer/install-cl-lsp.cmd | 3 | ||||
-rwxr-xr-x | installer/install-cl-lsp.sh | 3 | ||||
-rw-r--r-- | plugin/lsp_settings.vim | 31 | ||||
-rw-r--r-- | settings.json | 124 | ||||
-rw-r--r-- | settings/cl-lsp.vim | 13 |
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 |