From c3f174a0b90b2459f801e50e537574d91baa7fc0 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 19:31:30 +0900 Subject: Add cl-lsp --- settings.json | 124 ++++++++++++++++++++++++++++------------------------ settings/cl-lsp.vim | 13 ++++++ 2 files changed, 79 insertions(+), 58 deletions(-) create mode 100644 settings/cl-lsp.vim diff --git a/settings.json b/settings.json index 71740d5..a548966 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": [ + "npm" + ] + } + ], "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 -- cgit v1.2.3-54-g00ecf From d7be9b1ed2cefcd7a02f4a853974c98fd1b5fb84 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 19:34:19 +0900 Subject: Should be ros --- settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.json b/settings.json index a548966..f932004 100644 --- a/settings.json +++ b/settings.json @@ -232,7 +232,7 @@ { "command": "cl-lsp", "requires": [ - "npm" + "ros" ] } ], -- cgit v1.2.3-54-g00ecf From d2a871d1cf98fb737c39d6d49341e0eb6ac2d8ae Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 19:56:01 +0900 Subject: Add checker --- checkers/cl-lsp.vim | 7 +++++++ plugin/lsp_settings.vim | 28 ++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 checkers/cl-lsp.vim 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/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index cf368be..dcf4a3d 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(':h:h').'/settings' +let s:checkers_dir = expand(':h:h').'/checkers' let s:installer_dir = expand(':h:h').'/installer' let s:servers_dir = expand(':h:h').'/servers' let s:settings = json_decode(join(readfile(expand(':h:h').'/settings.json'), "\n")) @@ -203,13 +204,28 @@ 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) || get(l:server, 'disabled', 0) == 1 + continue endif + try + exe 'source' l:script + let l:command = LspCheckCommand() + catch + continue + finally + let l:server['disabled'] = 1 + if exists('*LspCheckCommand') + delfunction LspCheckCommand + 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 -- cgit v1.2.3-54-g00ecf From 129f123045dbb5055fd9d5c4760c5335642229c9 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 23:58:33 +0900 Subject: Use fallback --- plugin/lsp_settings.vim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugin/lsp_settings.vim b/plugin/lsp_settings.vim index dcf4a3d..ee25582 100644 --- a/plugin/lsp_settings.vim +++ b/plugin/lsp_settings.vim @@ -206,19 +206,22 @@ function! s:vimlsp_load_or_suggest(ft) abort endif if !s:executable(l:command) let l:script = printf('%s/%s.vim', s:checkers_dir, l:server.command) - if !filereadable(l:script) || get(l:server, 'disabled', 0) == 1 + 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 - continue finally - let l:server['disabled'] = 1 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) -- cgit v1.2.3-54-g00ecf From 213c7aef4cc6e7b70d20c268bb6a2194afcfa865 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 22 Jan 2020 23:59:29 +0900 Subject: Add installer --- installer/install-cl-lsp.cmd | 3 +++ installer/install-cl-lsp.sh | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 installer/install-cl-lsp.cmd create mode 100755 installer/install-cl-lsp.sh 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 -- cgit v1.2.3-54-g00ecf