diff --git a/installer/install-vscode-css-language-server.cmd b/installer/install-vscode-css-language-server.cmd new file mode 100644 index 00000000..d3dcc013 --- /dev/null +++ b/installer/install-vscode-css-language-server.cmd @@ -0,0 +1,3 @@ +@echo off + +call "%~dp0\npm_install.cmd" vscode-css-language-server vscode-langservers-extracted diff --git a/installer/install-vscode-css-language-server.sh b/installer/install-vscode-css-language-server.sh new file mode 100755 index 00000000..1d658e69 --- /dev/null +++ b/installer/install-vscode-css-language-server.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +"$(dirname "$0")/npm_install.sh" vscode-css-language-server vscode-langservers-extracted diff --git a/installer/install-vscode-html-language-server.cmd b/installer/install-vscode-html-language-server.cmd new file mode 100644 index 00000000..4d8ae2d9 --- /dev/null +++ b/installer/install-vscode-html-language-server.cmd @@ -0,0 +1,3 @@ +@echo off + +call "%~dp0\npm_install.cmd" vscode-html-language-server vscode-langservers-extracted diff --git a/installer/install-vscode-html-language-server.sh b/installer/install-vscode-html-language-server.sh new file mode 100755 index 00000000..35e6be5b --- /dev/null +++ b/installer/install-vscode-html-language-server.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +"$(dirname "$0")/npm_install.sh" vscode-html-language-server vscode-langservers-extracted diff --git a/installer/install-vscode-json-language-server.cmd b/installer/install-vscode-json-language-server.cmd new file mode 100644 index 00000000..b1ab0d25 --- /dev/null +++ b/installer/install-vscode-json-language-server.cmd @@ -0,0 +1,3 @@ +@echo off + +call "%~dp0\npm_install.cmd" vscode-json-language-server vscode-langservers-extracted diff --git a/installer/install-vscode-json-language-server.sh b/installer/install-vscode-json-language-server.sh new file mode 100755 index 00000000..02155b61 --- /dev/null +++ b/installer/install-vscode-json-language-server.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -e + +"$(dirname "$0")/npm_install.sh" vscode-json-language-server vscode-langservers-extracted diff --git a/settings.json b/settings.json index 3ce4b6d2..3f276de1 100644 --- a/settings.json +++ b/settings.json @@ -130,6 +130,17 @@ } ], "css": [ + { + "command": "vscode-css-language-server", + "url": "https://github.com/hrsh7th/vscode-langservers-extracted", + "description": "HTML/CSS/JSON language servers extracted from vscode.", + "config": { + "refresh_pattern": "\\([a-zA-Z0-9_-]\\+\\)$" + }, + "requires": [ + "npm" + ] + }, { "command": "css-languageserver", "url": "https://github.com/vscode-langservers/vscode-css-languageserver-bin", @@ -480,6 +491,17 @@ } ], "html": [ + { + "command": "vscode-html-language-server", + "url": "https://github.com/hrsh7th/vscode-langservers-extracted", + "description": "HTML/CSS/JSON language servers extracted from vscode.", + "config": { + "refresh_pattern": "\\(/\\|\\k\\+\\)$" + }, + "requires": [ + "npm" + ] + }, { "command": "html-languageserver", "url": "https://github.com/vscode-langservers/vscode-html-languageserver-bin", @@ -670,6 +692,17 @@ } ], "json": [ + { + "command": "vscode-json-language-server", + "url": "https://github.com/hrsh7th/vscode-langservers-extracted", + "description": "HTML/CSS/JSON language servers extracted from vscode.", + "config": { + "refresh_pattern": "\\(\"\\k*\\|\\[\\|\\k\\+\\)$" + }, + "requires": [ + "npm" + ] + }, { "command": "json-languageserver", "url": "https://github.com/vscode-langservers/vscode-json-languageserver-bin", diff --git a/settings/vscode-css-language-server.vim b/settings/vscode-css-language-server.vim new file mode 100644 index 00000000..3a792be8 --- /dev/null +++ b/settings/vscode-css-language-server.vim @@ -0,0 +1,19 @@ +augroup vim_lsp_settings_vscode_css_language_server + au! + LspRegisterServer { + \ 'name': 'vscode-css-language-server', + \ 'cmd': {server_info->lsp_settings#get('vscode-css-language-server', 'cmd', [lsp_settings#exec_path('vscode-css-language-server')]+lsp_settings#get('vscode-css-language-server', 'args', ['--stdio']))}, + \ 'root_uri':{server_info->lsp_settings#get('vscode-css-language-server', 'root_uri', lsp_settings#root_uri('vscode-css-language-server'))}, + \ 'initialization_options': lsp_settings#get('vscode-css-language-server', 'initialization_options', v:null), + \ 'allowlist': lsp_settings#get('vscode-css-language-server', 'allowlist', ['css', 'less', 'sass', 'scss']), + \ 'blocklist': lsp_settings#get('vscode-css-language-server', 'blocklist', []), + \ 'config': lsp_settings#get('vscode-css-language-server', 'config', lsp_settings#server_config('vscode-css-language-server')), + \ 'workspace_config': lsp_settings#get('vscode-css-language-server', 'workspace_config', { + \ 'css': {'lint': {'validProperties': []}}, + \ 'less': {'lint': {'validProperties': []}}, + \ 'sass': {'lint': {'validProperties': []}}, + \ 'scss': {'lint': {'validProperties': []}}, + \ }), + \ 'semantic_highlight': lsp_settings#get('vscode-css-language-server', 'semantic_highlight', {}), + \ } +augroup END diff --git a/settings/vscode-html-language-server.vim b/settings/vscode-html-language-server.vim new file mode 100644 index 00000000..fd15b97c --- /dev/null +++ b/settings/vscode-html-language-server.vim @@ -0,0 +1,14 @@ +augroup vim_lsp_settings_vscode_html_language_server + au! + LspRegisterServer { + \ 'name': 'vscode-html-language-server', + \ 'cmd': {server_info->lsp_settings#get('vscode-html-language-server', 'cmd', [lsp_settings#exec_path('vscode-html-language-server')]+lsp_settings#get('vscode-html-language-server', 'args', ['--stdio']))}, + \ 'root_uri':{server_info->lsp_settings#get('vscode-html-langserver', 'root_uri', lsp_settings#root_uri('vscode-html-language-server'))}, + \ 'initialization_options': lsp_settings#get('vscode-html-language-server', 'initialization_options', {'embeddedLanguages': {'css': v:true, 'javascript': v:true}}), + \ 'allowlist': lsp_settings#get('vscode-html-language-server', 'allowlist', ['html']), + \ 'blocklist': lsp_settings#get('vscode-html-language-server', 'blocklist', []), + \ 'config': lsp_settings#get('vscode-html-language-server', 'config', lsp_settings#server_config('vscode-html-language-server')), + \ 'workspace_config': lsp_settings#get('vscode-html-language-server', 'workspace_config', {}), + \ 'semantic_highlight': lsp_settings#get('vscode-html-language-server', 'semantic_highlight', {}), + \ } +augroup END diff --git a/settings/vscode-json-language-server.vim b/settings/vscode-json-language-server.vim new file mode 100644 index 00000000..dd925228 --- /dev/null +++ b/settings/vscode-json-language-server.vim @@ -0,0 +1,30 @@ +augroup vim_lsp_settings_vscode_json_language_server + au! + LspRegisterServer { + \ 'name': 'vscode-json-language-server', + \ 'cmd': {server_info->lsp_settings#get('vscode-json-language-server', 'cmd', [lsp_settings#exec_path('vscode-json-language-server')]+lsp_settings#get('vscode-json-language-server', 'args', ['--stdio']))}, + \ 'root_uri':{server_info->lsp_settings#get('vscode-json-language-server', 'root_uri', lsp_settings#root_uri('vscode-json-language-server'))}, + \ 'initialization_options': lsp_settings#get('vscode-json-language-server', 'initialization_options', {'provideFormatter': v:true}), + \ 'allowlist': lsp_settings#get('vscode-json-language-server', 'allowlist', ['json', 'jsonc']), + \ 'blocklist': lsp_settings#get('vscode-json-language-server', 'blocklist', []), + \ 'config': lsp_settings#get('vscode-json-language-server', 'config', lsp_settings#server_config('vscode-json-language-server')), + \ 'workspace_config': lsp_settings#get('vscode-json-language-server', 'workspace_config', {name, key->{'json': {'format': {'enable': v:true}, 'schemas': lsp_settings#utils#load_schemas('vscode-json-language-server') + [{'fileMatch':['/vim-lsp-settings/settings.json', '/.vim-lsp-settings/settings.json'], 'url': 'https://mattn.github.io/vim-lsp-settings/local-schema.json'}]}}}), + \ 'semantic_highlight': lsp_settings#get('vscode-json-language-server', 'semantic_highlight', {}), + \ } +augroup END + +function! s:set_schema(url) abort + let l:name = fnamemodify(lsp#utils#get_buffer_uri(), ':t') + let l:schema = [{'fileMatch':[l:name], 'url': a:url}] + let l:config = lsp_settings#merge('vscode-json-language-server', 'workspace_config', {'json': {'format': {'enable': v:true}, 'schemas': l:schema}}) + call lsp#update_workspace_config('vscode-json-language-server', l:config) +endfunction + +function! s:on_lsp_buffer_enabled() abort + command! -buffer -nargs=1 LspJsonSetSchema call set_schema() +endfunction + +augroup lsp_install_json + au! + autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() +augroup END