From 6c15c16a88c24a8f2c8e04bd23e34ea367f35608 Mon Sep 17 00:00:00 2001 From: Mitsuo Heijo Date: Fri, 3 Jan 2020 13:49:23 +0900 Subject: fix: support multiple npm packages for one language server --- installer/npm_install.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'installer') diff --git a/installer/npm_install.sh b/installer/npm_install.sh index 198666c..84073da 100755 --- a/installer/npm_install.sh +++ b/installer/npm_install.sh @@ -5,13 +5,14 @@ set -e -npm init -y - -# Avoid the problem of not being able to install the same package as name in package.json. -# Create an empty package.json. -cat <package.json -{"name": ""} -EOF +# Supporting multiple npm packages(e.g. typescript-language-server uses typescript-language-server and tsserver). +# If package.json exists, skip calling npm init. +if [ ! -f package.json ]; then + # Avoid the problem of not being able to install the same package as name in package.json. + # Create an empty package.json. + npm init -y + echo '{"name": ""}' >package.json +fi npm install "$2" ln -s "./node_modules/.bin/$1" . -- cgit v1.2.3-54-g00ecf From 24de62683bbe337b4389cb57d48eb68c9afcf4ea Mon Sep 17 00:00:00 2001 From: wordi Date: Fri, 3 Jan 2020 14:44:12 +0900 Subject: fix: not found tsserver for typescript-language-server --- autoload/lsp_settings.vim | 22 +++++++++++++--------- installer/npm_install.cmd | 8 ++++++-- settings/typescript-language-server.vim | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) (limited to 'installer') diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim index f8c145d..ce3d09c 100644 --- a/autoload/lsp_settings.vim +++ b/autoload/lsp_settings.vim @@ -24,23 +24,27 @@ function! s:first_one(cmd) abort endfunction function! lsp_settings#exec_path(cmd) abort + let l:s= split(a:cmd, '/') + let l:dir = len(l:s) >= 1 ? l:s[0] : '' + let l:cmd = len(l:s) >= 2 ? l:s[1] : l:s[0] + let l:paths = split($PATH, has('win32') ? ';' : ':') let l:paths = join(l:paths, ',') - let l:path = globpath(l:paths, a:cmd) + let l:path = globpath(l:paths, l:cmd) if !has('win32') if !empty(l:path) return s:first_one(l:path) endif else - let l:path = globpath(l:paths, a:cmd . '.exe') + let l:path = globpath(l:paths, l:cmd . '.exe') if !empty(l:path) return s:first_one(l:path) endif - let l:path = globpath(l:paths, a:cmd . '.cmd') + let l:path = globpath(l:paths, l:cmd . '.cmd') if !empty(l:path) return s:first_one(l:path) endif - let l:path = globpath(l:paths, a:cmd . '.bat') + let l:path = globpath(l:paths, l:cmd . '.bat') if !empty(l:path) return s:first_one(l:path) endif @@ -51,19 +55,19 @@ function! lsp_settings#exec_path(cmd) abort let l:paths = join(l:paths, ',') . ',' endif let l:servers_dir = get(g:, 'lsp_settings_servers_dir', s:servers_dir) - let l:paths .= l:servers_dir . '/' . a:cmd + let l:paths .= l:servers_dir . '/' . l:dir if !has('win32') - return s:first_one(globpath(l:paths, a:cmd)) + return s:first_one(globpath(l:paths, l:cmd)) endif - let l:path = globpath(l:paths, a:cmd . '.exe') + let l:path = globpath(l:paths, l:cmd . '.exe') if !empty(l:path) return s:first_one(l:path) endif - let l:path = globpath(l:paths, a:cmd . '.cmd') + let l:path = globpath(l:paths, l:cmd . '.cmd') if !empty(l:path) return s:first_one(l:path) endif - let l:path = globpath(l:paths, a:cmd . '.bat') + let l:path = globpath(l:paths, l:cmd . '.bat') if !empty(l:path) return s:first_one(l:path) endif diff --git a/installer/npm_install.cmd b/installer/npm_install.cmd index 5f1d9bb..12347e2 100644 --- a/installer/npm_install.cmd +++ b/installer/npm_install.cmd @@ -3,9 +3,13 @@ if "x%1" equ "x" goto :EOF if "x%2" equ "x" goto :EOF -call npm init -y +if not exist package.json ( + + call npm init -y + + echo {"name":""}>package.json +) -echo {"name":""}>package.json call npm install "%2" diff --git a/settings/typescript-language-server.vim b/settings/typescript-language-server.vim index 534a151..708e693 100644 --- a/settings/typescript-language-server.vim +++ b/settings/typescript-language-server.vim @@ -2,7 +2,7 @@ augroup vimlsp_settings_typescript_language_server au! LspRegisterServer { \ 'name': 'typescript-language-server', - \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio', '--tsserver-path', lsp_settings#exec_path('tsserver')])}, + \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio', '--tsserver-path', lsp_settings#exec_path('typescript-language-server/tsserver')])}, \ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp_settings#root_uri(['.git/', 'package.json']))}, \ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {"diagnostics": "true"}), \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact']), -- cgit v1.2.3-54-g00ecf From 776ce84f47a1a0b8d5df5e84c4c509ca0658f623 Mon Sep 17 00:00:00 2001 From: wordi Date: Fri, 3 Jan 2020 15:23:47 +0900 Subject: Modify for review --- autoload/lsp_settings.vim | 2 +- installer/npm_install.cmd | 1 - settings/typescript-language-server.vim | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) (limited to 'installer') diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim index ce3d09c..d59d4ed 100644 --- a/autoload/lsp_settings.vim +++ b/autoload/lsp_settings.vim @@ -24,7 +24,7 @@ function! s:first_one(cmd) abort endfunction function! lsp_settings#exec_path(cmd) abort - let l:s= split(a:cmd, '/') + let l:s = split(a:cmd, ':') let l:dir = len(l:s) >= 1 ? l:s[0] : '' let l:cmd = len(l:s) >= 2 ? l:s[1] : l:s[0] diff --git a/installer/npm_install.cmd b/installer/npm_install.cmd index 12347e2..8521869 100644 --- a/installer/npm_install.cmd +++ b/installer/npm_install.cmd @@ -4,7 +4,6 @@ if "x%1" equ "x" goto :EOF if "x%2" equ "x" goto :EOF if not exist package.json ( - call npm init -y echo {"name":""}>package.json diff --git a/settings/typescript-language-server.vim b/settings/typescript-language-server.vim index 708e693..a75567c 100644 --- a/settings/typescript-language-server.vim +++ b/settings/typescript-language-server.vim @@ -2,7 +2,7 @@ augroup vimlsp_settings_typescript_language_server au! LspRegisterServer { \ 'name': 'typescript-language-server', - \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio', '--tsserver-path', lsp_settings#exec_path('typescript-language-server/tsserver')])}, + \ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio', '--tsserver-path', lsp_settings#exec_path('typescript-language-server:tsserver')])}, \ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp_settings#root_uri(['.git/', 'package.json']))}, \ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {"diagnostics": "true"}), \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact']), -- cgit v1.2.3-54-g00ecf