aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <mattn.jp@gmail.com>2020-02-12 10:15:35 +0900
committerYasuhiro Matsumoto <mattn.jp@gmail.com>2020-02-12 10:15:35 +0900
commit4f7dbef46ad09bfdb0646b607a71bfa45cc8b4b6 (patch)
treedb3f12abff35968e05239052c00f2a2939fbefb3
parent3ec4f3ff36a6cb89fec459bd9e3d9f2cd2baabdb (diff)
parentc3f3518b637cfb35863976e8383fde337c7d84a2 (diff)
downloadvim-lsp-settings-4f7dbef46ad09bfdb0646b607a71bfa45cc8b4b6.tar.gz
vim-lsp-settings-4f7dbef46ad09bfdb0646b607a71bfa45cc8b4b6.tar.bz2
vim-lsp-settings-4f7dbef46ad09bfdb0646b607a71bfa45cc8b4b6.zip
Merge branch 'master' into julia
-rw-r--r--README.md17
-rw-r--r--autoload/lsp_settings.vim45
-rw-r--r--autoload/lsp_settings/utils.vim75
-rw-r--r--installer/install-powershell-languageserver.cmd18
-rwxr-xr-xinstaller/install-powershell-languageserver.sh19
-rwxr-xr-xinstaller/install-r-languageserver.sh3
-rw-r--r--schema.json60
-rw-r--r--settings.json38
-rw-r--r--settings/cl-lsp.vim2
-rw-r--r--settings/css-languageserver.vim2
-rw-r--r--settings/digestif.vim2
-rw-r--r--settings/dls.vim2
-rw-r--r--settings/glslls.vim13
-rw-r--r--settings/gql-language-server.vim2
-rw-r--r--settings/html-languageserver.vim2
-rw-r--r--settings/javascript-typescript-stdio.vim4
-rw-r--r--settings/metals.vim2
-rw-r--r--settings/nimlsp.vim2
-rw-r--r--settings/powershell-languageserver.vim13
-rw-r--r--settings/solargraph.vim4
-rw-r--r--settings/texlab.vim2
-rw-r--r--settings/typescript-language-server.vim4
-rw-r--r--settings/vls.vim2
-rw-r--r--test/lsp_settings.vimspec4
24 files changed, 282 insertions, 55 deletions
diff --git a/README.md b/README.md
index 2cbfdd9..dad82a3 100644
--- a/README.md
+++ b/README.md
@@ -19,14 +19,26 @@ For [vim-plug](https://github.com/junegunn/vim-plug) plugin manager:
```viml
Plug 'prabirshrestha/async.vim'
-Plug 'prabirshrestha/asyncomplete.vim'
-Plug 'prabirshrestha/asyncomplete-lsp.vim'
Plug 'prabirshrestha/vim-lsp'
Plug 'mattn/vim-lsp-settings'
```
You need to install both [vim-lsp](https://github.com/prabirshrestha/vim-lsp) and its accompanying plugins and vim-lsp-settings.
+If you want to use autocompletion plugin, you can use followings.
+
+#### asyncomplete.vim
+```viml
+Plug 'prabirshrestha/asyncomplete.vim'
+Plug 'prabirshrestha/asyncomplete-lsp.vim'
+```
+
+#### deoplete.nvim
+```viml
+Plug 'Shougo/deoplete.nvim'
+Plug 'lighttiger2505/deoplete-vim-lsp'
+```
+
### Notice
If you use plugin manager that is merging plugins (ex. dein), Please setting stop merging work(ex. dein / merged = 0) or set `g:lsp_settings_servers_dir` option to a different directory from the vim-lsp's default.
@@ -38,6 +50,7 @@ But when rebuild the cache, any merging plugin manager erases old cached files(i
You can change the directory to install servers by set `g:lsp_settings_servers_dir` option in full path.
## Usage
+While editing a file with a supported filetype:
```
:LspInstallServer
diff --git a/autoload/lsp_settings.vim b/autoload/lsp_settings.vim
index 55d9452..0b53209 100644
--- a/autoload/lsp_settings.vim
+++ b/autoload/lsp_settings.vim
@@ -9,6 +9,10 @@ call remove(s:settings, '$schema')
let s:ftmap = {}
+function! lsp_settings#installer_dir() abort
+ return s:installer_dir
+endfunction
+
function! lsp_settings#servers_dir() abort
let l:path = fnamemodify(get(g:, 'lsp_settings_servers_dir', s:servers_dir), ':p')
if has('win32')
@@ -27,11 +31,11 @@ function! lsp_settings#executable(cmd) abort
endif
let l:paths .= ',' . lsp_settings#servers_dir() . '/' . a:cmd
if !has('win32')
- let l:found = globpath(l:paths, a:cmd)
+ let l:found = globpath(l:paths, a:cmd, 1)
return !empty(l:found)
endif
for l:ext in ['.exe', '.cmd', '.bat']
- if !empty(globpath(l:paths, a:cmd . l:ext))
+ if !empty(globpath(l:paths, a:cmd . l:ext, 1))
return 1
endif
endfor
@@ -122,14 +126,14 @@ function! lsp_settings#exec_path(cmd) abort
let l:paths = split($PATH, ':')
endif
let l:paths = join(l:paths, ',')
- let l:path = globpath(l:paths, a:cmd)
+ let l:path = globpath(l:paths, a:cmd, 1)
if !has('win32')
if !empty(l:path)
return lsp_settings#utils#first_one(l:path)
endif
else
for l:ext in ['.exe', '.cmd', '.bat']
- let l:path = globpath(l:paths, a:cmd . l:ext)
+ let l:path = globpath(l:paths, a:cmd . l:ext, 1)
if !empty(l:path)
return lsp_settings#utils#first_one(l:path)
endif
@@ -142,10 +146,10 @@ function! lsp_settings#exec_path(cmd) abort
endif
let l:paths .= lsp_settings#servers_dir() . '/' . a:cmd
if !has('win32')
- return lsp_settings#utils#first_one(globpath(l:paths, a:cmd))
+ return lsp_settings#utils#first_one(globpath(l:paths, a:cmd, 1))
endif
for l:ext in ['.exe', '.cmd', '.bat']
- let l:path = globpath(l:paths, a:cmd . l:ext)
+ let l:path = globpath(l:paths, a:cmd . l:ext, 1)
if !empty(l:path)
return lsp_settings#utils#first_one(l:path)
endif
@@ -176,9 +180,13 @@ function! lsp_settings#autocd(server_info) abort
endif
endfunction
+function! lsp_settings#settings() abort
+ return s:settings
+endfunction
+
function! lsp_settings#complete_uninstall(arglead, cmdline, cursorpos) abort
let l:installers = []
- for l:ft in keys(s:settings)
+ for l:ft in sort(keys(s:settings))
for l:conf in s:settings[l:ft]
if !isdirectory(lsp_settings#servers_dir() . '/' . l:conf.command)
continue
@@ -272,6 +280,7 @@ function! s:vim_lsp_install_server(ft, command) abort
endif
let l:server_install_dir = lsp_settings#servers_dir() . '/' . l:entry[0]
if isdirectory(l:server_install_dir)
+ call lsp_settings#utils#msg('Uninstalling ' . l:entry[0])
call delete(l:server_install_dir, 'rf')
endif
call mkdir(l:server_install_dir, 'p')
@@ -324,7 +333,27 @@ function! s:vim_lsp_suggest_plugin() abort
endfor
endfunction
+function! s:vim_lsp_load_or_suggest_delay(ft) abort
+ if get(g:, 'vim_lsp_settings_filetype_no_delays', 0)
+ return s:vim_lsp_load_or_suggest(a:ft)
+ endif
+ call timer_start(0, {timer -> s:vim_lsp_load_or_suggest(a:ft)})
+endfunction
+
function! s:vim_lsp_load_or_suggest(ft) abort
+ if (a:ft !=# '_' && &filetype !=# a:ft) || !has_key(s:settings, a:ft)
+ return
+ endif
+
+ if get(g:, 'lsp_loaded', 0)
+ for l:server in s:settings[a:ft]
+ let l:refresh_pattern = get(l:server, 'refresh_pattern', '')
+ if !empty(l:refresh_pattern)
+ let b:asyncomplete_refresh_pattern = l:refresh_pattern
+ endif
+ endfor
+ endif
+
if get(s:ftmap, a:ft, 0)
return
endif
@@ -409,7 +438,7 @@ function! lsp_settings#init() abort
endif
exe 'augroup' lsp_settings#utils#group_name(l:ft)
autocmd!
- exe 'autocmd FileType' l:ft printf("call s:vim_lsp_load_or_suggest('%s')", l:ft)
+ exe 'autocmd FileType' l:ft 'call' printf("s:vim_lsp_load_or_suggest_delay('%s')", l:ft)
augroup END
endfor
augroup vim_lsp_suggest
diff --git a/autoload/lsp_settings/utils.vim b/autoload/lsp_settings/utils.vim
index 96feb0a..a39851f 100644
--- a/autoload/lsp_settings/utils.vim
+++ b/autoload/lsp_settings/utils.vim
@@ -30,3 +30,78 @@ function! lsp_settings#utils#first_one(lines) abort
endif
return l:path
endfunction
+
+function! s:merge(lhs, rhs) abort
+ let [l:lhs, l:rhs] = [a:lhs, a:rhs]
+ if type(l:lhs) ==# 3
+ if type(l:rhs) ==# 3
+ let l:lhs += l:rhs
+ if len(l:lhs)
+ call remove(l:lhs, 0, len(l:lhs)-1)
+ endif
+ for l:rhi in l:rhs
+ call add(l:lhs, l:rhs[l:rhi])
+ endfor
+ elseif type(l:rhs) ==# 4
+ let l:lhs += map(keys(l:rhs), '{v:val : l:rhs[v:val]}')
+ endif
+ elseif type(l:lhs) ==# 4
+ if type(l:rhs) ==# 3
+ for l:V in l:rhs
+ if type(l:V) != 4
+ continue
+ endif
+ for l:k in keys(l:V)
+ let l:lhs[l:k] = l:V[l:k]
+ endfor
+ endfor
+ elseif type(l:rhs) ==# 4
+ for l:key in keys(l:rhs)
+ if type(l:rhs[l:key]) ==# 3
+ if !has_key(l:lhs, l:key)
+ let l:lhs[l:key] = []
+ endif
+ if type(l:lhs[l:key]) == 3
+ let l:lhs[l:key] += l:rhs[l:key]
+ elseif type(l:lhs[l:key]) == 4
+ for l:k in keys(l:rhs[l:key])
+ let l:lhs[l:key][l:k] = l:rhs[l:key][l:k]
+ endfor
+ endif
+ elseif type(l:rhs[l:key]) ==# 4
+ if has_key(l:lhs, l:key)
+ call s:merge(l:lhs[l:key], l:rhs[l:key])
+ else
+ let l:lhs[l:key] = l:rhs[l:key]
+ endif
+ else
+ let l:lhs[l:key] = l:rhs[l:key]
+ endif
+ endfor
+ endif
+ endif
+endfunction
+
+function! lsp_settings#utils#merge(d) abort
+ let l:ret = {}
+ let l:keys = keys(a:d)
+ for l:k in sort(keys(a:d))
+ let l:new = {}
+ let l:cur = l:new
+ let l:arr = split(l:k, '\.')
+ for l:i in range(len(l:arr))
+ let l:kk = l:arr[l:i]
+ if type(l:cur) == v:t_dict && !has_key(l:cur, l:kk)
+ if l:i == len(l:arr) - 1
+ let l:cur[l:kk] = a:d[l:k]
+ break
+ else
+ let l:cur[l:kk] = {}
+ endif
+ endif
+ let l:cur = l:cur[l:kk]
+ endfor
+ call s:merge(l:ret, l:new)
+ endfor
+ return l:ret
+endfunction
diff --git a/installer/install-powershell-languageserver.cmd b/installer/install-powershell-languageserver.cmd
new file mode 100644
index 0000000..ae63ef4
--- /dev/null
+++ b/installer/install-powershell-languageserver.cmd
@@ -0,0 +1,18 @@
+@echo off
+
+curl -L -o PowerShellEditorServices.zip "https://github.com/PowerShell/PowerShellEditorServices/releases/download/2.0.0-preview.8/PowerShellEditorServices.zip"
+call "%~dp0\run_unzip.cmd" PowerShellEditorServices.zip
+del PowerShellEditorServices.zip
+mkdir %~dp0session
+
+echo @echo off ^
+
+setlocal ^
+
+set PSES_BUNDLE_PATH=%%~dp0PowerShellEditorServices ^
+
+set SESSION_TEMP_PATH=%%~dp0session ^
+
+powershell -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command "%%PSES_BUNDLE_PATH:\=/%%/PowerShellEditorServices/Start-EditorServices.ps1 -BundledModulesPath %%PSES_BUNDLE_PATH:\=/%% -LogPath %%SESSION_TEMP_PATH:\=/%%/logs.log -SessionDetailsPath %%SESSION_TEMP_PATH:\=/%%/session.json -FeatureFlags @() -AdditionalModules @() -HostName 'My Client' -HostProfileId 'myclient' -HostVersion 1.0.0 -Stdio -LogLevel Normal" ^
+
+> powershell-languageserver.cmd
diff --git a/installer/install-powershell-languageserver.sh b/installer/install-powershell-languageserver.sh
new file mode 100755
index 0000000..f9f823f
--- /dev/null
+++ b/installer/install-powershell-languageserver.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+set -e
+
+curl -L -o PowerShellEditorServices.zip "https://github.com/PowerShell/PowerShellEditorServices/releases/download/2.0.0-preview.8/PowerShellEditorServices.zip"
+unzip PowerShellEditorServices.zip
+rm PowerShellEditorServices.zip
+mkdir session
+
+cat <<EOF >powershell-languageserver
+#!/usr/bin/env bash
+
+DIR=\$(cd \$(dirname \$0); pwd)
+PSES_BUNDLE_PATH=\$DIR/PowerShellEditorServices
+SESSION_TEMP_PATH=\$DIR/session
+pwsh -NoLogo -NoProfile -ExecutionPolicy RemoteSigned -Command "\$PSES_BUNDLE_PATH/PowerShellEditorServices/Start-EditorServices.ps1 -BundledModulesPath \$PSES_BUNDLE_PATH -LogPath \$SESSION_TEMP_PATH/logs.log -SessionDetailsPath \$SESSION_TEMP_PATH/session.json -FeatureFlags @() -AdditionalModules @() -HostName 'My Client' -HostProfileId 'myclient' -HostVersion 1.0.0 -Stdio -LogLevel Normal"
+EOF
+
+chmod +x powershell-languageserver
diff --git a/installer/install-r-languageserver.sh b/installer/install-r-languageserver.sh
index eeaa676..2c58df4 100755
--- a/installer/install-r-languageserver.sh
+++ b/installer/install-r-languageserver.sh
@@ -2,7 +2,8 @@
set -e
-R --slave -e 'install.packages("languageserver")'
+echo 'install.packages("languageserver")' > install.r
+Rscript install.r
cat <<EOF >r-languageserver
#!/usr/bin/env bash
diff --git a/schema.json b/schema.json
index dd01f15..95cd0f7 100644
--- a/schema.json
+++ b/schema.json
@@ -1,24 +1,17 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
- "type": "object",
- "title": "vim-lsp-settings",
"additionalProperties": false,
"patternProperties": {
- "^\\$schema$": {
- "type": "string"
- },
"^([a-z0-9_-]+)+$": {
- "type": "array",
"description": "filetype name",
"items": {
- "description": "define command description",
- "type": "object",
"additionalProperties": false,
- "required": [
- "command",
- "requires"
- ],
+ "description": "define command description",
"properties": {
+ "refresh_pattern": {
+ "description": "loop left and find the start of the word or trigger chars and set it as the startcol for the source instead of refresh_pattern",
+ "type": "string"
+ },
"command": {
"description": "define name of language server",
"type": "string"
@@ -29,32 +22,43 @@
},
"requires": {
"description": "define commands to install this language server",
- "type": "array",
"items": {
- "type": "string",
- "description": "executable command name"
- }
+ "description": "executable command name",
+ "type": "string"
+ },
+ "type": "array"
},
"vim-plugin": {
- "description": "define suggestion for vim-plugin",
- "type": "object",
"additionalProperties": false,
+ "description": "define suggestion for vim-plugin",
"properties": {
"extensions": {
- "type": "array",
"items": {
- "type": "string",
- "description": "file extensions"
- }
+ "description": "file extensions",
+ "type": "string"
+ },
+ "type": "array"
},
"name": {
- "type": "string",
- "description": "plugin identify user/repo"
+ "description": "plugin identify user/repo",
+ "type": "string"
}
- }
+ },
+ "type": "object"
}
- }
- }
+ },
+ "required": [
+ "command",
+ "requires"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "^\\$schema$": {
+ "type": "string"
}
- }
+ },
+ "title": "vim-lsp-settings",
+ "type": "object"
}
diff --git a/settings.json b/settings.json
index 02cf1a3..c62470e 100644
--- a/settings.json
+++ b/settings.json
@@ -63,6 +63,7 @@
],
"css": [
{
+ "refresh_pattern": "\\([a-zA-Z0-9_-]\\+\\)$",
"command": "css-languageserver",
"requires": [
"npm"
@@ -161,6 +162,27 @@
]
}
],
+ "glsl": [
+ {
+ "command": "glslls",
+ "requires": [
+ "cmake",
+ "git",
+ "make"
+ ],
+ "vim-plugin": {
+ "extensions": [
+ "vert",
+ "tesc",
+ "tese",
+ "glsl",
+ "geom",
+ "frag"
+ ],
+ "name": "tikhomirov/vim-glsl"
+ }
+ }
+ ],
"go": [
{
"command": "gopls",
@@ -232,6 +254,7 @@
],
"json": [
{
+ "refresh_pattern": "\\(\"\\k*\\|\\[\\|\\k\\+\\)$",
"command": "json-languageserver",
"requires": [
"npm"
@@ -356,6 +379,21 @@
]
}
],
+ "ps1": [
+ {
+ "refresh_pattern": "\\(\\$[a-zA-Z0-9_:]*\\|\\k\\+\\)$",
+ "command": "powershell-languageserver",
+ "requires": [
+ "pwsh"
+ ],
+ "vim-plugin": {
+ "extensions": [
+ "ps1"
+ ],
+ "name": "PProvost/vim-ps1"
+ }
+ }
+ ],
"python": [
{
"command": "pyls",
diff --git a/settings/cl-lsp.vim b/settings/cl-lsp.vim
index 46c3b5a..e613350 100644
--- a/settings/cl-lsp.vim
+++ b/settings/cl-lsp.vim
@@ -2,7 +2,7 @@ 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']})},
+ \ '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(g:lsp_settings_root_markers))},
\ 'initialization_options': lsp_settings#get('cl-lsp', 'initialization_options', {}),
\ 'whitelist': lsp_settings#get('cl-lsp', 'whitelist', ['lisp']),
diff --git a/settings/css-languageserver.vim b/settings/css-languageserver.vim
index 3e4dc4f..de414c2 100644
--- a/settings/css-languageserver.vim
+++ b/settings/css-languageserver.vim
@@ -7,7 +7,7 @@ augroup vimlsp_settings_css_languageserver
\ 'initialization_options': lsp_settings#get('css-languageserver', 'initialization_options', v:null),
\ 'whitelist': lsp_settings#get('css-languageserver', 'whitelist', ['css', 'less', 'sass']),
\ 'blacklist': lsp_settings#get('css-languageserver', 'blacklist', []),
- \ 'config': lsp_settings#get('css-languageserver', 'config', {}),
+ \ 'config': lsp_settings#get('css-languageserver', 'config', {'typed_pattern': '-\?[a-zA-Z_]\+[_a-zA-Z0-9-]\+$'}),
\ 'workspace_config': lsp_settings#get('css-languageserver', 'workspace_config', {
\ 'css': {'lint': {'validProperties': []}},
\ 'less': {'lint': {'validProperties': []}},
diff --git a/settings/digestif.vim b/settings/digestif.vim
index f7b8e8a..2fbe709 100644
--- a/settings/digestif.vim
+++ b/settings/digestif.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_digestif
\ 'name': 'digestif',
\ 'cmd': {server_info->lsp_settings#get('digestif', 'cmd', [lsp_settings#exec_path('digestif')])},
\ 'root_uri':{server_info->lsp_settings#get('digestif', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('digestif', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('digestif', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('digestif', 'whitelist', ['plaintex', 'tex']),
\ 'blacklist': lsp_settings#get('digestif', 'blacklist', []),
\ 'config': lsp_settings#get('digestif', 'config', {}),
diff --git a/settings/dls.vim b/settings/dls.vim
index a4fe3e1..b27b1b9 100644
--- a/settings/dls.vim
+++ b/settings/dls.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_dls
\ 'name': 'dls',
\ 'cmd': {server_info->lsp_settings#get('dls', 'cmd', [lsp_settings#exec_path('dls')])},
\ 'root_uri':{server_info->lsp_settings#get('dls', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('dls', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('dls', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('dls', 'whitelist', ['d']),
\ 'blacklist': lsp_settings#get('dls', 'blacklist', []),
\ 'config': lsp_settings#get('dls', 'config', {}),
diff --git a/settings/glslls.vim b/settings/glslls.vim
new file mode 100644
index 0000000..078fc66
--- /dev/null
+++ b/settings/glslls.vim
@@ -0,0 +1,13 @@
+augroup vimlsp_settings_glslls
+ au!
+ LspRegisterServer {
+ \ 'name': 'glslls',
+ \ 'cmd': {server_info->lsp_settings#get('glslls', 'cmd', [lsp_settings#exec_path('glslls'), '--stdin'])},
+ \ 'root_uri':{server_info->lsp_settings#get('glslls', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
+ \ 'initialization_options': lsp_settings#get('glslls', 'initialization_options', v:null),
+ \ 'whitelist': lsp_settings#get('glslls', 'whitelist', ['glsl']),
+ \ 'blacklist': lsp_settings#get('glslls', 'blacklist', []),
+ \ 'config': lsp_settings#get('glslls', 'config', {}),
+ \ 'workspace_config': lsp_settings#get('glslls', 'workspace_config', {name, key->{'json': {'format': {'enable': v:true}, 'schemas': json_decode(join(readfile(expand('<sfile>:h:h') . '/data/catalog.json'), "\n"))['schemas']}}}),
+ \ }
+augroup END
diff --git a/settings/gql-language-server.vim b/settings/gql-language-server.vim
index 8fe118d..4217c4b 100644
--- a/settings/gql-language-server.vim
+++ b/settings/gql-language-server.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_gql_language_server
\ 'name': 'gql-language-server',
\ 'cmd': {server_info->lsp_settings#get('gql-language-server', 'cmd', [lsp_settings#exec_path('gql-language-server'), '--stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('gql-language-server', 'root_uri', lsp_settings#root_uri(extend(['package.json', 'tsconfig.json', '.gqlconfig'], g:lsp_settings_root_markers)))},
- \ 'initialization_options': lsp_settings#get('gql-language-server', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('gql-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('gql-language-server', 'whitelist', ['graphql']),
\ 'blacklist': lsp_settings#get('gql-language-server', 'blacklist', []),
\ 'config': lsp_settings#get('gql-language-server', 'config', {}),
diff --git a/settings/html-languageserver.vim b/settings/html-languageserver.vim
index 7855505..edecd24 100644
--- a/settings/html-languageserver.vim
+++ b/settings/html-languageserver.vim
@@ -7,7 +7,7 @@ augroup vimlsp_settings_html_languageserver
\ 'initialization_options': lsp_settings#get('html-languageserver', 'initialization_options', {'embeddedLanguages': {'css': v:true, 'javascript': v:true}}),
\ 'whitelist': lsp_settings#get('html-languageserver', 'whitelist', ['html']),
\ 'blacklist': lsp_settings#get('html-languageserver', 'blacklist', []),
- \ 'config': lsp_settings#get('html-languageserver', 'config', {}),
+ \ 'config': lsp_settings#get('html-languageserver', 'config', {'typed_pattern': '\(/\|k\+\)$'}),
\ 'workspace_config': lsp_settings#get('html-languageserver', 'workspace_config', {}),
\ }
augroup END
diff --git a/settings/javascript-typescript-stdio.vim b/settings/javascript-typescript-stdio.vim
index 9d3f645..14762be 100644
--- a/settings/javascript-typescript-stdio.vim
+++ b/settings/javascript-typescript-stdio.vim
@@ -4,8 +4,8 @@ augroup vimlsp_settings_javascript_typescript_stdio
\ 'name': 'javascript-typescript-stdio',
\ 'cmd': {server_info->lsp_settings#get('javascript-typescript-stdio', 'cmd', [lsp_settings#exec_path('javascript-typescript-stdio')])},
\ 'root_uri':{server_info->lsp_settings#get('javascript-typescript-stdio', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('javascript-typescript-stdio', 'initialization_options', {"diagnostics": "true"}),
- \ 'whitelist': lsp_settings#get('javascript-typescript-stdio', 'whitelist', ['javascript', 'javascriptreact']),
+ \ 'initialization_options': lsp_settings#get('javascript-typescript-stdio', 'initialization_options', {'diagnostics': 'true'}),
+ \ 'whitelist': lsp_settings#get('javascript-typescript-stdio', 'whitelist', ['javascript', 'javascriptreact', 'javascript.jsx']),
\ 'blacklist': lsp_settings#get('javascript-typescript-stdio', 'blacklist', []),
\ 'config': lsp_settings#get('javascript-typescript-stdio', 'config', {}),
\ 'workspace_config': lsp_settings#get('javascript-typescript-stdio', 'workspace_config', {}),
diff --git a/settings/metals.vim b/settings/metals.vim
index 376d5f5..d0cdd53 100644
--- a/settings/metals.vim
+++ b/settings/metals.vim
@@ -7,7 +7,7 @@ augroup vimlsp_settings_metals
\ 'initialization_options': lsp_settings#get('metals', 'initialization_options', v:null),
\ 'whitelist': lsp_settings#get('metals', 'whitelist', ['scala', 'sbt']),
\ 'blacklist': lsp_settings#get('metals', 'blacklist', []),
- \ 'config': lsp_settings#get('metals', 'config', {}),
+ \ 'config': lsp_settings#get('metals', 'config', {'typed_pattern': '\k\zs'}),
\ 'workspace_config': lsp_settings#get('metals', 'workspace_config', {}),
\ }
augroup END
diff --git a/settings/nimlsp.vim b/settings/nimlsp.vim
index 70a59a8..f467dc6 100644
--- a/settings/nimlsp.vim
+++ b/settings/nimlsp.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_nimlsp
\ 'name': 'nimlsp',
\ 'cmd': {server_info->lsp_settings#get('nimlsp', 'cmd', [lsp_settings#exec_path('nimlsp')])},
\ 'root_uri':{server_info->lsp_settings#get('nimlsp', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('nimlsp', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('nimlsp', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('nimlsp', 'whitelist', ['nim']),
\ 'blacklist': lsp_settings#get('nimlsp', 'blacklist', []),
\ 'config': lsp_settings#get('nimlsp', 'config', {}),
diff --git a/settings/powershell-languageserver.vim b/settings/powershell-languageserver.vim
new file mode 100644
index 0000000..105cd19
--- /dev/null
+++ b/settings/powershell-languageserver.vim
@@ -0,0 +1,13 @@
+augroup vimlsp_settings_powershell_languageserver
+ au!
+ LspRegisterServer {
+ \ 'name': 'powershell-languageserver',
+ \ 'cmd': {server_info->lsp_settings#get('powershell-languageserver', 'cmd', [lsp_settings#exec_path('powershell-languageserver')])},
+ \ 'root_uri':{server_info->lsp_settings#get('powershell-languageserver', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
+ \ 'initialization_options': lsp_settings#get('powershell-languageserver', 'initialization_options', v:null),
+ \ 'whitelist': lsp_settings#get('powershell-languageserver', 'whitelist', ['ps1']),
+ \ 'blacklist': lsp_settings#get('powershell-languageserver', 'blacklist', []),
+ \ 'config': lsp_settings#get('solargraph', 'config', {'typed_pattern': '\(\$[a-zA-Z0-9_:]*\|\k\+\)$'}),
+ \ 'workspace_config': lsp_settings#get('powershell-languageserver', 'workspace_config', {}),
+ \ }
+augroup END
diff --git a/settings/solargraph.vim b/settings/solargraph.vim
index 9373975..3b723ee 100644
--- a/settings/solargraph.vim
+++ b/settings/solargraph.vim
@@ -4,10 +4,10 @@ augroup vimlsp_settings_solargraph
\ 'name': 'solargraph',
\ 'cmd': {server_info->lsp_settings#get('solargraph', 'cmd', [lsp_settings#exec_path('solargraph'), 'stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('solargraph', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('solargraph', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('solargraph', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('solargraph', 'whitelist', ['ruby']),
\ 'blacklist': lsp_settings#get('solargraph', 'blacklist', []),
- \ 'config': lsp_settings#get('solargraph', 'config', {}),
+ \ 'config': lsp_settings#get('solargraph', 'config', {'typed_pattern': '\([$@]\k*\|\k\+\)$'}),
\ 'workspace_config': lsp_settings#get('solargraph', 'workspace_config', {}),
\ }
augroup END
diff --git a/settings/texlab.vim b/settings/texlab.vim
index 94d4321..f9bce25 100644
--- a/settings/texlab.vim
+++ b/settings/texlab.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_texlab
\ 'name': 'texlab',
\ 'cmd': {server_info->lsp_settings#get('texlab', 'cmd', [lsp_settings#exec_path('texlab')])},
\ 'root_uri':{server_info->lsp_settings#get('texlab', 'root_uri', lsp_settings#root_uri(g:lsp_settings_root_markers))},
- \ 'initialization_options': lsp_settings#get('texlab', 'initialization_options', {"diagnostics": "true"}),
+ \ 'initialization_options': lsp_settings#get('texlab', 'initialization_options', {'diagnostics': 'true'}),
\ 'whitelist': lsp_settings#get('texlab', 'whitelist', ['plaintex', 'tex']),
\ 'blacklist': lsp_settings#get('texlab', 'blacklist', []),
\ 'config': lsp_settings#get('texlab', 'config', {}),
diff --git a/settings/typescript-language-server.vim b/settings/typescript-language-server.vim
index 17b2db3..adf4838 100644
--- a/settings/typescript-language-server.vim
+++ b/settings/typescript-language-server.vim
@@ -4,8 +4,8 @@ augroup vimlsp_settings_typescript_language_server
\ 'name': 'typescript-language-server',
\ 'cmd': {server_info->lsp_settings#get('typescript-language-server', 'cmd', [lsp_settings#exec_path('typescript-language-server'), '--stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp_settings#root_uri(extend(['package.json', 'tsconfig.json'], g:lsp_settings_root_markers)))},
- \ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {"diagnostics": "true"}),
- \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact']),
+ \ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {'diagnostics': 'true'}),
+ \ 'whitelist': lsp_settings#get('typescript-language-server', 'whitelist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'typescript.tsx']),
\ 'blacklist': lsp_settings#get('typescript-language-server', 'blacklist', []),
\ 'config': lsp_settings#get('typescript-language-server', 'config', {}),
\ 'workspace_config': lsp_settings#get('typescript-language-server', 'workspace_config', {}),
diff --git a/settings/vls.vim b/settings/vls.vim
index 7bb3845..d2c73a4 100644
--- a/settings/vls.vim
+++ b/settings/vls.vim
@@ -4,7 +4,7 @@ augroup vimlsp_settings_vls
\ 'name': 'vls',
\ 'cmd': {server_info->lsp_settings#get('vls', 'cmd', [lsp_settings#exec_path('vls'), '--stdio'])},
\ 'root_uri':{server_info->lsp_settings#get('vls', 'root_uri', lsp_settings#root_uri(extend(['package.json'], g:lsp_settings_root_markers)))},
- \ 'initialization_options': lsp_settings#get('vls', 'initialization_options', {'config': {'vetur': {'useWorkspaceDependencies': v:false, 'validation': {'template': v:true, 'style': v:true, 'script': v:true}, 'completion': {'autoImport': v:false, 'useScaffoldSnippets': v:false, 'tagCasing': 'kebab'}, 'format': {'defaultFormatter': {'js': v:none, 'ts': v:none}, 'defaultFormatterOptions': {}, 'scriptInitialIndent': v:false, 'styleInitialIndent': v:false}, 'dev': {'logLevel': 'DEBUG'}}, 'css': {}, 'html': {'suggest': {}}, 'javascript': {'format': {}}, 'typescript': {'format': {}}, 'emmet': {}, 'stylusSupremacy': {}}}),
+ \ 'initialization_options': lsp_settings#get('vls', 'initialization_options', {'config': {'vetur': {'useWorkspaceDependencies': v:false, 'validation': {'template': v:true, 'style': v:true, 'script': v:true}, 'completion': {'autoImport': v:false, 'useScaffoldSnippets': v:false, 'tagCasing': 'kebab'}, 'format': {'defaultFormatter': {'js': '', 'ts': ''}, 'defaultFormatterOptions': {}, 'scriptInitialIndent': v:false, 'styleInitialIndent': v:false}, 'dev': {'logLevel': 'DEBUG'}}, 'css': {}, 'html': {'suggest': {}}, 'javascript': {'format': {}}, 'typescript': {'format': {}}, 'emmet': {}, 'stylusSupremacy': {}}}),
\ 'whitelist': lsp_settings#get('vls', 'whitelist', ['vue']),
\ 'blacklist': lsp_settings#get('vls', 'blacklist', []),
\ 'config': lsp_settings#get('vls', 'config', {}),
diff --git a/test/lsp_settings.vimspec b/test/lsp_settings.vimspec
index 36db445..904610a 100644
--- a/test/lsp_settings.vimspec
+++ b/test/lsp_settings.vimspec
@@ -88,6 +88,7 @@ Describe lsp_settings
It should setup commands and autocmds.
call lsp_settings#clear()
call lsp_settings#init()
+ let g:vim_lsp_settings_filetype_no_delays = 1
autocmd vim_lsp_suggest_python
Assert exists(':LspInstallServer')
delcommand LspInstallServer
@@ -99,6 +100,7 @@ Describe lsp_settings
exe 'augroup! ' . v
endfor
bw!
+ unlet g:vim_lsp_settings_filetype_no_delays
End
It should setup commands and autocmds with python.
@@ -106,6 +108,7 @@ Describe lsp_settings
call lsp_settings#init()
new
let g:lsp_settings = {'pyls': {'cmd': ['foo', 'bar']}}
+ let g:vim_lsp_settings_filetype_no_delays = 1
Throw /E117/ :setfiletype python
bw!
for v in filter(split(execute('augroup'), '\s\+'), 'v:val=~"^vim_lsp_suggest"')
@@ -115,6 +118,7 @@ Describe lsp_settings
exe 'augroup! ' . v
endfor
unlet g:lsp_settings
+ unlet g:vim_lsp_settings_filetype_no_delays
End
End
End