I broke up with neovim....vim is my best friend now

This commit is contained in:
LinlyBoi
2023-04-30 08:14:07 +03:00
parent 0d185449c5
commit 4a4a6b1e81
5245 changed files with 468325 additions and 25 deletions

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_analysis_server_dart_snapshot
au!
LspRegisterServer {
\ 'name': 'analysis-server-dart-snapshot',
\ 'cmd': {server_info->lsp_settings#get('analysis-server-dart-snapshot', 'cmd', [lsp_settings#exec_path('analysis-server-dart-snapshot')]+lsp_settings#get('analysis-server-dart-snapshot', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('analysis-server-dart-snapshot', 'root_uri', lsp_settings#root_uri('analysis-server-dart-snapshot'))},
\ 'initialization_options': lsp_settings#get('analysis-server-dart-snapshot', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('analysis-server-dart-snapshot', 'allowlist', ['dart']),
\ 'blocklist': lsp_settings#get('analysis-server-dart-snapshot', 'blocklist', []),
\ 'config': lsp_settings#get('analysis-server-dart-snapshot', 'config', lsp_settings#server_config('analysis-server-dart-snapshot')),
\ 'workspace_config': lsp_settings#get('analysis-server-dart-snapshot', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('analysis-server-dart-snapshot', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_angular_language_server
au!
LspRegisterServer {
\ 'name': 'angular-language-server',
\ 'cmd': {server_info->lsp_settings#get('angular-language-server', 'cmd', [lsp_settings#exec_path('angular-language-server')]+lsp_settings#get('angular-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('angular-language-server', 'root_uri', lsp_settings#root_uri('angular-language-server'))},
\ 'initialization_options': lsp_settings#get('angular-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('angular-language-server', 'allowlist', {x-> empty(lsp_settings#root_path(['angular.json'])) ? [] : ['html']}),
\ 'blocklist': lsp_settings#get('angular-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('angular-language-server', 'config', lsp_settings#server_config('angular-language-server')),
\ 'workspace_config': lsp_settings#get('angular-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('angular-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_apex_jorje_lsp
au!
LspRegisterServer {
\ 'name': 'apex-jorje-lsp',
\ 'cmd': {server_info->lsp_settings#get('apex-jorje-lsp', 'cmd', [lsp_settings#exec_path('apex-jorje-lsp')]+lsp_settings#get('apex-jorje-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('apex-jorje-lsp', 'root_uri', lsp_settings#root_uri('apex-jorje-lsp'))},
\ 'initialization_options': lsp_settings#get('apex-jorje-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('apex-jorje-lsp', 'allowlist', ['apex']),
\ 'blocklist': lsp_settings#get('apex-jorje-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('apex-jorje-lsp', 'config', lsp_settings#server_config('apex-jorje-lsp')),
\ 'workspace_config': lsp_settings#get('apex-jorje-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('apex-jorje-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,43 @@
function! s:get_current_ts_path() abort
let ts_path = '/node_modules/typescript/lib/tsserverlibrary.js'
let project_dir = lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'package.json')
let tsserverlibrary_path = project_dir . ts_path
let server_dir = lsp_settings#servers_dir() . '/astro-ls'
let fallback_path = server_dir . ts_path
let path = filereadable(tsserverlibrary_path) ? tsserverlibrary_path : fallback_path
return {
\ 'serverPath': path,
\ 'localizedPath': v:null,
\ }
endfunction
function! Vim_lsp_settings_astro_setup_ts_path(options) abort
let initialization_options = deepcopy(a:options)
let initialization_options['typescript'] = s:get_current_ts_path()
return initialization_options
endfunction
let g:vim_lsp_settings_astro_options = {
\ 'typescript': {
\ 'serverPath': '',
\ 'localizedPath': v:null,
\ },
\ }
augroup vim_lsp_settings_astro_ls
au!
LspRegisterServer {
\ 'name': 'astro-ls',
\ 'cmd': {server_info->lsp_settings#get('astro-ls', 'cmd', [lsp_settings#exec_path('astro-ls')]+lsp_settings#get('astro-ls', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('astro-ls', 'root_uri', lsp_settings#root_uri('astro-ls'))},
\ 'initialization_options': lsp_settings#get('astro-ls', 'initialization_options', Vim_lsp_settings_astro_setup_ts_path(g:vim_lsp_settings_astro_options)),
\ 'allowlist': lsp_settings#get('astro-ls', 'allowlist', ['astro']),
\ 'blocklist': lsp_settings#get('astro-ls', 'blocklist', []),
\ 'config': lsp_settings#get('astro-ls', 'config', lsp_settings#server_config('astro-ls')),
\ 'workspace_config': lsp_settings#get('astro-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('astro-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_bash_language_server
au!
LspRegisterServer {
\ 'name': 'bash-language-server',
\ 'cmd': {server_info->lsp_settings#get('bash-language-server', 'cmd', [lsp_settings#exec_path('bash-language-server')]+lsp_settings#get('bash-language-server', 'args', ['start']))},
\ 'root_uri':{server_info->lsp_settings#get('bash-language-server', 'root_uri', lsp_settings#root_uri('bash-language-server'))},
\ 'initialization_options': lsp_settings#get('bash-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('bash-language-server', 'allowlist', ['sh']),
\ 'blocklist': lsp_settings#get('bash-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('bash-language-server', 'config', lsp_settings#server_config('bash-language-server')),
\ 'workspace_config': lsp_settings#get('bash-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('bash-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_bufls
au!
LspRegisterServer {
\ 'name': 'bufls',
\ 'cmd': {server_info->lsp_settings#get('bufls', 'cmd', [lsp_settings#exec_path('bufls')]+lsp_settings#get('bufls', 'args', ['serve']))},
\ 'root_uri':{server_info->lsp_settings#get('bufls', 'root_uri', lsp_settings#root_uri('bufls'))},
\ 'initialization_options': lsp_settings#get('bufls', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('bufls', 'allowlist', ['proto']),
\ 'blocklist': lsp_settings#get('bufls', 'blocklist', []),
\ 'config': lsp_settings#get('bufls', 'config', lsp_settings#server_config('bufls')),
\ 'workspace_config': lsp_settings#get('bufls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('bufls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_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']+lsp_settings#get('cl-lsp', 'args', ['stdio'])})},
\ 'root_uri':{server_info->lsp_settings#get('cl-lsp', 'root_uri', lsp_settings#root_uri('cl-lsp'))},
\ 'initialization_options': lsp_settings#get('cl-lsp', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('cl-lsp', 'allowlist', ['lisp']),
\ 'blocklist': lsp_settings#get('cl-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('cl-lsp', 'config', lsp_settings#server_config('cl-lsp')),
\ 'workspace_config': lsp_settings#get('cl-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('cl-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,93 @@
augroup vim_lsp_settings_clangd
au!
LspRegisterServer {
\ 'name': 'clangd',
\ 'cmd': {server_info->lsp_settings#get('clangd', 'cmd', [lsp_settings#exec_path('clangd')]+lsp_settings#get('clangd', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('clangd', 'root_uri', lsp_settings#root_uri('clangd'))},
\ 'initialization_options': lsp_settings#get('clangd', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('clangd', 'allowlist', ['c', 'cpp', 'objc', 'objcpp']),
\ 'blocklist': lsp_settings#get('clangd', 'blocklist', []),
\ 'config': lsp_settings#get('clangd', 'config', lsp_settings#server_config('clangd')),
\ 'workspace_config': lsp_settings#get('clangd', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('clangd', 'semantic_highlight', {}),
\ }
augroup END
function! s:handle_document_switch_source_header(ctx, server, type, has_extension, data) abort "ctx = {counter, list, last_command_id}
if a:ctx['last_command_id'] != lsp#_last_command()
return
endif
if lsp#client#is_error(a:data['response']) || !has_key(a:data['response'], 'result')
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
return
elseif type(a:data['response']['result']) !=# v:t_string
call lsp#utils#error('No switchable header file found')
return
endif
let a:ctx['list'] = a:ctx['list'] + [lsp#utils#uri_to_path(a:data['response']['result'])]
if a:ctx['counter'] == a:has_extension
if empty(a:ctx['list'])
call lsp#utils#error('No ' . a:type .' found')
else
call lsp#utils#tagstack#_update()
let l:loc = {
\ 'filename': a:ctx['list'][0],
\ 'lnum': 0,
\ 'col': 0,
\ }
call lsp#utils#location#_open_vim_list_item(l:loc, '')
echo 'Retrieved ' . a:type
redraw
endif
endif
endfunction
function! s:document_switch_source_header() abort
let l:servers = lsp#get_whitelisted_servers()
let l:has_extension = 0
for l:server in l:servers
if stridx(l:server, 'clangd') != -1
let l:has_extension += 1
endif
endfor
call setqflist([])
if l:has_extension == 0
call lsp#utils#error('Switching between source/header not supported for '.&filetype)
return
endif
let l:command_id = lsp#_new_command()
let l:ctx = { 'counter': l:has_extension, 'list':[], 'last_command_id': l:command_id }
for l:server in l:servers
if stridx(l:server, 'clangd') == -1
continue
endif
call lsp#send_request(l:server, {
\ 'method': 'textDocument/switchSourceHeader',
\ 'params': {
\ 'uri': lsp#utils#get_buffer_uri(),
\ },
\ 'on_notification': function('s:handle_document_switch_source_header', [l:ctx, l:server, 'header/source', l:has_extension]),
\ })
endfor
echo 'Switching between source/header ...'
endfunction
function! s:on_lsp_buffer_enabled() abort
command! -buffer LspDocumentSwitchSourceHeader call <SID>document_switch_source_header()
nnoremap <buffer> <plug>(lsp-switch-source-header) :<c-u>call <SID>document_switch_source_header()<cr>
endfunction
augroup lsp_install_clangd
au!
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_clj_kondo_lsp
au!
LspRegisterServer {
\ 'name': 'clj-kondo-lsp',
\ 'cmd': {server_info->lsp_settings#get('clj-kondo-lsp', 'cmd', ['java', '-jar', lsp_settings#exec_path('clj-kondo-lsp')]+lsp_settings#get('clj-kondo-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('clj-kondo-lsp', 'root_uri', lsp_settings#root_uri('clj-kondo-lsp'))},
\ 'initialization_options': lsp_settings#get('clj-kondo-lsp', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('clj-kondo-lsp', 'allowlist', ['clojure']),
\ 'blocklist': lsp_settings#get('clj-kondo-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('clj-kondo-lsp', 'config', lsp_settings#server_config('clj-kondo-lsp')),
\ 'workspace_config': lsp_settings#get('clj-kondo-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('clj-kondo-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_clojure_lsp
au!
LspRegisterServer {
\ 'name': 'clojure-lsp',
\ 'cmd': {server_info->lsp_settings#get('clojure-lsp', 'cmd', [lsp_settings#exec_path('clojure-lsp')]+lsp_settings#get('clojure-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('clojure-lsp', 'root_uri', lsp_settings#root_uri('clojure-lsp'))},
\ 'initialization_options': lsp_settings#get('clojure-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('clojure-lsp', 'allowlist', ['clojure']),
\ 'blocklist': lsp_settings#get('clojure-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('clojure-lsp', 'config', lsp_settings#server_config('clojure-lsp')),
\ 'workspace_config': lsp_settings#get('clojure-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('clojure-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_cmake-language-server
au!
LspRegisterServer {
\ 'name': 'cmake-language-server',
\ 'cmd': {server_info->lsp_settings#get('cmake-language-server', 'cmd', [lsp_settings#exec_path('cmake-language-server')]+lsp_settings#get('cmake-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('cmake-language-server', 'root_uri', lsp_settings#root_uri('cmake-language-server'))},
\ 'initialization_options': lsp_settings#get('cmake-language-server', 'initialization_options', {'buildDirectory': 'build'}),
\ 'allowlist': lsp_settings#get('cmake-language-server', 'allowlist', ['cmake']),
\ 'blocklist': lsp_settings#get('cmake-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('cmake-language-server', 'config', lsp_settings#server_config('cmake-language-server')),
\ 'workspace_config': lsp_settings#get('cmake-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('cmake-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_cobol_language_support
au!
LspRegisterServer {
\ 'name': 'cobol-language-support',
\ 'cmd': {server_info->lsp_settings#get('cobol-language-support', 'cmd', [lsp_settings#exec_path('cobol-language-support')]+lsp_settings#get('cobol-language-support', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('cobol-language-server', 'root_uri', lsp_settings#root_uri('cobol-language-support'))},
\ 'initialization_options': lsp_settings#get('cobol-language-support', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('cobol-language-support', 'allowlist', ['cobol']),
\ 'blocklist': lsp_settings#get('cobol-language-support', 'blocklist', []),
\ 'config': lsp_settings#get('cobol-language-support', 'config', lsp_settings#server_config('cobol-language-support')),
\ 'workspace_config': lsp_settings#get('cobol-language-support', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('cobol-language-support', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,19 @@
augroup vim_lsp_settings_css_languageserver
au!
LspRegisterServer {
\ 'name': 'css-languageserver',
\ 'cmd': {server_info->lsp_settings#get('css-languageserver', 'cmd', [lsp_settings#exec_path('css-languageserver')]+lsp_settings#get('css-languageserver', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('css-languageserver', 'root_uri', lsp_settings#root_uri('css-languageserver'))},
\ 'initialization_options': lsp_settings#get('css-languageserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('css-languageserver', 'allowlist', ['css', 'less', 'sass', 'scss']),
\ 'blocklist': lsp_settings#get('css-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('css-languageserver', 'config', lsp_settings#server_config('css-languageserver')),
\ 'workspace_config': lsp_settings#get('css-languageserver', 'workspace_config', {
\ 'css': {'lint': {'validProperties': []}},
\ 'less': {'lint': {'validProperties': []}},
\ 'sass': {'lint': {'validProperties': []}},
\ 'scss': {'lint': {'validProperties': []}},
\ }),
\ 'semantic_highlight': lsp_settings#get('css-languageserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,402 @@
function! Vim_lsp_settings_deno_get_blocklist() abort
if !empty(lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'deno.json'))
return []
endif
if !empty(lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'deno.jsonc'))
return []
endif
if empty(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'node_modules/'))
return []
endif
return lsp_settings#utils#warning('server "deno" is disabled since "node_modules" is found', ['typescript', 'javascript', 'typescriptreact', 'javascriptreact'])
endfunction
augroup vim_lsp_settings_deno
au!
LspRegisterServer {
\ 'name': 'deno',
\ 'cmd': {server_info->lsp_settings#get('deno', 'cmd', [lsp_settings#exec_path('deno')]+lsp_settings#get('deno', 'args', ['lsp']))},
\ 'root_uri':{server_info->lsp_settings#get('deno', 'root_uri', lsp_settings#root_uri('deno'))},
\ 'initialization_options': lsp_settings#get('deno', 'initialization_options', {
\ 'enable': v:true,
\ 'lint': v:true,
\ 'unstable': v:true,
\ 'importMap': empty(lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'import_map.json')) ? v:null : lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'import_map.json'),
\ 'codeLens': {
\ 'implementations': v:true,
\ 'references': v:true,
\ 'referencesAllFunctions': v:true,
\ 'test': v:true,
\ 'testArgs': ['--allow-all'],
\ },
\ "suggest": {
\ "autoImports": v:true,
\ "completeFunctionCalls": v:true,
\ "names": v:true,
\ "paths": v:true,
\ "imports": {
\ "autoDiscover": v:false,
\ "hosts": {
\ "https://deno.land/": v:true,
\ },
\ },
\ },
\ "inlayHints": {
\ "parameterNames": {
\ "enabled": "all",
\ "suppressWhenArgumentMatchesName": v:true,
\ },
\ "parameterTypes": {
\ "enabled": v:true,
\ },
\ "variableTypes": {
\ "enabled": v:true,
\ "suppressWhenTypeMatchesName": v:true,
\ },
\ "propertyDeclarationTypes": {
\ "enabled": v:true,
\ },
\ "functionLikeReturnTypes": {
\ "enabled": v:true,
\ },
\ "enumMemberValues": {
\ "enabled": v:true,
\ },
\ },
\ 'config': empty(lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'tsconfig.json')) ? v:null : lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'tsconfig.json'),
\ 'internalDebug': lsp_settings#get('deno', 'internalDebug', v:false),
\ }),
\ 'allowlist': lsp_settings#get('deno', 'allowlist', ['typescript', 'javascript', 'typescriptreact', 'javascriptreact']),
\ 'blocklist': lsp_settings#get('deno', 'blocklist', Vim_lsp_settings_deno_get_blocklist()),
\ 'config': lsp_settings#get('deno', 'config', lsp_settings#server_config('deno')),
\ 'workspace_config': lsp_settings#get('deno', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('deno', 'semantic_highlight', {}),
\ }
augroup END
function! s:open_new_buffer(ctx, server, type, data) abort
" Based on vim-lsp/autoload/lsp/utils/location.vim s:open_location
let l:path = a:ctx['target_uri']
let l:line = a:ctx['target_selection_range']['start']['line'] + 1
let l:col = a:ctx['target_selection_range']['start']['character'] + 1
let l:text = a:data['response']['result']
if a:ctx['in_preview'] ==# 1
call lsp#ui#vim#output#preview(a:server, l:text, {
\ 'statusline': ' LSP Peek ' . a:type,
\ 'cursor': { 'line': l:line, 'col': l:col, 'align': g:lsp_peek_alignment },
\ 'filetype': &filetype
\ })
return
endif
let l:buffer = bufnr(l:path)
let l:mods = has_key(a:ctx, 'mods') ? a:ctx['mods'] : ''
if l:mods ==# '' && &modified && !&hidden && l:buffer != bufnr('%')
let l:mods = &splitbelow ? 'rightbelow' : 'leftabove'
endif
if l:mods ==# ''
if l:buffer == bufnr('%')
let l:cmd = ''
else
let l:cmd = (l:buffer !=# -1 ? 'b ' . l:buffer : 'edit ' . l:path)
endif
else
let l:cmd = l:mods . ' ' . (l:buffer !=# -1 ? 'sb ' . l:buffer : 'split ' . l:path)
endif
execute 'silent ' l:cmd
setlocal modifiable
call setline(1, split(l:text, "\n"))
setlocal noswapfile buftype=nofile
setlocal nomodified
setlocal nomodifiable
execute 'call cursor(' . l:line . ',' . l:col . ')'
endfunction
function! s:handle_deno_location(ctx, server, type, data) abort "ctx = {counter, list, last_command_id, jump_if_one, mods, in_preview}
"" Based on vim-lsp/autoload/lsp/ui/vim.vim s:handle_location()
if a:ctx['last_command_id'] != lsp#_last_command()
return
endif
let a:ctx['counter'] = a:ctx['counter'] - 1
if lsp#client#is_error(a:data['response']) || !has_key(a:data['response'], 'result')
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
return
else
let a:ctx['list'] = a:ctx['list'] + lsp#utils#location#_lsp_to_vim_list(a:data['response']['result'])
endif
if a:ctx['counter'] == 0
if empty(a:ctx['list'])
if type(a:data['response']) == type(v:null)
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': response is null')
return
endif
" deno responses contains `deno://` scheme path such as
" `deno://https/path/to/definition.ts`.
" vim-lsp should request `deno/virtualTextDocument` with `deno://`
" path.
let l:target_uri = a:data['response']['result'][0]['targetUri']
let l:target_selection_range = a:data['response']['result'][0]['targetSelectionRange']
if l:target_uri =~# 'deno://'
" deno 1.7.4 response `deno://`
" Darty hack for vim-lsp's `s:ensure_start()`.
" `s:ensure_start()` checks path is remote uri like or not.
" `deno://http/` is detected as remote uri and finish.
let a:ctx['target_uri'] = l:target_uri =~# 'deno://' ? substitute(l:target_uri, '^deno:\/\/', 'deno:', '') : l:target_uri
elseif l:target_uri =~# 'deno:/' || l:target_uri =~# 'deno:asset/'
" deno 1.7.5 response `deno:/`
" deno lsp encode `@` such as `std@0.87.0` to `std%400.87.0`
" It's hard to handle in vim-lsp, so decode `@` for filepath.
" ref: vim-lsp/autoload/lsp/utils.vim s:decode_uri(uri)
let a:ctx['target_uri'] = substitute(l:target_uri, '%\(\x\x\)', '\=printf("%c", str2nr(submatch(1), 16))', 'g')
else
" No deno cache file found
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': run deno cache')
return
endif
let a:ctx['target_selection_range'] = l:target_selection_range
call lsp#send_request('deno', {
\ 'method': 'deno/virtualTextDocument',
\ 'params': {
\ 'textDocument': {
\ 'uri': l:target_uri,
\ 'isCancellationRequested': v:false,
\ },
\ },
\ 'on_notification': function('s:open_new_buffer', [a:ctx, 'deno', 'definition']),
\ })
return
else
" Same buffer jump
call lsp#utils#tagstack#_update()
let l:loc = a:ctx['list'][0]
if len(a:ctx['list']) == 1 && a:ctx['jump_if_one'] && !a:ctx['in_preview']
call lsp#utils#location#_open_vim_list_item(l:loc, a:ctx['mods'])
echo 'Retrieved ' . a:type
redraw
elseif !a:ctx['in_preview']
call setqflist([])
call setqflist(a:ctx['list'])
echo 'Retrieved ' . a:type
botright copen
else
let l:lines = readfile(l:loc['filename'])
if has_key(l:loc,'viewstart') " showing a locationLink
let l:view = l:lines[l:loc['viewstart'] : l:loc['viewend']]
call lsp#ui#vim#output#preview(a:server, l:view, {
\ 'statusline': ' LSP Peek ' . a:type,
\ 'filetype': &filetype
\ })
else " showing a location
call lsp#ui#vim#output#preview(a:server, l:lines, {
\ 'statusline': ' LSP Peek ' . a:type,
\ 'cursor': { 'line': l:loc['lnum'], 'col': l:loc['col'], 'align': g:lsp_peek_alignment },
\ 'filetype': &filetype
\ })
endif
endif
endif
endif
endfunction
function! s:definition(in_preview, ...) abort
" Based on vim-lsp/autoload/lsp/ui/vim.vim s:list_location()
let l:capabilities_func = 'lsp#capabilities#has_definition_provider(v:val)'
let l:servers = filter(lsp#get_allowed_servers(), l:capabilities_func)
let l:command_id = lsp#_new_command()
let l:ctx = { 'counter': len(l:servers), 'list':[], 'last_command_id': l:command_id, 'jump_if_one': 1, 'mods': '', 'in_preview': a:in_preview }
if a:0
let l:ctx['mods'] = a:1
endif
if len(l:servers) == 0
call lsp#utils#error('Retriving definition not supported for filetype deno')
return
endif
let l:target_uri = lsp#get_text_document_identifier().uri
" Save deno's targetUri as buffer name and vim-lsp add `file://` prefex.
" If identifier is startwith `file://deno:`, remove `file://` prefex.
if l:target_uri =~# 'file://deno%3A'
let l:target_uri = substitute(l:target_uri, 'file:\/\/deno%3A', 'deno:', '')
endif
let l:params = {
\ 'textDocument': { 'uri': l:target_uri },
\ 'position': lsp#get_position(),
\ }
for l:server in l:servers
call lsp#send_request(l:server, {
\ 'method': 'textDocument/definition',
\ 'params': l:params,
\ 'on_notification': function('s:handle_deno_location', [l:ctx, l:server, 'definition']),
\ })
endfor
echo 'Retrieving definition ...'
endfunction
function! s:status(in_preview, ...) abort
let l:ctx = {
\ 'mods': '',
\ 'in_preview': a:in_preview,
\ 'target_uri': 'deno:/status.md',
\ 'target_selection_range': {
\ 'end': { 'character': 0, 'line': 0 },
\ 'start': { 'character': 0, 'line': 0 }
\ }}
if a:0
let l:ctx['mods'] = a:1
endif
call lsp#send_request('deno', {
\ 'method': 'deno/virtualTextDocument',
\ 'params': {
\ 'textDocument': { 'uri': 'deno:/status.md' },
\ },
\ 'on_notification': function('s:open_new_buffer', [l:ctx, 'deno', 'status'])
\ })
endfunction
function! s:handle_deno_cache(data) abort
if lsp#client#is_error(a:data['response']) || !has_key(a:data['response'], 'result')
redraw!
call lsp#utils#error('deno v1.7.5 or later is required to use cache')
return
endif
if a:data['response']['result'] == v:true
" Cache file would be enabled after reload buffer.
let l:curpos = getcurpos()
execute 'edit ' . expand('%:p')
call setpos('.', l:curpos)
echo 'Cache file installed'
endif
endfunction
function! s:handle_reload_import_registries(data) abort
if a:data['response']['result'] == v:true
echo 'Import registries reloaded'
endif
endfunction
function! s:cache() abort
let l:is_download_cache = input('Download all cache files?(y/n) ', 'y')
if l:is_download_cache =~# 'y'
call lsp#send_request('deno', {
\ 'method': 'deno/cache',
\ 'params': {
\ 'referrer': lsp#get_text_document_identifier(),
\ 'uris': [],
\ },
\ 'on_notification': function('s:handle_deno_cache', [])
\ })
endif
endfunction
function! s:reload_import_registries() abort
let l:is_download_cache = input('Do you reload import registries?(y/n) ', 'y')
if l:is_download_cache =~# 'y'
call lsp#send_request('deno', {
\ 'method': 'deno/reloadImportRegistries',
\ 'params': {
\ 'referrer': lsp#get_text_document_identifier(),
\ 'uris': [],
\ },
\ 'on_notification': function('s:handle_reload_import_registries', [])
\ })
endif
endfunction
function! s:on_lsp_buffer_enabled() abort
command! -buffer LspDenoDefinition call <SID>definition(0, <q-mods>)
nnoremap <buffer> <plug>(lsp-deno-definition) :<c-u>call <SID>definition(0)<cr>
command! -buffer LspDenoPeekDefinition call <SID>definition(1, <q-mods>)
nnoremap <buffer> <plug>(lsp-deno-peek-definition) :<c-u>call <SID>definition(1)<cr>
command! -buffer LspDenoStatus call <SID>status(0, <q-mods>)
nnoremap <buffer> <plug>(lsp-deno-status) :<c-u>call <SID>status(0)<cr>
command! -buffer LspDenoCache call <SID>cache()
nnoremap <buffer> <plug>(lsp-deno-cache) :<c-u>call <SID>cache()<cr>
command! -buffer LspDenoReloadImportRegistries call <SID>reload_import_registries()
nnoremap <buffer> <plug>(lsp-deno-reload-import-registries) :<c-u>call <SID>reload_import_registries()<cr>
endfunction
function! s:deno_test(context) abort
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
let l:testfile = lsp#utils#uri_to_path(get(l:arguments, 0, ''))
let l:test = get(l:arguments, 1, [])
let l:cmd = ['deno']
if len(l:test) > 0
let l:cmd += ['test', '--filter', l:test, l:testfile]
call lsp_settings#utils#term_start(l:cmd, {})
else
call lsp_settings#utils#error('Unsupported deno.test ' . json_encode(l:command))
endif
endfunction
function! s:deno_show_references(context) abort
let l:bufnr = get(a:context, 'bufnr', 0)
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
if len(l:arguments) > 0
let l:source_file = lsp#utils#uri_to_path(get(l:arguments, 0, ''))
let l:source_position = get(l:arguments, 1, {})
let l:source_lnum = l:source_position['line'] + 1
let l:references = get(l:arguments, 2, [])
let l:loclist = []
" Add source
call add(l:loclist, {
\ 'bufnr': l:bufnr,
\ 'filename': l:source_file,
\ 'lnum': l:source_lnum,
\ 'col': l:source_position['character'] + 1,
\ 'text': getline(l:source_lnum),
\ })
for l:reference in l:references
let l:lnum = l:reference['range']['start']['line'] + 1
let l:col = l:reference['range']['start']['character'] + 1
call add(l:loclist, {
\ 'bufnr': l:bufnr,
\ 'filename': lsp#utils#uri_to_path(l:reference['uri']),
\ 'lnum': l:lnum,
\ 'col': l:col,
\ 'text': getline(l:lnum),
\ })
endfor
call setloclist(win_getid(), l:loclist)
execute 'lopen'
endif
endfunction
function! s:noop(context)
endfunction
function! s:register_command() abort
if get(s:, 'setup') | return | endif
let s:setup = 1
call lsp#register_command('deno.test', function('s:deno_test'))
call lsp#register_command('deno.showReferences', function('s:deno_show_references'))
call lsp#register_command('', function('s:noop'))
endfunction
augroup lsp_install_deno
au!
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
autocmd User lsp_setup call s:register_command()
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_digestif
au!
LspRegisterServer {
\ 'name': 'digestif',
\ 'cmd': {server_info->lsp_settings#get('digestif', 'cmd', [lsp_settings#exec_path('digestif')]+lsp_settings#get('digestif', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('digestif', 'root_uri', lsp_settings#root_uri('digestif'))},
\ 'initialization_options': lsp_settings#get('digestif', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('digestif', 'allowlist', ['plaintex', 'tex']),
\ 'blocklist': lsp_settings#get('digestif', 'blocklist', []),
\ 'config': lsp_settings#get('digestif', 'config', lsp_settings#server_config('digestif')),
\ 'workspace_config': lsp_settings#get('digestif', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('digestif', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_dls
au!
LspRegisterServer {
\ 'name': 'dls',
\ 'cmd': {server_info->lsp_settings#get('dls', 'cmd', [lsp_settings#exec_path('dls')]+lsp_settings#get('dls', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('dls', 'root_uri', lsp_settings#root_uri('dls'))},
\ 'initialization_options': lsp_settings#get('dls', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('dls', 'allowlist', ['d']),
\ 'blocklist': lsp_settings#get('dls', 'blocklist', []),
\ 'config': lsp_settings#get('dls', 'config', lsp_settings#server_config('dls')),
\ 'workspace_config': lsp_settings#get('dls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('dls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_dockerfile_language_server_nodejs
au!
LspRegisterServer {
\ 'name': 'docker-langserver',
\ 'cmd': {server_info->lsp_settings#get('docker-langserver', 'cmd', [lsp_settings#exec_path('docker-langserver')]+lsp_settings#get('docker-langserver', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('docker-langserver', 'root_uri', lsp_settings#root_uri('docker-langserver'))},
\ 'initialization_options': lsp_settings#get('docker-langserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('docker-langserver', 'allowlist', ['dockerfile']),
\ 'blocklist': lsp_settings#get('docker-langserver', 'blocklist', []),
\ 'config': lsp_settings#get('docker-langserver', 'config', lsp_settings#server_config('docker-langserver')),
\ 'workspace_config': lsp_settings#get('docker-langserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('docker-langserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_dot_language_server
au!
LspRegisterServer {
\ 'name': 'dot-language-server',
\ 'cmd': {server_info->lsp_settings#get('dot-language-server', 'cmd', [lsp_settings#exec_path('dot-language-server')]+lsp_settings#get('dot-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('dot-language-server', 'root_uri', lsp_settings#root_uri('dot-language-server'))},
\ 'initialization_options': lsp_settings#get('dot-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('dot-language-server', 'allowlist', ['dot']),
\ 'blocklist': lsp_settings#get('dot-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('dot-language-server', 'config', lsp_settings#server_config('dot-language-server')),
\ 'workspace_config': lsp_settings#get('dot-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('dot-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,35 @@
augroup vim_lsp_settings_eclipse_jdt_ls
au!
LspRegisterServer {
\ 'name': 'eclipse-jdt-ls',
\ 'cmd': {server_info->lsp_settings#get('eclipse-jdt-ls', 'cmd', [lsp_settings#exec_path('eclipse-jdt-ls')]+lsp_settings#get('eclipse-jdt-ls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('eclipse-jdt-ls', 'root_uri', lsp_settings#root_uri('eclipse-jdt-ls'))},
\ 'initialization_options': lsp_settings#get('eclipse-jdt-ls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('eclipse-jdt-ls', 'allowlist', ['java']),
\ 'blocklist': lsp_settings#get('eclipse-jdt-ls', 'blocklist', []),
\ 'config': lsp_settings#get('eclipse-jdt-ls', 'config', lsp_settings#server_config('eclipse-jdt-ls')),
\ 'workspace_config': lsp_settings#get('eclipse-jdt-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('eclipse-jdt-ls', 'semantic_highlight', {}),
\ }
autocmd User lsp_setup call s:register_command()
augroup END
function! s:eclipse_jdt_ls_java_apply_workspaceEdit(context)
let l:command = get(a:context, 'command', {})
call lsp#utils#workspace_edit#apply_workspace_edit(l:command['arguments'][0])
endfunction
let s:initialized = 0
function! s:register_command()
if s:initialized
return
endif
let s:initialized = 1
augroup vim_lsp_settings_eclipse_jdt_ls
au!
augroup END
if exists('*lsp#register_command')
call lsp#register_command('java.apply.workspaceEdit', function('s:eclipse_jdt_ls_java_apply_workspaceEdit'))
endif
endfunction

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_efm_langserver
au!
LspRegisterServer {
\ 'name': 'efm-langserver',
\ 'cmd': {server_info->lsp_settings#get('efm-langserver', 'cmd', [lsp_settings#exec_path('efm-langserver')]+lsp_settings#get('efm-langserver', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('efm-langserver', 'root_uri', lsp_settings#root_uri('efm-langserver'))},
\ 'initialization_options': lsp_settings#get('efm-langserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('efm-langserver', 'allowlist', ['*']),
\ 'blocklist': lsp_settings#get('efm-langserver', 'blocklist', []),
\ 'config': lsp_settings#get('efm-langserver', 'config', lsp_settings#server_config('efm-langserver')),
\ 'workspace_config': lsp_settings#get('efm-langserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('efm-langserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,15 @@
augroup vim_lsp_settings_elixir_ls
au!
LspRegisterServer {
\ 'name': 'elixir-ls',
\ 'cmd': {server_info->lsp_settings#get('elixir-ls', 'cmd', [lsp_settings#exec_path('elixir-ls')]+lsp_settings#get('elixir-ls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('elixir-ls', 'root_uri', lsp_settings#root_uri('elixir-ls'))},
\ 'initialization_options': lsp_settings#get('elixir-ls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('elixir-ls', 'allowlist', ['elixir']),
\ 'blocklist': lsp_settings#get('elixir-ls', 'blocklist', []),
\ 'config': lsp_settings#get('elixir-ls', 'config', lsp_settings#server_config('elixir-ls')),
\ 'workspace_config': lsp_settings#get('elixir-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('elixir-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_elm_language_server
au!
LspRegisterServer {
\ 'name': 'elm-language-server',
\ 'cmd': {server_info->lsp_settings#get('elm-language-server', 'cmd', [lsp_settings#exec_path('elm-language-server')]+lsp_settings#get('elm-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('elm-language-server', 'root_uri', lsp_settings#root_uri('elm-language-server'))},
\ 'initialization_options': lsp_settings#get('elm-language-server', 'initialization_options', {'elmPath': 'elm', 'runtime': 'node', 'elmFormatPath': 'elm-format', 'elmTestPath': 'elm-test'}),
\ 'allowlist': lsp_settings#get('elm-language-server', 'allowlist', ['elm', 'elm.tsx']),
\ 'blocklist': lsp_settings#get('elm-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('elm-language-server', 'config', lsp_settings#server_config('elm-language-server')),
\ 'workspace_config': lsp_settings#get('elm-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('elm-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_emmylua_ls
au!
LspRegisterServer {
\ 'name': 'emmylua-ls',
\ 'cmd': {server_info->lsp_settings#get('emmylua-ls', 'cmd', [lsp_settings#exec_path('emmylua-ls')]+lsp_settings#get('emmylua-ls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('emmylua-ls', 'root_uri', lsp_settings#root_uri('emmylua-ls'))},
\ 'initialization_options': lsp_settings#get('emmylua-ls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('emmylua-ls', 'allowlist', ['lua']),
\ 'blocklist': lsp_settings#get('emmylua-ls', 'blocklist', []),
\ 'config': lsp_settings#get('emmylua-ls', 'config', lsp_settings#server_config('emmylua-ls')),
\ 'workspace_config': lsp_settings#get('emmylua-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('emmylua-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_erlang_ls
au!
LspRegisterServer {
\ 'name': 'erlang-ls',
\ 'cmd': {server_info->lsp_settings#get('erlang-ls', 'cmd', [lsp_settings#exec_path('erlang-ls')]+lsp_settings#get('erlang-ls', 'args', ['--transport', 'stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('erlang-ls', 'root_uri', lsp_settings#root_uri('erlang-ls'))},
\ 'initialization_options': lsp_settings#get('erlang-ls', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('erlang-ls', 'allowlist', ['erlang']),
\ 'blocklist': lsp_settings#get('erlang-ls', 'blocklist', []),
\ 'config': lsp_settings#get('erlang-ls', 'config', lsp_settings#server_config('erlang-ls')),
\ 'workspace_config': lsp_settings#get('erlang-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('erlang-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_esbonio
au!
LspRegisterServer {
\ 'name': 'esbonio',
\ 'cmd': {server_info->lsp_settings#get('esbonio', 'cmd', [lsp_settings#exec_path('esbonio')]+lsp_settings#get('esbonio', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('esbonio', 'root_uri', lsp_settings#root_uri('esbonio'))},
\ 'initialization_options': lsp_settings#get('esbonio', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('esbonio', 'allowlist', ['rst']),
\ 'blocklist': lsp_settings#get('esbonio', 'blocklist', []),
\ 'config': lsp_settings#get('esbonio', 'config', lsp_settings#server_config('esbonio')),
\ 'workspace_config': lsp_settings#get('esbonio', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('esbonio', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,36 @@
augroup vim_lsp_settings_eslint_language_server
au!
LspRegisterServer {
\ 'name': 'eslint-language-server',
\ 'cmd': {server_info->lsp_settings#get('eslint-language-server', 'cmd', [lsp_settings#exec_path('eslint-language-server')]+lsp_settings#get('eslint-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('eslint-language-server', 'root_uri', lsp_settings#root_uri('eslint-language-server'))},
\ 'initialization_options': lsp_settings#get('eslint-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('eslint-language-server', 'allowlist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact']),
\ 'blocklist': lsp_settings#get('eslint-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('eslint-language-server', 'config', lsp_settings#server_config('eslint-language-server')),
\ 'workspace_config': lsp_settings#get('eslint-language-server', 'workspace_config', {
\ 'validate': 'probe',
\ 'packageManager': 'npm',
\ 'codeActionOnSave': {
\ 'enable': v:true,
\ 'mode': 'all',
\ },
\ 'codeAction': {
\ 'disableRuleComment': {
\ 'enable': v:true,
\ 'location': 'separateLine',
\ },
\ 'showDocumentation': {
\ 'enable': v:true,
\ },
\ },
\ 'format': v:false,
\ 'quiet': v:false,
\ 'onIgnoredFiles': 'off',
\ 'options': {},
\ 'run': 'onType',
\ 'nodePath': v:null,
\ }),
\ 'semantic_highlight': lsp_settings#get('eslint-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_flow
au!
LspRegisterServer {
\ 'name': 'flow',
\ 'cmd': {server_info->lsp_settings#get('node', 'cmd', [lsp_settings#exec_path('flow')]+lsp_settings#get('flow', 'args', ['lsp']))},
\ 'root_uri': {server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), '.flowconfig'))},
\ 'initialization_options': lsp_settings#get('flow', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('flow', 'allowlist', ['javascript', 'javascriptreact']),
\ 'blocklist': lsp_settings#get('flow', 'blocklist', []),
\ 'config': lsp_settings#get('flow', 'config', {}),
\ 'workspace_config': lsp_settings#get('flow', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('flow', 'semantic_highlight', {}),
\}
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_fortls
au!
LspRegisterServer {
\ 'name': 'fortls',
\ 'cmd': {server_info->lsp_settings#get('fortls', 'cmd', [lsp_settings#exec_path('fortls')]+lsp_settings#get('fortls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('fortls', 'root_uri', lsp_settings#root_uri('fortls'))},
\ 'initialization_options': lsp_settings#get('fortls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('fortls', 'allowlist', ['fortran']),
\ 'blocklist': lsp_settings#get('fortls', 'blocklist', []),
\ 'config': lsp_settings#get('fortls', 'config', lsp_settings#server_config('fortls')),
\ 'workspace_config': lsp_settings#get('fortls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('fortls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_fsautocomplete
au!
LspRegisterServer {
\ 'name': 'fsautocomplete',
\ 'cmd': {server_info->lsp_settings#get('fsautocomplete', 'cmd', [lsp_settings#exec_path('fsautocomplete')]+lsp_settings#get('fsautocomplete', 'args', ['--adaptive-lsp-server-enabled']))},
\ 'root_uri':{server_info->lsp_settings#get('fsautocomplete', 'root_uri', lsp_settings#root_uri('fsautocomplete'))},
\ 'initialization_options': lsp_settings#get('fsautocomplete', 'initialization_options', {'AutomaticWorkspaceInit': v:true}),
\ 'allowlist': lsp_settings#get('fsautocomplete', 'allowlist', ['fsharp']),
\ 'blocklist': lsp_settings#get('fsautocomplete', 'blocklist', []),
\ 'config': lsp_settings#get('fsautocomplete', 'config', lsp_settings#server_config('fsautocomplete')),
\ 'workspace_config': lsp_settings#get('fsautocomplete', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('fsautocomplete', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_fsharp_language_server
au!
LspRegisterServer {
\ 'name': 'fsharp-language-server',
\ 'cmd': {server_info->lsp_settings#get('fsharp-language-server', 'cmd', [lsp_settings#exec_path('fsharp-language-server')]+lsp_settings#get('fsharp-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('fsharp-language-server', 'root_uri', lsp_settings#root_uri('fsharp-language-server'))},
\ 'initialization_options': lsp_settings#get('fsharp-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('fsharp-language-server', 'allowlist', ['fsharp']),
\ 'blocklist': lsp_settings#get('fsharp-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('fsharp-language-server', 'config', lsp_settings#server_config('fsharp-language-server')),
\ 'workspace_config': lsp_settings#get('fsharp-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('fsharp-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_glslls
au!
LspRegisterServer {
\ 'name': 'glslls',
\ 'cmd': {server_info->lsp_settings#get('glslls', 'cmd', [lsp_settings#exec_path('glslls')]+lsp_settings#get('glslls', 'args', ['--stdin']))},
\ 'root_uri':{server_info->lsp_settings#get('glslls', 'root_uri', lsp_settings#root_uri('glslls'))},
\ 'initialization_options': lsp_settings#get('glslls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('glslls', 'allowlist', ['glsl']),
\ 'blocklist': lsp_settings#get('glslls', 'blocklist', []),
\ 'config': lsp_settings#get('glslls', 'config', lsp_settings#server_config('glslls')),
\ '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']}}}),
\ 'semantic_highlight': lsp_settings#get('glslls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_godot
au!
LspRegisterServer {
\ 'name': 'godot',
\ 'tcp': {server_info->lsp_settings#get('godot', 'tcp', '127.0.0.1:6008')},
\ 'root_uri':{server_info->lsp_settings#get('godot', 'root_uri', lsp_settings#root_uri('godot'))},
\ 'initialization_options': lsp_settings#get('godot', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('godot', 'allowlist', ['gdscript3', 'gdscript']),
\ 'blocklist': lsp_settings#get('godot', 'blocklist', []),
\ 'config': lsp_settings#get('godot', 'config', lsp_settings#server_config('godot')),
\ 'workspace_config': lsp_settings#get('godot', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('godot', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_golangci_lint_langserver
au!
LspRegisterServer {
\ 'name': 'golangci-lint-langserver',
\ 'cmd': {server_info->lsp_settings#get('golangci-lint-langserver', 'cmd', [lsp_settings#exec_path('golangci-lint-langserver')]+lsp_settings#get('golangci-lint-langserver', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('golangci-lint-langserver', 'root_uri', lsp_settings#root_uri('golangci-lint-langserver'))},
\ 'initialization_options': lsp_settings#get('golangci-lint-langserver', 'initialization_options', {'command': ['golangci-lint', 'run', '--enable-all', '--disable', 'lll', '--out-format', 'json', '--issues-exit-code=1']}),
\ 'allowlist': lsp_settings#get('golangci-lint-langserver', 'allowlist', ['go']),
\ 'blocklist': lsp_settings#get('golangci-lint-langserver', 'blocklist', []),
\ 'config': lsp_settings#get('golangci-lint-langserver', 'config', lsp_settings#server_config('golangci-lint-langserver')),
\ 'workspace_config': lsp_settings#get('golangci-lint-langserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('golangci-lint-langserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,66 @@
augroup vim_lsp_settings_gopls
au!
LspRegisterServer {
\ 'name': 'gopls',
\ 'cmd': {server_info->lsp_settings#get('gopls', 'cmd', [lsp_settings#exec_path('gopls')]+lsp_settings#get('gopls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('gopls', 'root_uri', lsp_settings#root_uri('gopls'))},
\ 'initialization_options': lsp_settings#get('gopls', 'initialization_options', {
\ 'completeUnimported': v:true,
\ 'matcher': 'fuzzy',
\ 'ui.inlayhint.hints': {
\ 'assignVariableTypes': v:true,
\ 'compositeLiteralFields': v:true,
\ 'compositeLiteralTypes': v:true,
\ 'constantValues': v:true,
\ 'functionTypeParameters': v:true,
\ 'parameterNames': v:true,
\ 'rangeVariableTypes': v:true,
\ },
\ 'codelenses': {
\ 'generate': v:true,
\ 'test': v:true,
\ 'run_vulncheck_exp': v:true,
\ },
\ }),
\ 'allowlist': lsp_settings#get('gopls', 'allowlist', ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl']),
\ 'blocklist': lsp_settings#get('gopls', 'blocklist', []),
\ 'config': lsp_settings#get('gopls', 'config', lsp_settings#server_config('gopls')),
\ 'workspace_config': lsp_settings#get('gopls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('gopls', 'semantic_highlight', {}),
\ }
autocmd User lsp_setup call s:register_command()
augroup END
function! s:register_command() abort
if get(s:, 'setup') | return | endif
let s:setup = 1
call lsp#register_command('gopls.test', function('s:gopls_test'))
call lsp#register_command('gopls.generate', function('s:gopls_generate'))
endfunction
function! s:gopls_test(context) abort
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
let l:testfile = lsp#utils#uri_to_path(get(l:arguments, 0, ''))
let l:package = fnamemodify(l:testfile, ':h')
let l:test = get(l:arguments, 1, [])
let l:cmd = ['go']
if len(l:test) > 0
let l:cmd += ['test', '-run', l:test[0], l:package]
call lsp_settings#utils#term_start(l:cmd, {})
else
call lsp_settings#utils#error('Unsupported gopls.test ' . json_encode(l:command))
endif
endfunction
function! s:gopls_generate(context) abort
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
let l:package = l:arguments[0]
let l:recursive = l:arguments[1]
let l:cmd = ['go', 'generate', l:recursive ? './..' : l:package]
call lsp_settings#utils#term_start(l:cmd, {})
endfunction

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_gql_language_server
au!
LspRegisterServer {
\ 'name': 'gql-language-server',
\ 'cmd': {server_info->lsp_settings#get('gql-language-server', 'cmd', [lsp_settings#exec_path('gql-language-server')]+lsp_settings#get('gql-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('gql-language-server', 'root_uri', lsp_settings#root_uri('gql-language-server'))},
\ 'initialization_options': lsp_settings#get('gql-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('gql-language-server', 'allowlist', ['graphql']),
\ 'blocklist': lsp_settings#get('gql-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('gql-language-server', 'config', lsp_settings#server_config('gql-language-server')),
\ 'workspace_config': lsp_settings#get('gql-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('gql-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_graphql-language-server
au!
LspRegisterServer {
\ 'name': 'graphql-language-server',
\ 'cmd': {server_info->lsp_settings#get('graphql-language-server', 'cmd', [lsp_settings#exec_path('graphql-language-server')]+lsp_settings#get('graphql-language-server', 'args', ['server', '--method', 'stream']))},
\ 'root_uri':{server_info->lsp_settings#get('graphql-language-server', 'root_uri', lsp_settings#root_uri('graphql-language-server'))},
\ 'initialization_options': lsp_settings#get('graphql-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('graphql-language-server', 'allowlist', ['graphql']),
\ 'blocklist': lsp_settings#get('graphql-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('graphql-language-server', 'config', lsp_settings#server_config('graphql-language-server')),
\ 'workspace_config': lsp_settings#get('graphql-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('graphql-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_groovy_language_server
au!
LspRegisterServer {
\ 'name': 'groovy-language-server',
\ 'cmd': {server_info->lsp_settings#get('groovy-language-server', 'cmd', [lsp_settings#exec_path('groovy-language-server')]+lsp_settings#get('groovy-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('groovy-language-server', 'root_uri', lsp_settings#root_uri('groovy-language-server'))},
\ 'initialization_options': lsp_settings#get('groovy-language-server', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('groovy-language-server', 'allowlist', ['groovy']),
\ 'blocklist': lsp_settings#get('groovy-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('groovy-language-server', 'config', lsp_settings#server_config('groovy-language-server')),
\ 'workspace_config': lsp_settings#get('groovy-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('groovy-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,45 @@
" NOTE: For compatibility, this looks up not only
" haskell-language-server-wrapper's user config but also
" haskell-language-server's one.
augroup vim_lsp_settings_haskell_language_server_wrapper
au!
LspRegisterServer {
\ 'name': 'haskell-language-server',
\ 'cmd': {server_info->
\ lsp_settings#get('haskell-language-server-wrapper', 'cmd',
\ lsp_settings#get('haskell-language-server', 'cmd',
\ [lsp_settings#exec_path('haskell-language-server-wrapper')]+
\ lsp_settings#get('haskell-language-server-wrapper', 'args',
\ lsp_settings#get('haskell-language-server', 'args',
\ ['--lsp']))))},
\ 'root_uri': {server_info->
\ lsp_settings#get('haskell-language-server-wrapper', 'root_uri',
\ lsp_settings#get('haskell-language-server', 'root_uri',
\ lsp_settings#get('haskell-language-server-wrapper', 'root_uri_patterns',
\ lsp_settings#root_uri('haskell-language-server'))))},
\ 'initialization_options':
\ lsp_settings#get('haskell-language-server-wrapper', 'initialization_options',
\ lsp_settings#get('haskell-language-server', 'initialization_options',
\ v:null)),
\ 'allowlist':
\ lsp_settings#get('haskell-language-server-wrapper', 'allowlist',
\ lsp_settings#get('haskell-language-server', 'allowlist',
\ ['haskell', 'lhaskell'])),
\ 'blocklist':
\ lsp_settings#get('haskell-language-server-wrapper', 'blocklist',
\ lsp_settings#get('haskell-language-server', 'blocklist',
\ [])),
\ 'config':
\ lsp_settings#get('haskell-language-server-wrapper', 'config',
\ lsp_settings#get('haskell-language-server', 'config',
\ lsp_settings#server_config('haskell-language-server-wrapper'))),
\ 'workspace_config':
\ lsp_settings#get('haskell-language-server-wrapper', 'workspace_config',
\ lsp_settings#get('haskell-language-server', 'workspace_config',
\ {})),
\ 'semantic_highlight':
\ lsp_settings#get('haskell-language-server-wrapper', 'semantic_highlight',
\ lsp_settings#get('haskell-language-server', 'semantic_highlight',
\ {})),
\ }
augroup END

View File

@@ -0,0 +1,44 @@
" NOTE: For compatibility, this looks up not only hie-wrapper's user config
" but also hie's one.
augroup vim_lsp_settings_hie_wrapper
au!
LspRegisterServer {
\ 'name': 'hie',
\ 'cmd': {server_info->
\ lsp_settings#get('hie-wrapper', 'cmd',
\ lsp_settings#get('hie', 'cmd',
\ [lsp_settings#exec_path('hie-wrapper')]+
\ lsp_settings#get('hie-wrapper', 'args',
\ lsp_settings#get('hie', 'args',
\ ['--lsp']))))},
\ 'root_uri': {server_info->
\ lsp_settings#get('hie-wrapper', 'root_uri',
\ lsp_settings#get('hie', 'root_uri',
\ lsp_settings#get('hie-wrapper', 'root_uri_patterns',
\ lsp_settings#root_uri('hie'))))},
\ 'initialization_options':
\ lsp_settings#get('hie-wrapper', 'initialization_options',
\ lsp_settings#get('hie', 'initialization_options',
\ v:null)),
\ 'allowlist':
\ lsp_settings#get('hie-wrapper', 'allowlist',
\ lsp_settings#get('hie', 'allowlist',
\ ['haskell', 'lhaskell'])),
\ 'blocklist':
\ lsp_settings#get('hie-wrapper', 'blocklist',
\ lsp_settings#get('hie', 'blocklist',
\ [])),
\ 'config':
\ lsp_settings#get('hie-wrapper', 'config',
\ lsp_settings#get('hie', 'config',
\ lsp_settings#server_config('hie-wrapper'))),
\ 'workspace_config':
\ lsp_settings#get('hie-wrapper', 'workspace_config',
\ lsp_settings#get('hie', 'workspace_config',
\ {})),
\ 'semantic_highlight':
\ lsp_settings#get('hie-wrapper', 'semantic_highlight',
\ lsp_settings#get('hie', 'semantic_highlight',
\ {})),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_html_languageserver
au!
LspRegisterServer {
\ 'name': 'html-languageserver',
\ 'cmd': {server_info->lsp_settings#get('html-languageserver', 'cmd', [lsp_settings#exec_path('html-languageserver')]+lsp_settings#get('html-languageserver', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('html-langserver', 'root_uri', lsp_settings#root_uri('html-languageserver'))},
\ 'initialization_options': lsp_settings#get('html-languageserver', 'initialization_options', {'embeddedLanguages': {'css': v:true, 'javascript': v:true}}),
\ 'allowlist': lsp_settings#get('html-languageserver', 'allowlist', ['html']),
\ 'blocklist': lsp_settings#get('html-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('html-languageserver', 'config', lsp_settings#server_config('html-languageserver')),
\ 'workspace_config': lsp_settings#get('html-languageserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('html-languageserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_intelephense_server
au!
LspRegisterServer {
\ 'name': 'intelephense',
\ 'cmd': {server_info->lsp_settings#get('intelephense', 'cmd', [lsp_settings#exec_path('intelephense')]+lsp_settings#get('intelephense', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('intelephense', 'root_uri', lsp_settings#root_uri('intelephense'))},
\ 'initialization_options': lsp_settings#get('intelephense', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('intelephense', 'allowlist', ['php']),
\ 'blocklist': lsp_settings#get('intelephense', 'blocklist', []),
\ 'config': lsp_settings#get('intelephense', 'config', lsp_settings#server_config('intelephense')),
\ 'workspace_config': lsp_settings#get('intelephense', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('intelephense', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_java_language_server
au!
LspRegisterServer {
\ 'name': 'java-language-server',
\ 'cmd': {server_info->lsp_settings#get('java-language-server', 'cmd', [lsp_settings#exec_path('java-language-server')]+lsp_settings#get('java-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('java-language-server', 'root_uri', lsp_settings#root_uri('java-language-server'))},
\ 'initialization_options': lsp_settings#get('java-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('java-language-server', 'allowlist', ['java']),
\ 'blocklist': lsp_settings#get('java-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('java-language-server', 'config', lsp_settings#server_config('java-language-server')),
\ 'workspace_config': lsp_settings#get('java-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('java-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_javascript_typescript_stdio
au!
LspRegisterServer {
\ 'name': 'javascript-typescript-stdio',
\ 'cmd': {server_info->lsp_settings#get('javascript-typescript-stdio', 'cmd', [lsp_settings#exec_path('javascript-typescript-stdio')]+lsp_settings#get('javascript-typescript-stdio', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('javascript-typescript-stdio', 'root_uri', lsp_settings#root_uri('javascript-typescript-stdio'))},
\ 'initialization_options': lsp_settings#get('javascript-typescript-stdio', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('javascript-typescript-stdio', 'allowlist', ['javascript', 'javascriptreact', 'javascript.jsx']),
\ 'blocklist': lsp_settings#get('javascript-typescript-stdio', 'blocklist', []),
\ 'config': lsp_settings#get('javascript-typescript-stdio', 'config', lsp_settings#server_config('javascript-typescript-stdio')),
\ 'workspace_config': lsp_settings#get('javascript-typescript-stdio', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('javascript-typescript-stdio', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_jedi_language_server
au!
LspRegisterServer {
\ 'name': 'jedi-language-server',
\ 'cmd': {server_info->lsp_settings#get('jedi-language-server', 'cmd', [lsp_settings#exec_path('jedi-language-server')]+lsp_settings#get('jedi-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('jedi-language-server', 'root_uri', lsp_settings#root_uri('jedi-language-server'))},
\ 'initialization_options': lsp_settings#get('jedi-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('jedi-language-server', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('jedi-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('jedi-language-server', 'config', lsp_settings#server_config('jedi-language-server')),
\ 'workspace_config': lsp_settings#get('jedi-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('jedi-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,30 @@
augroup vim_lsp_settings_json_languageserver
au!
LspRegisterServer {
\ 'name': 'json-languageserver',
\ 'cmd': {server_info->lsp_settings#get('json-languageserver', 'cmd', [lsp_settings#exec_path('json-languageserver')]+lsp_settings#get('json-languageserver', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('json-languageserver', 'root_uri', lsp_settings#root_uri('json-languageserver'))},
\ 'initialization_options': lsp_settings#get('json-languageserver', 'initialization_options', {'provideFormatter': v:true}),
\ 'allowlist': lsp_settings#get('json-languageserver', 'allowlist', ['json', 'jsonc']),
\ 'blocklist': lsp_settings#get('json-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('json-languageserver', 'config', lsp_settings#server_config('json-languageserver')),
\ 'workspace_config': lsp_settings#get('json-languageserver', 'workspace_config', {name, key->{'json': {'format': {'enable': v:true}, 'schemas': lsp_settings#utils#load_schemas('json-languageserver') + [{'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('json-languageserver', '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('json-languageserver', 'workspace_config', {'json': {'format': {'enable': v:true}, 'schemas': l:schema}})
call lsp#update_workspace_config('json-languageserver', l:config)
endfunction
function! s:on_lsp_buffer_enabled() abort
command! -buffer -nargs=1 LspJsonSetSchema call <SID>set_schema(<q-args>)
endfunction
augroup lsp_install_json
au!
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_julia_language_server
au!
LspRegisterServer {
\ 'name': 'julia-language-server',
\ 'cmd': {server_info->lsp_settings#get('julia-language-server', 'cmd', [lsp_settings#exec_path('julia-language-server')]+lsp_settings#get('julia-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('julia-language-server', 'root_uri', lsp_settings#root_uri('julia-language-server'))},
\ 'initialization_options': lsp_settings#get('julia-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('julia-language-server', 'allowlist', ['julia']),
\ 'blocklist': lsp_settings#get('julia-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('julia-language-server', 'config', lsp_settings#server_config('julia-language-server')),
\ 'workspace_config': lsp_settings#get('julia-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('julia-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_kotlin_language_server
au!
LspRegisterServer {
\ 'name': 'kotlin-language-server',
\ 'cmd': {server_info->lsp_settings#get('kotlin-language-server', 'cmd', [lsp_settings#exec_path('kotlin-language-server')]+lsp_settings#get('kotlin-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('kotlin-language-server', 'root_uri', lsp_settings#root_uri('kotlin-language-server'))},
\ 'initialization_options': lsp_settings#get('kotlin-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('kotlin-language-server', 'allowlist', ['kotlin']),
\ 'blocklist': lsp_settings#get('kotlin-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('kotlin-language-server', 'config', lsp_settings#server_config('kotlin-language-server')),
\ 'workspace_config': lsp_settings#get('kotlin-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('kotlin-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_lemminx
au!
LspRegisterServer {
\ 'name': 'lemminx',
\ 'cmd': {server_info->lsp_settings#get('lemminx', 'cmd', [lsp_settings#exec_path('lemminx')]+lsp_settings#get('lemminx', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('lemminx', 'root_uri', lsp_settings#root_uri('lemminx'))},
\ 'initialization_options': lsp_settings#get('lemminx', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('lemminx', 'allowlist', ['xml']),
\ 'blocklist': lsp_settings#get('lemminx', 'blocklist', []),
\ 'config': lsp_settings#get('lemminx', 'config', lsp_settings#server_config('lemminx')),
\ 'workspace_config': lsp_settings#get('lemminx', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('lemminx', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_marksman
au!
LspRegisterServer {
\ 'name': 'marksman',
\ 'cmd': {server_info->lsp_settings#get('marksman', 'cmd', [lsp_settings#exec_path('marksman')]+lsp_settings#get('marksman', 'args', ['server']))},
\ 'root_uri':{server_info->lsp_settings#get('marksman', 'root_uri', lsp_settings#root_uri('marksman'))},
\ 'initialization_options': lsp_settings#get('marksman', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('marksman', 'allowlist', ['markdown']),
\ 'blocklist': lsp_settings#get('marksman', 'blocklist', []),
\ 'config': lsp_settings#get('marksman', 'config', lsp_settings#server_config('marksman')),
\ 'workspace_config': lsp_settings#get('marksman', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('marksman', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_metals
au!
LspRegisterServer {
\ 'name': 'metals',
\ 'cmd': {server_info->lsp_settings#get('metals', 'cmd', [lsp_settings#exec_path('metals')]+lsp_settings#get('metals', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('metals', 'root_uri', lsp_settings#root_uri('metals'))},
\ 'initialization_options': lsp_settings#get('metals', 'initialization_options', {'isHttpEnabled': 'true'}),
\ 'allowlist': lsp_settings#get('metals', 'allowlist', ['scala', 'sbt']),
\ 'blocklist': lsp_settings#get('metals', 'blocklist', []),
\ 'config': lsp_settings#get('metals', 'config', lsp_settings#server_config('metals')),
\ 'workspace_config': lsp_settings#get('metals', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('metals', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_monastery
au!
LspRegisterServer {
\ 'name': 'monastery',
\ 'cmd': {server_info->lsp_settings#get('monastery', 'cmd', [lsp_settings#exec_path('monastery')]+lsp_settings#get('monastery', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('monastery', 'root_uri', lsp_settings#root_uri('monastery'))},
\ 'initialization_options': lsp_settings#get('monastery', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('monastery', 'allowlist', ['perl']),
\ 'blocklist': lsp_settings#get('monastery', 'blocklist', []),
\ 'config': lsp_settings#get('monastery', 'config', lsp_settings#server_config('monastery')),
\ 'workspace_config': lsp_settings#get('monastery', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('monastery', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_nimlsp
au!
LspRegisterServer {
\ 'name': 'nimlsp',
\ 'cmd': {server_info->lsp_settings#get('nimlsp', 'cmd', [lsp_settings#exec_path('nimlsp')]+lsp_settings#get('nimlsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('nimlsp', 'root_uri', lsp_settings#root_uri('nimlsp'))},
\ 'initialization_options': lsp_settings#get('nimlsp', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('nimlsp', 'allowlist', ['nim']),
\ 'blocklist': lsp_settings#get('nimlsp', 'blocklist', []),
\ 'config': lsp_settings#get('nimlsp', 'config', lsp_settings#server_config('nimlsp')),
\ 'workspace_config': lsp_settings#get('nimlsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('nimlsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_ntt
au!
LspRegisterServer {
\ 'name': 'ntt',
\ 'cmd': {server_info->lsp_settings#get('ntt', 'cmd', [lsp_settings#exec_path('ntt')]+lsp_settings#get('ntt', 'args', ['langserver']))},
\ 'root_uri':{server_info->lsp_settings#get('ntt', 'root_uri', lsp_settings#root_uri('ntt'))},
\ 'initialization_options': lsp_settings#get('ntt', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('ntt', 'allowlist', ['ttcn3', 'ttcn']),
\ 'blocklist': lsp_settings#get('ntt', 'blocklist', []),
\ 'config': lsp_settings#get('ntt', 'config', lsp_settings#server_config('ntt')),
\ 'workspace_config': lsp_settings#get('ntt', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('ntt', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,15 @@
augroup vim_lsp_settings_ocaml_lsp
au!
LspRegisterServer {
\ 'name': 'ocaml-lsp',
\ 'cmd': {server_info->lsp_settings#get('ocaml-lsp', 'cmd', [lsp_settings#exec_path('ocaml-lsp')]+lsp_settings#get('ocaml-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('ocaml-lsp', 'root_uri', lsp_settings#root_uri('ocaml-lsp'))},
\ 'initialization_options': lsp_settings#get('ocaml-lsp', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('ocaml-lsp', 'allowlist', ['ocaml']),
\ 'blocklist': lsp_settings#get('ocaml-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('ocaml-lsp', 'config', lsp_settings#server_config('ocaml-lsp')),
\ 'workspace_config': lsp_settings#get('ocaml-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('ocaml-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_ols
au!
LspRegisterServer {
\ 'name': 'ols',
\ 'cmd': {server_info->lsp_settings#get('ols', 'cmd', [lsp_settings#exec_path('ols')]+lsp_settings#get('ols', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('ols', 'root_uri', lsp_settings#root_uri('ols'))},
\ 'initialization_options': lsp_settings#get('ols', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('ols', 'allowlist', ['odin']),
\ 'blocklist': lsp_settings#get('ols', 'blocklist', []),
\ 'config': lsp_settings#get('ols', 'config', lsp_settings#server_config('ols')),
\ 'workspace_config': lsp_settings#get('ols', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('ols', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_omnisharp_lsp
au!
LspRegisterServer {
\ 'name': 'omnisharp-lsp',
\ 'cmd': {server_info->lsp_settings#get('omnisharp-lsp', 'cmd', [lsp_settings#exec_path('omnisharp-lsp')]+lsp_settings#get('omnisharp-lsp', 'args', ['-lsp']))},
\ 'root_uri':{server_info->lsp_settings#get('omnisharp-lsp', 'root_uri', lsp_settings#root_uri('omnisharp-lsp'))},
\ 'initialization_options': lsp_settings#get('omnisharp-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('omnisharp-lsp', 'allowlist', ['cs']),
\ 'blocklist': lsp_settings#get('omnisharp-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('omnisharp-lsp', 'config', lsp_settings#server_config('omnisharp-lsp')),
\ 'workspace_config': lsp_settings#get('omnisharp-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('omnisharp-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_perl_languageserver
au!
LspRegisterServer {
\ 'name': 'perl-languageserver',
\ 'cmd': {server_info->lsp_settings#get('perl-languageserver', 'cmd', ['perl', '-MPerl::LanguageServer', '-e', 'Perl::LanguageServer->run']+lsp_settings#get('perl-languageserver', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('perl-languageserver', 'root_uri', lsp_settings#root_uri('perl-languageserver'))},
\ 'initialization_options': lsp_settings#get('perl-languageserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('perl-languageserver', 'allowlist', ['perl']),
\ 'blocklist': lsp_settings#get('perl-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('perl-languageserver', 'config', lsp_settings#server_config('perl-languageserver')),
\ 'workspace_config': lsp_settings#get('perl-languageserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('perl-languageserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,15 @@
augroup vim_lsp_settings_perlnavigator
au!
LspRegisterServer {
\ 'name': 'perlnavigator',
\ 'cmd': {server_info->lsp_settings#get('perlnavigator', 'cmd', [lsp_settings#exec_path('perlnavigator')]+lsp_settings#get('perlnavigator', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('perlnavigator', 'root_uri', lsp_settings#root_uri('perlnavigator'))},
\ 'initialization_options': lsp_settings#get('perlnavigator', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('perlnavigator', 'allowlist', ['perl']),
\ 'blocklist': lsp_settings#get('perlnavigator', 'blocklist', []),
\ 'config': lsp_settings#get('perlnavigator', 'config', lsp_settings#server_config('perlnavigator')),
\ 'workspace_config': lsp_settings#get('perlnavigator', 'workspace_config', {'perlnavigator': { 'perlPath': 'perl', 'enableWarnings': v:true, 'perltidyProfile': '', 'perlcriticProfile': '', 'perlcriticEnabled': v:true, 'severity5': 'warning', 'severity4': 'info', 'severity3': 'hint', 'severity2': 'hint', 'severity1': 'hint', 'includePaths': ['lib'], 'logging': v:false, 'trace': { 'server': 'verbose' }}}),
\ 'semantic_highlight': lsp_settings#get('perlnavigator', 'semantic_highlight', {}),
\ }
autocmd User lsp_setup let g:lsp_experimental_workspace_folders = 1
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_plpgsql_lsp
au!
LspRegisterServer {
\ 'name': 'plpgsql-lsp',
\ 'cmd': {server_info->lsp_settings#get('plpgsql-lsp', 'cmd', [lsp_settings#exec_path('plpgsql-lsp')]+lsp_settings#get('plpgsql-lsp', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('plpgsql-lsp', 'root_uri', lsp_settings#root_uri('plpgsql-lsp'))},
\ 'initialization_options': lsp_settings#get('plpgsql-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('plpgsql-lsp', 'allowlist', ['sql']),
\ 'blocklist': lsp_settings#get('plpgsql-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('plpgsql-lsp', 'config', lsp_settings#server_config('plpgsql-lsp')),
\ 'workspace_config': lsp_settings#get('plpgsql-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('plpgsql-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_powershell_languageserver
au!
LspRegisterServer {
\ 'name': 'powershell-languageserver',
\ 'cmd': {server_info->lsp_settings#get('powershell-languageserver', 'cmd', [lsp_settings#exec_path('powershell-languageserver')]+lsp_settings#get('powershell-languageserver', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('powershell-languageserver', 'root_uri', lsp_settings#root_uri('powershell-languageserver'))},
\ 'initialization_options': lsp_settings#get('powershell-languageserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('powershell-languageserver', 'allowlist', ['ps1']),
\ 'blocklist': lsp_settings#get('powershell-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('powershell-languageserver', 'config', lsp_settings#server_config('powershell-languageserver')),
\ 'workspace_config': lsp_settings#get('powershell-languageserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('powershell-languageserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,18 @@
augroup vim_lsp_settings_prisma_language_server
au!
LspRegisterServer {
\ 'name': 'prisma-language-server',
\ 'cmd': {server_info->lsp_settings#get('prisma-language-server', 'cmd', [lsp_settings#exec_path('prisma-language-server')]+lsp_settings#get('prisma-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('prisma-language-server', 'root_uri', lsp_settings#root_uri('prisma-language-server'))},
\ 'initialization_options': lsp_settings#get('prisma-language-server', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('prisma', 'allowlist', ['prisma']),
\ 'blocklist': lsp_settings#get('prisma-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('prisma-language-server', 'config', lsp_settings#server_config('prisma-language-server')),
\ 'workspace_config': lsp_settings#get('prisma-language-server', 'workspace_config', {
\ 'prisma': {
\ 'prismaFmtBinPath': {c->!empty(c) ? c : lsp_settings#servers_dir() . '/prisma-language-server/prisma-fmt'}(lsp_settings#exec_path('prisma-fmt')),
\ }
\ }),
\ 'semantic_highlight': lsp_settings#get('prisma-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_prolog_lsp_server
au!
LspRegisterServer {
\ 'name': 'prolog-lsp_server',
\ 'cmd': {server_info->lsp_settings#get('prolog-lsp_server', 'cmd', [lsp_settings#exec_path('prolog-lsp_server')]+lsp_settings#get('prolog-lsp_server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('prolog-lsp_server', 'root_uri', lsp_settings#root_uri('prolog-lsp_server'))},
\ 'initialization_options': lsp_settings#get('prolog-lsp_server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('prolog-lsp_server', 'allowlist', ['prolog']),
\ 'blocklist': lsp_settings#get('prolog-lsp_server', 'blocklist', []),
\ 'config': lsp_settings#get('prolog-lsp_server', 'config', lsp_settings#server_config('prolog-lsp_server')),
\ 'workspace_config': lsp_settings#get('prolog-lsp_server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('prolog-lsp_server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_psalm_language_server
au!
LspRegisterServer {
\ 'name': 'psalm-language-server',
\ 'cmd': {server_info->lsp_settings#get('psalm-language-server', 'cmd', [lsp_settings#exec_path('psalm-language-server')]+lsp_settings#get('psalm-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('psalm-language-server', 'root_uri', lsp_settings#root_uri('psalm-language-server'))},
\ 'initialization_options': lsp_settings#get('psalm-language-server', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('psalm-language-server', 'allowlist', ['php']),
\ 'blocklist': lsp_settings#get('psalm-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('psalm-language-server', 'config', lsp_settings#server_config('psalm-language-server')),
\ 'workspace_config': lsp_settings#get('psalm-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('psalm-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_puppet-ls
au!
LspRegisterServer {
\ 'name': 'puppet-ls',
\ 'cmd': {server_info->lsp_settings#get('puppet-ls', 'cmd', [lsp_settings#exec_path('puppet-ls')]+lsp_settings#get('puppet-ls', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('puppet-ls', 'root_uri', lsp_settings#root_uri('puppet-ls'))},
\ 'initialization_options': lsp_settings#get('puppet-ls', 'initialization_options', {'diagnostics': 'false'}),
\ 'allowlist': lsp_settings#get('puppet-ls', 'allowlist', ['puppet']),
\ 'blocklist': lsp_settings#get('puppet-ls', 'blocklist', []),
\ 'config': lsp_settings#get('puppet-ls', 'config', lsp_settings#server_config('puppet-ls')),
\ 'workspace_config': lsp_settings#get('puppet-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('puppet-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,27 @@
function! s:GetUri(file)
return lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), a:file))
endfunction
function! Vim_lsp_settings_purescript_get_root_uri() abort
let spago = s:GetUri('spago.dhall')
if !empty(spago) | return spago | endif
let flake = s:GetUri('flake.nix')
if !empty(flake) | return flake | endif
return lsp_settings#root_uri('purescript-language-server')
endfunction
augroup vim_lsp_settings_purescript_language_server
au!
LspRegisterServer {
\ 'name': 'purescript-language-server',
\ 'cmd': {server_info->lsp_settings#get('purescript-language-server', 'cmd', [lsp_settings#exec_path('purescript-language-server')]+lsp_settings#get('purescript-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('purescript-language-server', 'root_uri', Vim_lsp_settings_purescript_get_root_uri())},
\ 'initialization_options': lsp_settings#get('purescript-language-server', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('purescript-language-server', 'allowlist', ['purescript']),
\ 'blocklist': lsp_settings#get('purescript-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('purescript-language-server', 'config', lsp_settings#server_config('purescript-language-server')),
\ 'workspace_config': lsp_settings#get('purescript-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('purescript-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_pyls_all
au!
LspRegisterServer {
\ 'name': 'pyls-all',
\ 'cmd': {server_info->lsp_settings#get('pyls-all', 'cmd', [lsp_settings#exec_path('pyls-all')]+lsp_settings#get('pyls-all', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('pyls-all', 'root_uri', lsp_settings#root_uri('pyls-all'))},
\ 'initialization_options': lsp_settings#get('pyls-all', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('pyls-all', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pyls-all', 'blocklist', []),
\ 'config': lsp_settings#get('pyls-all', 'config', lsp_settings#server_config('pyls-all')),
\ 'workspace_config': lsp_settings#get('pyls-all', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('pyls-all', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,35 @@
augroup vim_lsp_settings_pyls_ms
au!
LspRegisterServer {
\ 'name': 'pyls-ms',
\ 'cmd': {server_info->lsp_settings#get('pyls-ms', 'cmd', [lsp_settings#exec_path('pyls-ms')]+lsp_settings#get('pyls-ms', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('pyls-ms', 'root_uri', lsp_settings#root_uri('pyls-ms'))},
\ 'initialization_options': lsp_settings#get('pyls-ms', 'initialization_options', {
\ 'analysisUpdates': v:true,
\ 'asyncStartup': v:true,
\ 'displayOptions': {},
\ 'interpreter': {
\ 'properties': {
\ 'InterpreterPath': lsp_settings#get('pyls-ms', 'python-path', {key, name->exepath('python')}),
\ 'UseDefaultDatabase': v:true,
\ 'Version': lsp_settings#get('pyls-ms', 'python-ver', {key, name->trim(matchstr(system(
\ lsp_settings#utils#shellescape(lsp_settings#get('pyls-ms', 'python-path', {key, name->exepath('python')})) . ' -V'
\ ), '\s\zs\S\+'))}),
\ },
\ },
\ }),
\ 'allowlist': lsp_settings#get('pyls-ms', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pyls-ms', 'blocklist', []),
\ 'config': lsp_settings#get('pyls-ms', 'config', lsp_settings#server_config('pyls-ms')),
\ 'workspace_config': lsp_settings#get('pyls-ms', 'workspace_config', {
\ 'python': {
\ 'analysis': {
\ 'errors': [],
\ 'info': [],
\ 'disabled': [],
\ },
\ },
\ }),
\ 'semantic_highlight': lsp_settings#get('pyls-ms', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_pyls
au!
LspRegisterServer {
\ 'name': 'pyls',
\ 'cmd': {server_info->lsp_settings#get('pyls', 'cmd', [lsp_settings#exec_path('pyls')]+lsp_settings#get('pyls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('pyls', 'root_uri', lsp_settings#root_uri('pyls'))},
\ 'initialization_options': lsp_settings#get('pyls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('pyls', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pyls', 'blocklist', []),
\ 'config': lsp_settings#get('pyls', 'config', lsp_settings#server_config('pyls')),
\ 'workspace_config': lsp_settings#get('pyls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('pyls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_pylsp_all
au!
LspRegisterServer {
\ 'name': 'pylsp-all',
\ 'cmd': {server_info->lsp_settings#get('pylsp-all', 'cmd', [lsp_settings#exec_path('pylsp-all')]+lsp_settings#get('pylsp-all', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('pylsp-all', 'root_uri', lsp_settings#root_uri('pylsp-all'))},
\ 'initialization_options': lsp_settings#get('pylsp-all', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('pylsp-all', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pylsp-all', 'blocklist', []),
\ 'config': lsp_settings#get('pylsp-all', 'config', lsp_settings#server_config('pylsp-all')),
\ 'workspace_config': lsp_settings#get('pylsp-all', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('pylsp-all', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_pylsp
au!
LspRegisterServer {
\ 'name': 'pylsp',
\ 'cmd': {server_info->lsp_settings#get('pylsp', 'cmd', [lsp_settings#exec_path('pylsp')]+lsp_settings#get('pylsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('pylsp', 'root_uri', lsp_settings#root_uri('pylsp'))},
\ 'initialization_options': lsp_settings#get('pylsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('pylsp', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pylsp', 'blocklist', []),
\ 'config': lsp_settings#get('pylsp', 'config', lsp_settings#server_config('pylsp')),
\ 'workspace_config': lsp_settings#get('pylsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('pylsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,20 @@
augroup vim_lsp_settings_pyright_langserver
au!
LspRegisterServer {
\ 'name': 'pyright-langserver',
\ 'cmd': {server_info->lsp_settings#get('pyright-langserver', 'cmd', [lsp_settings#exec_path('pyright-langserver')]+lsp_settings#get('pyright-langserver', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('pyright-langserver', 'root_uri', lsp_settings#root_uri('pyright-langserver'))},
\ 'initialization_options': lsp_settings#get('pyright-langserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('pyright-langserver', 'allowlist', ['python']),
\ 'blocklist': lsp_settings#get('pyright-langserver', 'blocklist', []),
\ 'config': lsp_settings#get('pyright-langserver', 'config', lsp_settings#server_config('pyright-langserver')),
\ 'workspace_config': lsp_settings#get('pyright-langserver', 'workspace_config', {
\ 'python': {
\ 'analysis': {
\ 'useLibraryCodeForTypes': v:true
\ },
\ },
\ }),
\ 'semantic_highlight': lsp_settings#get('pyright-langserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,15 @@
augroup vim_lsp_settings_r_languageserver
au!
LspRegisterServer {
\ 'name': 'r-languageserver',
\ 'cmd': {server_info->lsp_settings#get('r-languageserver', 'cmd', ['R', '--slave', '-e', 'languageserver::run()']+lsp_settings#get('r-languageserver', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('r-languageserver', 'root_uri', lsp_settings#root_uri('r-languageserver'))},
\ 'initialization_options': lsp_settings#get('r-languageserver', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('r-languageserver', 'allowlist', ['r']),
\ 'blocklist': lsp_settings#get('r-languageserver', 'blocklist', []),
\ 'config': lsp_settings#get('r-languageserver', 'config', lsp_settings#server_config('r-languageserver')),
\ 'workspace_config': lsp_settings#get('r-languageserver', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('r-languageserver', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_racket_lsp
au!
LspRegisterServer {
\ 'name': 'racket-lsp',
\ 'cmd': {server_info->lsp_settings#get('racket-lsp', 'cmd', [lsp_settings#exec_path('racket-lsp')]+lsp_settings#get('racket-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('racket-lsp', 'root_uri', lsp_settings#root_uri('racket-lsp'))},
\ 'initialization_options': lsp_settings#get('racket-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('racket-lsp', 'allowlist', ['racket']),
\ 'blocklist': lsp_settings#get('racket-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('racket-lsp', 'config', lsp_settings#server_config('racket-lsp')),
\ 'workspace_config': lsp_settings#get('racket-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('racket-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_reason_language_server
au!
LspRegisterServer {
\ 'name': 'reason-language-server',
\ 'cmd': {server_info->lsp_settings#get('reason-language-server', 'cmd', [lsp_settings#exec_path('reason-language-server')]+lsp_settings#get('reason-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('reason-language-server', 'root_uri', lsp_settings#root_uri('reason-language-server'))},
\ 'initialization_options': lsp_settings#get('reason-language-server', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('reason-language-server', 'allowlist', ['reason']),
\ 'blocklist': lsp_settings#get('reason-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('reason-language-server', 'config', lsp_settings#server_config('reason-language-server')),
\ 'workspace_config': lsp_settings#get('reason-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('reason-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_remark_language_server
au!
LspRegisterServer {
\ 'name': 'remark-language-server',
\ 'cmd': {server_info->lsp_settings#get('remark-language-server', 'cmd', [lsp_settings#exec_path('remark-language-server')]+lsp_settings#get('remark-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('remark-language-server', 'root_uri', lsp_settings#root_uri('remark-language-server'))},
\ 'initialization_options': lsp_settings#get('remark-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('remark-language-server', 'allowlist', []),
\ 'blocklist': lsp_settings#get('remark-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('remark-language-server', 'config', lsp_settings#server_config('remark-language-server')),
\ 'workspace_config': lsp_settings#get('remark-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('remark-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_rls
au!
LspRegisterServer {
\ 'name': 'rls',
\ 'cmd': {server_info->lsp_settings#get('rls', 'cmd', [lsp_settings#exec_path('rls')]+lsp_settings#get('rls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('rls', 'root_uri', lsp_settings#root_uri('rls'))},
\ 'initialization_options': lsp_settings#get('rls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('rls', 'allowlist', ['rust']),
\ 'blocklist': lsp_settings#get('rls', 'blocklist', []),
\ 'config': lsp_settings#get('rls', 'config', lsp_settings#server_config('rls')),
\ 'workspace_config': lsp_settings#get('rls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('rls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_rnix_lsp
au!
LspRegisterServer {
\ 'name': 'rnix-lsp',
\ 'cmd': {server_info->lsp_settings#get('rnix-lsp', 'cmd', lsp_settings#exec_path('rnix-lsp'))},
\ 'root_uri':{server_info->lsp_settings#get('rnix-lsp', 'root_uri', lsp_settings#root_uri('rnix-lsp'))},
\ 'initialization_options': lsp_settings#get('rnix-lsp', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('rnix-lsp', 'allowlist', ['nix']),
\ 'blocklist': lsp_settings#get('rnix-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('rnix-lsp', 'config', lsp_settings#server_config('rnix-lsp')),
\ 'workspace_config': lsp_settings#get('rnix-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('rnix-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_rome
au!
LspRegisterServer {
\ 'name': 'rome',
\ 'cmd': {server_info->lsp_settings#get('rome', 'cmd', [lsp_settings#exec_path('rome')]+lsp_settings#get('rome', 'args', ['lsp']))},
\ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), '.config/'))},
\ 'initialization_options': lsp_settings#get('rome', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('rome', 'allowlist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'typescript.tsx', 'json']),
\ 'blocklist': lsp_settings#get('rome', 'blocklist', []),
\ 'config': lsp_settings#get('rome', 'config', {}),
\ 'workspace_config': lsp_settings#get('rome', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('rome', 'semantic_highlight', {}),
\}
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_ruby_lsp
au!
LspRegisterServer {
\ 'name': 'ruby-lsp',
\ 'cmd': {server_info->lsp_settings#get('ruby-lsp', 'cmd', [lsp_settings#exec_path('ruby-lsp')]+lsp_settings#get('ruby-lsp', 'args', ['stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('ruby-lsp', 'root_uri', lsp_settings#root_uri('ruby-lsp'))},
\ 'initialization_options': lsp_settings#get('ruby-lsp', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('ruby-lsp', 'allowlist', ['ruby']),
\ 'blocklist': lsp_settings#get('ruby-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('ruby-lsp', 'config', lsp_settings#server_config('ruby-lsp')),
\ 'workspace_config': lsp_settings#get('ruby-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('ruby-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_ruby_language_server
au!
LspRegisterServer {
\ 'name': 'ruby_language_server',
\ 'cmd': {server_info->lsp_settings#get('ruby_language_server', 'cmd', [lsp_settings#exec_path('ruby_language_server')]+lsp_settings#get('ruby_language_server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('ruby_language_server', 'root_uri', lsp_settings#root_uri('ruby_language_server'))},
\ 'initialization_options': lsp_settings#get('ruby_language_server', 'initialization_options', {'diagnostics': 'false'}),
\ 'allowlist': lsp_settings#get('ruby_language_server', 'allowlist', ['ruby']),
\ 'blocklist': lsp_settings#get('ruby_language_server', 'blocklist', []),
\ 'config': lsp_settings#get('ruby_language_server', 'config', lsp_settings#server_config('ruby_language_server')),
\ 'workspace_config': lsp_settings#get('ruby_language_server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('ruby_language_server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,242 @@
augroup vim_lsp_settings_rust_analyzer
au!
LspRegisterServer {
\ 'name': 'rust-analyzer',
\ 'cmd': {server_info->lsp_settings#get('rust-analyzer', 'cmd', [lsp_settings#exec_path('rust-analyzer')]+lsp_settings#get('rust-analyzer', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('rust-analyzer', 'root_uri', lsp_settings#root_uri('rust-analyzer'))},
\ 'initialization_options': lsp_settings#get('rust-analyzer', 'initialization_options', {
\ 'completion': {
\ 'autoimport': { 'enable': v:true },
\ },
\ }),
\ 'allowlist': lsp_settings#get('rust-analyzer', 'allowlist', ['rust']),
\ 'blocklist': lsp_settings#get('rust-analyzer', 'blocklist', []),
\ 'config': lsp_settings#get('rust-analyzer', 'config', lsp_settings#server_config('rust-analyzer')),
\ 'workspace_config': lsp_settings#get('rust-analyzer', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('rust-analyzer', 'semantic_highlight', {}),
\ }
autocmd User lsp_setup call s:register_command()
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END
function! s:on_lsp_buffer_enabled() abort
command! -buffer LspOpenCargoToml call <SID>open_cargo_toml()
nnoremap <buffer> <plug>(lsp-open-cargo-toml) :<c-u>call <SID>open_cargo_toml()<cr>
command! -buffer LspCargoReload call <SID>reload_workspace()
nnoremap <buffer> <plug>(lsp-cargo-reload) :<c-u>call <SID>reload_workspace()<cr>
command! -buffer LspRustAnalyzerStatus call <SID>rust_analyzer_status()
nnoremap <buffer> <plug>(lsp-rust-analyzer-status) :<c-u>call <SID>rust_analyzer_status()<cr>
command! -range LspRustJoinLines call <SID>join_lines()
nnoremap <plug>(lsp-rust-join-lines) :<c-u>call <SID>join_lines()<cr>
command! -buffer LspRustFindMatchingBrace call <SID>find_matching_brace()
nnoremap <buffer> <plug>(lsp-rsut-find-matching-brace) :<c-u>call <SID>find_matching_brace()<cr>
command! -buffer LspRustOpenDocs call <SID>open_docs()
nnoremap <buffer> <plug>(lsp-rust-open-docs) :<c-u>call <SID>open_docs()<cr>
endfunction
function! s:open_cargo_toml() abort
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'experimental/openCargoToml',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ }
\ }),
\ lsp#callbag#subscribe({
\ 'next':{x->lsp#utils#location#_open_lsp_location(x['response']['result'])},
\ 'error':{e->lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:reload_workspace() abort
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'rust-analyzer/reloadWorkspace',
\ }),
\ lsp#callbag#subscribe({
\ 'next': {x -> execute('echo "Cargo workspace reloaded"', '')},
\ 'error': {e -> lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:rust_analyzer_status() abort
echo 'Retrieving rust-analyzer status'
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'rust-analyzer/analyzerStatus',
\ 'params': { 'textDocument': lsp#get_text_document_identifier() }
\ }),
\ lsp#callbag#subscribe({
\ 'next': {x->s:on_rust_analyzer_status(x)},
\ 'error': {e->lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:on_rust_analyzer_status(x) abort
let l:contents = a:x['response']['result']
let l:lines = lsp#utils#_split_by_eol(l:contents)
let l:view = winsaveview()
let l:alternate=@#
silent! pclose
sp LspRustAnalyzerStatusPreview
execute 'resize '.min([len(l:lines), &previewheight])
set previewwindow
setlocal conceallevel=2
setlocal bufhidden=hide
setlocal nobuflisted
setlocal buftype=nofile
setlocal noswapfile
%d
call setline(1, l:lines)
execute "normal \<c-w>p"
call winrestview(l:view)
let @#=l:alternate
endfunction
function! s:join_lines() abort
echo 'Joining lines'
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'experimental/joinLines',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ 'ranges': [lsp#utils#range#_get_recent_visual_range()],
\ },
\ }),
\ lsp#callbag#subscribe({
\ 'next': {x->s:on_join_lines(x)},
\ 'error': {e->lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:on_join_lines(x) abort
if lsp#client#is_error(a:x['response']) | echom 'Failed to join lines' | endif
call lsp#utils#text_edit#apply_text_edits(a:x['request']['params']['textDocument']['uri'], a:x['response']['result'])
echo 'Joined lines'
endfunction
function! s:find_matching_brace() abort
echo 'Finding matching brace'
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'experimental/matchingBrace',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ 'positions': [lsp#get_position()],
\ },
\ }),
\ lsp#callbag#subscribe({
\ 'next': {x->s:on_find_matching_brace(x)},
\ 'error': {e->lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:on_find_matching_brace(x) abort
if lsp#client#is_error(a:x['response']) | echom 'Failed to find matching brace' | endif
let l:positions = a:x['response']['result']
if empty(l:positions)
echo 'No matching brace found'
else
" find matching brace returns multiple positions but here we only use
" the first one
call lsp#utils#location#_open_lsp_location({
\ 'uri': a:x['request']['params']['textDocument']['uri'],
\ 'range': {
\ 'start': l:positions[0],
\ 'end': l:positions[0],
\ },
\ })
endif
endfunction
function! s:open_docs() abort
echo 'Opening docs...'
call lsp#callbag#pipe(
\ lsp#request('rust-analyzer', {
\ 'method': 'experimental/externalDocs',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ 'position': lsp#get_position(),
\ },
\ }),
\ lsp#callbag#subscribe({
\ 'next': {x->s:on_open_docs(x)},
\ 'error': {e->lsp_settings#utils#error(e)},
\ })
\ )
endfunction
function! s:on_open_docs(x) abort
if lsp#client#is_error(a:x['response']) | echom 'Failed to find docs' | endif
let l:url = a:x['response']['result']
call lsp_settings#utils#open_url(l:url)
echo ''
endfunction
function! s:rust_analyzer_apply_source_change(context) abort
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
let l:argument = get(l:arguments, 0, {})
let l:workspace_edit = get(l:argument, 'workspaceEdit', {})
if !empty(l:workspace_edit)
call lsp#utils#workspace_edit#apply_workspace_edit(l:workspace_edit)
endif
let l:cursor_position = get(l:argument, 'cursorPosition', {})
if !empty(l:cursor_position)
call cursor(lsp#utils#position#lsp_to_vim('%', l:cursor_position))
endif
endfunction
function! s:rust_analyzer_run_single(context) abort
let l:command = get(a:context, 'command', {})
let l:arguments = get(l:command, 'arguments', [])
let l:argument = get(l:arguments, 0, {})
if !has_key(l:argument, 'kind')
call lsp_settings#utils#error('unsupported rust-analyzer.runSingle command. ' . json_encode(l:command))
return
endif
if l:argument['kind'] ==# 'cargo'
let l:label = get(l:argument, 'label', 'cargo')
let l:args = get(l:argument, 'args', {})
let l:workspaceRoot = get(l:args, 'workspaceRoot', getcwd())
let l:cargoArgs = get(l:args, 'cargoArgs', [])
let l:cargoExtraArgs = get(l:args, 'cargoExtraArgs', [])
let l:executableArgs = get(l:args, 'executableArgs', [])
let l:cmd = ['cargo'] + l:cargoArgs + l:cargoExtraArgs
if !empty(l:executableArgs)
let l:cmd += ['--'] + l:executableArgs
endif
call lsp_settings#utils#term_start(l:cmd, {'cwd': l:workspaceRoot})
else
call lsp_settings#utils#error('unsupported rust-analyzer.runSingle command. ' . json_encode(l:command))
endif
endfunction
function! s:register_command() abort
if get(s:, 'setup') | return | endif
let s:setup = 1
augroup vimlsp_settings_rust_analyzer
au!
augroup END
if exists('*lsp#register_command')
call lsp#register_command('rust-analyzer.applySourceChange', function('s:rust_analyzer_apply_source_change'))
call lsp#register_command('rust-analyzer.runSingle', function('s:rust_analyzer_run_single'))
endif
endfunction

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_serve_d
au!
LspRegisterServer {
\ 'name': 'serve-d',
\ 'cmd': {server_info->lsp_settings#get('serve-d', 'cmd', [lsp_settings#exec_path('serve-d')]+lsp_settings#get('serve-d', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('serve-d', 'root_uri', lsp_settings#root_uri('serve-d'))},
\ 'initialization_options': lsp_settings#get('serve-d', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('serve-d', 'allowlist', ['d']),
\ 'blocklist': lsp_settings#get('serve-d', 'blocklist', []),
\ 'config': lsp_settings#get('serve-d', 'config', lsp_settings#server_config('serve-d')),
\ 'workspace_config': lsp_settings#get('serve-d', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('serve-d', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_slp
au!
LspRegisterServer {
\ 'name': 'slp',
\ 'cmd': {server_info->lsp_settings#get('slp', 'cmd', [lsp_settings#exec_path('slp')]+lsp_settings#get('slp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('slp', 'root_uri', lsp_settings#root_uri('slp'))},
\ 'initialization_options': lsp_settings#get('slp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('slp', 'allowlist', ['perl']),
\ 'blocklist': lsp_settings#get('slp', 'blocklist', []),
\ 'config': lsp_settings#get('slp', 'config', lsp_settings#server_config('slp')),
\ 'workspace_config': lsp_settings#get('slp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('slp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_solargraph
au!
LspRegisterServer {
\ 'name': 'solargraph',
\ 'cmd': {server_info->lsp_settings#get('solargraph', 'cmd', [lsp_settings#exec_path('solargraph')]+lsp_settings#get('solargraph', 'args', ['stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('solargraph', 'root_uri', lsp_settings#root_uri('solargraph'))},
\ 'initialization_options': lsp_settings#get('solargraph', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('solargraph', 'allowlist', ['ruby']),
\ 'blocklist': lsp_settings#get('solargraph', 'blocklist', []),
\ 'config': lsp_settings#get('solargraph', 'config', lsp_settings#server_config('solargraph')),
\ 'workspace_config': lsp_settings#get('solargraph', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('solargraph', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_sourcekit_lsp
au!
LspRegisterServer {
\ 'name': 'sourcekit-lsp',
\ 'cmd': {server_info->lsp_settings#get('sourcekit-lsp', 'cmd', [lsp_settings#exec_path('sourcekit-lsp')]+lsp_settings#get('sourcekit-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('sourcekit-lsp', 'root_uri', lsp_settings#root_uri('sourcekit-lsp'))},
\ 'initialization_options': lsp_settings#get('sourcekit-lsp', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('sourcekit-lsp', 'allowlist', ['swift']),
\ 'blocklist': lsp_settings#get('sourcekit-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('sourcekit-lsp', 'config', lsp_settings#server_config('sourcekit-lsp')),
\ 'workspace_config': lsp_settings#get('sourcekit-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('sourcekit-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_sql_language_server
au!
LspRegisterServer {
\ 'name': 'sql-language-server',
\ 'cmd': {server_info->lsp_settings#get('sql-language-server', 'cmd', [lsp_settings#exec_path('sql-language-server')]+lsp_settings#get('sql-language-server', 'args', ['up', '--method', 'stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('sql-language-server', 'root_uri', lsp_settings#root_uri('sql-language-server'))},
\ 'initialization_options': lsp_settings#get('sql-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('sql-language-server', 'allowlist', ['sql']),
\ 'blocklist': lsp_settings#get('sql-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('sql-language-server', 'config', lsp_settings#server_config('sql-language-server')),
\ 'workspace_config': lsp_settings#get('sql-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('sql-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,43 @@
augroup vim_lsp_settings_sqls
au!
LspRegisterServer {
\ 'name': 'sqls',
\ 'cmd': {server_info->lsp_settings#get('sqls', 'cmd', [lsp_settings#exec_path('sqls')]+lsp_settings#get('sqls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('sqls', 'root_uri', lsp_settings#root_uri('sqls'))},
\ 'initialization_options': lsp_settings#get('sqls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('sqls', 'allowlist', ['sql']),
\ 'blocklist': lsp_settings#get('sqls', 'blocklist', []),
\ 'config': lsp_settings#get('sqls', 'config', lsp_settings#server_config('sqls')),
\ 'workspace_config': lsp_settings#get('sqls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('sqls', 'semantic_highlight', {}),
\ }
augroup END
function! s:sqls_query() abort
call lsp#send_request('sqls', {
\ 'method': 'workspace/executeCommand',
\ 'params': {
\ 'command': 'sqls.executeQuery',
\ 'arguments': [lsp#utils#get_buffer_uri()],
\ },
\ 'on_notification': function('s:handle_execute_command'),
\ })
endfunction
function! s:handle_execute_command(data) abort
let l:lines = a:data['response']['result']
vnew
call setline(1, split(l:lines, "\n"))
endfunction
function! s:on_lsp_buffer_enabled() abort
if &ft !=# 'sql'
return
endif
command! -buffer LspSQLQuery call <SID>sqls_query()
endfunction
augroup lsp_install_sqls
au!
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_steep
au!
LspRegisterServer {
\ 'name': 'steep',
\ 'cmd': {server_info->lsp_settings#get('steep', 'cmd', [lsp_settings#exec_path('steep'), 'langserver', printf('--steepfile=%s', lsp#utils#find_nearest_parent_file(lsp#utils#get_buffer_path(), 'Steepfile'))]+lsp_settings#get('steep', 'args', []))},
\ 'root_uri': {server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'Steepfile'))},
\ 'initialization_options': lsp_settings#get('steep', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('steep', 'allowlist', {x->empty(lsp_settings#root_path(['Steepfile'])) ? [] : ['ruby']}),
\ 'blocklist': lsp_settings#get('steep', 'blocklist', []),
\ 'config': lsp_settings#get('steep', 'config', lsp_settings#server_config('steep')),
\ 'workspace_config': lsp_settings#get('steep', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('steep', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,56 @@
augroup vim_lsp_settings_sumneko_lua_language_server
let g:vim_lsp_settings_sumneko_lua_language_server_workspace_config = {
\ 'Lua': {
\ 'color': {
\ 'mode': 'Semantic'
\ },
\ 'completion': {
\ 'callSnippet': 'Disable',
\ 'enable': v:true,
\ 'keywordSnippet': 'Replace'
\ },
\ 'develop': {
\ 'debuggerPort': 11412,
\ 'debuggerWait': v:false,
\ 'enable': v:false
\ },
\ 'diagnostics': {
\ 'enable': v:true,
\ 'globals': '',
\ 'severity': {}
\ },
\ 'hover': {
\ 'enable': v:true,
\ 'viewNumber': v:true,
\ 'viewString': v:true,
\ 'viewStringMax': 1000
\ },
\ 'runtime': {
\ 'path': ['?.lua', '?/init.lua', '?/?.lua'],
\ 'version': 'Lua 5.3'
\ },
\ 'signatureHelp': {
\ 'enable': v:true
\ },
\ 'workspace': {
\ 'ignoreDir': [],
\ 'maxPreload': 1000,
\ 'preloadFileSize': 100,
\ 'useGitIgnore': v:true
\ }
\ }
\}
au!
LspRegisterServer {
\ 'name': 'sumneko-lua-language-server',
\ 'cmd': {server_info->lsp_settings#get('sumneko-lua-language-server', 'cmd', [lsp_settings#exec_path('sumneko-lua-language-server')]+lsp_settings#get('sumneko-lua-language-server', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('sumneko-lua-language-server', 'root_uri', lsp_settings#root_uri('sumneko-lua-language-server'))},
\ 'initialization_options': lsp_settings#get('sumneko-lua-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('sumneko-lua-language-server', 'allowlist', ['lua']),
\ 'blocklist': lsp_settings#get('sumneko-lua-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('sumneko-lua-language-server', 'config', lsp_settings#server_config('sumneko-lua-language-server')),
\ 'workspace_config': lsp_settings#get('sumneko-lua-language-server', 'workspace_config', g:vim_lsp_settings_sumneko_lua_language_server_workspace_config),
\ 'semantic_highlight': lsp_settings#get('sumneko-lua-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_svelte_language_server
au!
LspRegisterServer {
\ 'name': 'svelte-language-server',
\ 'cmd': {server_info->lsp_settings#get('svelte-language-server', 'cmd', [lsp_settings#exec_path('svelte-language-server')]+lsp_settings#get('svelte-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('svelte-language-server', 'root_uri', lsp_settings#root_uri('svelte-language-server'))},
\ 'initialization_options': lsp_settings#get('svelte-language-server', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('svelte-language-server', 'allowlist', ['svelte']),
\ 'blocklist': lsp_settings#get('svelte-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('svelte-language-server', 'config', lsp_settings#server_config('svelte-language-server')),
\ 'workspace_config': lsp_settings#get('svelte-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('svelte-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_svls
au!
LspRegisterServer {
\ 'name': 'svls',
\ 'cmd': {server_info->lsp_settings#get('svls', 'cmd', [lsp_settings#exec_path('svls')]+lsp_settings#get('svls', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('svls', 'root_uri', lsp_settings#root_uri('svls'))},
\ 'initialization_options': lsp_settings#get('svls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('svls', 'allowlist', ['systemverilog']),
\ 'blocklist': lsp_settings#get('svls', 'blocklist', []),
\ 'config': lsp_settings#get('svls', 'config', lsp_settings#server_config('svls')),
\ 'workspace_config': lsp_settings#get('svls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('svls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,15 @@
augroup vim_lsp_settings_tailwindcss-intellisense
au!
LspRegisterServer {
\ 'name': 'tailwindcss-intellisense',
\ 'cmd': {server_info->lsp_settings#get('tailwindcss-intellisense', 'cmd', [lsp_settings#exec_path('tailwindcss-intellisense')]+lsp_settings#get('tailwindcss-intellisense', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('tailwindcss-intellisense', 'root_uri', lsp_settings#root_uri('tailwindcss-intellisense'))},
\ 'initialization_options': lsp_settings#get('tailwindcss-intellisense', 'initialization_options', {}),
\ 'allowlist': lsp_settings#get('tailwindcss-intellisense', 'allowlist', {x-> empty(lsp_settings#root_path(['tailwind.config.js'])) ? [] : ['html', 'css']}),
\ 'blocklist': lsp_settings#get('tailwindcss-intellisense', 'blocklist', []),
\ 'config': lsp_settings#get('tailwindcss-intellisense', 'config', lsp_settings#server_config('tailwindcss-intellisense')),
\ 'workspace_config': lsp_settings#get('tailwindcss-intellisense', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('tailwindcss-intellisense', 'semantic_highlight', {}),
\ 'languageId': {server_info->lsp_settings#get('tailwindcss-intellisense', 'languageId', {x->&filetype})},
\ }
augroup END

View File

@@ -0,0 +1,152 @@
" For details, see taplo documentation( https://taplo.tamasfe.dev/configuration/#configuration-file ).
let g:vim_lsp_settings_taplo_lsp_options = {
\ 'activationStatus': v:true,
\ 'taploConfig': 'taplo://taplo.toml',
\ 'taploConfigEnabled': v:true,
\ 'semanticTokens': v:false,
\ 'schema': {
\ 'enabled': v:true,
\ 'links': v:false,
\ 'repositoryEnabled': v:true,
\ 'repositoryUrl': 'https://taplo.tamasfe.dev/schema_index.json',
\ 'associations': {
\ '^(.*(/|\\)Cargo\.toml|Cargo\.toml)$': 'taplo://Cargo.toml',
\ },
\ },
\ 'formatter': {
\ 'alignEntries': v:false,
\ 'alignComments': v:true,
\ 'arrayTrailingComma': v:true,
\ 'arrayAutoExpand': v:true,
\ 'arrayAutoCollapse': v:true,
\ 'compactArrays': v:true,
\ 'compactInlineTables': v:false,
\ 'compactEntries': v:false,
\ 'columnWidth': 80,
\ 'indentTables': v:false,
\ 'indentEntries': v:false,
\ 'indentString': v:null,
\ 'reorderKeys': v:true,
\ 'allowedBlankLines': 2,
\ 'trailingNewline': v:true,
\ 'crlf': v:false,
\ },
\ 'actions':{
\ 'ignoreDepracatedAssociations': v:false
\ },
\ 'debug': v:false
\ }
augroup vim_lsp_settings_taplo_lsp
au!
LspRegisterServer {
\ 'name': 'taplo-lsp',
\ 'cmd': {server_info->lsp_settings#get('taplo-lsp', 'cmd', [lsp_settings#exec_path('taplo-lsp')]+lsp_settings#get('taplo-lsp', 'args', has('win32') ? ['run'] : ['lsp','stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('taplo-lsp', 'root_uri', lsp_settings#root_uri('taplo-lsp'))},
\ 'initialization_options': lsp_settings#get('taplo-lsp', 'initialization_options', g:vim_lsp_settings_taplo_lsp_options),
\ 'allowlist': lsp_settings#get('taplo-lsp', 'allowlist', ['toml']),
\ 'blocklist': lsp_settings#get('taplo-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('taplo-lsp', 'config', lsp_settings#server_config('taplo-lsp')),
\ 'workspace_config': lsp_settings#get('taplo-lsp', 'workspace_config', {'evenBetterToml': g:vim_lsp_settings_taplo_lsp_options}),
\ 'semantic_highlight': lsp_settings#get('taplo-lsp', 'semantic_highlight', {}),
\ }
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END
function! s:on_lsp_buffer_enabled() abort
command! -buffer LspTomlToJson call <SID>taplo_toml_to_json(0, <q-mods>)
command! -buffer LspJsonToToml call <SID>taplo_json_to_toml(0, <q-mods>)
nnoremap <buffer> <plug>(lsp-toml-to-json) :<c-u>call <SID>toml_to_json(0)<cr>
nnoremap <buffer> <plug>(lsp-json-to-toml) :<c-u>call <SID>json_to_toml(0)<cr>
endfunction
function! s:open_new_buffer(ctx, server, type, data) abort
" Based on setting of deno
let l:path = a:ctx['target_uri']
let l:line = a:ctx['target_selection_range']['start']['line'] + 1
let l:col = a:ctx['target_selection_range']['start']['character'] + 1
let l:text = a:data['response']['result']['text']
if a:ctx['in_preview'] ==# 1
call lsp#ui#vim#output#preview(a:server, l:text, {
\ 'statusline': ' LSP Peek ' . a:type,
\ 'cursor': { 'line': l:line, 'col': l:col, 'align': g:lsp_peek_alignment },
\ 'filetype': &filetype
\ })
return
endif
let l:buffer = bufnr(l:path)
let l:mods = has_key(a:ctx, 'mods') ? a:ctx['mods'] : ''
if l:mods ==# '' && &modified && !&hidden && l:buffer != bufnr('%')
let l:mods = &splitbelow ? 'rightbelow' : 'leftabove'
endif
if l:mods ==# ''
if l:buffer == bufnr('%')
let l:cmd = ''
else
let l:cmd = (l:buffer !=# -1 ? 'b ' . l:buffer : 'edit ' . l:path)
endif
else
let l:cmd = l:mods . ' ' . (l:buffer !=# -1 ? 'sb ' . l:buffer : 'split ' . l:path)
endif
execute 'silent ' l:cmd
setlocal modifiable
call setline(1, split(l:text, "\n"))
setlocal noswapfile buftype=nofile
setlocal nomodified
setlocal nomodifiable
execute 'call cursor(' . l:line . ',' . l:col . ')'
endfunction
function! s:taplo_toml_to_json(in_preview, ...) abort
let l:ctx = {
\ 'mods': '',
\ 'in_preview': a:in_preview,
\ 'target_uri': 'taplo:/toml_to_json.json',
\ 'target_selection_range': {
\ 'end': { 'character': 0, 'line': 0 },
\ 'start': { 'character': 0, 'line': 0 }
\ }}
let l:text = join(getline(0,'$'), "\n")
if a:0
let l:ctx['mods'] = a:1
endif
call lsp#send_request('taplo-lsp', {
\ 'method': 'taplo/tomlToJson',
\ 'params': {
\ 'text': l:text,
\ },
\ 'on_notification': function('s:open_new_buffer', [l:ctx, 'taplo-lsp', 'tomlToJson'])
\ })
endfunction
function! s:taplo_json_to_toml(in_preview, ...) abort
let l:ctx = {
\ 'mods': '',
\ 'in_preview': a:in_preview,
\ 'target_uri': 'taplo:/json_to_toml.toml',
\ 'target_selection_range': {
\ 'end': { 'character': 0, 'line': 0 },
\ 'start': { 'character': 0, 'line': 0 }
\ }}
let l:text = join(getline(0,'$'), "\n")
if a:0
let l:ctx['mods'] = a:1
endif
call lsp#send_request('taplo-lsp', {
\ 'method': 'taplo/jsonToToml',
\ 'params': {
\ 'text': l:text,
\ },
\ 'on_notification': function('s:open_new_buffer', [l:ctx, 'taplo-lsp', 'jsonToToml'])
\ })
endfunction

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_terraform_ls
au!
LspRegisterServer {
\ 'name': 'terraform-ls',
\ 'cmd': {server_info->lsp_settings#get('terraform-ls', 'cmd', [lsp_settings#exec_path('terraform-ls')]+lsp_settings#get('terraform-ls', 'args', ['serve']))},
\ 'root_uri':{server_info->lsp_settings#get('terraform-ls', 'root_uri', lsp_settings#root_uri('terraform-ls'))},
\ 'initialization_options': lsp_settings#get('terraform-ls', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('terraform-ls', 'allowlist', ['terraform']),
\ 'blocklist': lsp_settings#get('terraform-ls', 'blocklist', []),
\ 'config': lsp_settings#get('terraform-ls', 'config', lsp_settings#server_config('terraform-ls')),
\ 'workspace_config': lsp_settings#get('terraform-ls', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('terraform-ls', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_terraform_lsp
au!
LspRegisterServer {
\ 'name': 'terraform-lsp',
\ 'cmd': {server_info->lsp_settings#get('terraform-lsp', 'cmd', [lsp_settings#exec_path('terraform-lsp')]+lsp_settings#get('terraform-lsp', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('terraform-lsp', 'root_uri', lsp_settings#root_uri('terraform-lsp'))},
\ 'initialization_options': lsp_settings#get('terraform-lsp', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('terraform-lsp', 'allowlist', ['terraform']),
\ 'blocklist': lsp_settings#get('terraform-lsp', 'blocklist', []),
\ 'config': lsp_settings#get('terraform-lsp', 'config', lsp_settings#server_config('terraform-lsp')),
\ 'workspace_config': lsp_settings#get('terraform-lsp', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('terraform-lsp', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,160 @@
augroup vim_lsp_settings_texlab
au!
LspRegisterServer {
\ 'name': 'texlab',
\ 'cmd': {server_info->lsp_settings#get('texlab', 'cmd', [lsp_settings#exec_path('texlab')]+lsp_settings#get('texlab', 'args', []))},
\ 'root_uri':{server_info->lsp_settings#get('texlab', 'root_uri', lsp_settings#root_uri('texlab'))},
\ 'initialization_options': lsp_settings#get('texlab', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('texlab', 'allowlist', ['plaintex', 'tex']),
\ 'blocklist': lsp_settings#get('texlab', 'blocklist', []),
\ 'config': lsp_settings#get('texlab', 'config', lsp_settings#server_config('texlab')),
\ 'workspace_config': lsp_settings#get('texlab', 'workspace_config', {
\ 'texlab': {
\ 'build': {
\ 'executable': 'latexmk',
\ 'args': []
\ }
\ }
\ }),
\ 'semantic_highlight': lsp_settings#get('texlab', 'semantic_highlight', {}),
\ }
augroup END
let s:build_status_success = 0
let s:build_status_error = 1
let s:build_status_failure = 2
let s:build_status_cancelled = 3
function! s:handle_document_build(ctx, server, type, has_extension, data) abort "ctx = {counter, list, last_command_id}
if a:ctx['last_command_id'] != lsp#_last_command()
return
endif
if lsp#client#is_error(a:data['response']) || !has_key(a:data['response'], 'result')
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
return
elseif type(a:data['response']['result']) !=# v:t_dict || !has_key(a:data['response']['result'], 'status')
call lsp#utils#error('No buildable document found')
return
endif
let l:status = a:data['response']['result']['status']
if l:status ==# s:build_status_success
echomsg 'Build success'
elseif l:status ==# s:build_status_cancelled
echomsg 'Build canceled'
elseif l:status ==# s:build_status_error
call lsp#utils#error('Build process terminated with errors')
elseif l:status ==# s:build_status_failure
call lsp#utils#error('Build process failed to start or crashed')
endif
endfunction
function! s:document_build() abort
let l:servers = lsp#get_whitelisted_servers()
let l:has_extension = 0
for l:server in l:servers
if stridx(l:server, 'texlab') != -1
let l:has_extension += 1
endif
endfor
if l:has_extension == 0
call lsp#utils#error('Building document not supported for '.&filetype)
return
endif
let l:command_id = lsp#_new_command()
let l:ctx = { 'counter': l:has_extension, 'list':[], 'last_command_id': l:command_id }
for l:server in l:servers
if stridx(l:server, 'texlab') == -1
continue
endif
call lsp#send_request(l:server, {
\ 'method': 'textDocument/build',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier()
\ },
\ 'on_notification': function('s:handle_document_build', [l:ctx, l:server, 'header/source', l:has_extension]),
\ })
endfor
echo 'Building document ...'
endfunction
let s:forwardsearch_status_success = 0
let s:forwardsearch_status_error = 1
let s:forwardsearch_status_failure = 2
let s:forwardsearch_status_unconfigured = 3
function! s:handle_document_forwardsearch(ctx, server, type, has_extension, data) abort "ctx = {counter, list, last_command_id}
if a:ctx['last_command_id'] != lsp#_last_command()
return
endif
if lsp#client#is_error(a:data['response']) || !has_key(a:data['response'], 'result')
call lsp#utils#error('Failed to retrieve '. a:type . ' for ' . a:server . ': ' . lsp#client#error_message(a:data['response']))
return
elseif type(a:data['response']['result']) !=# v:t_dict || !has_key(a:data['response']['result'], 'status')
call lsp#utils#error('No searchable document found')
return
endif
let l:status = a:data['response']['result']['status']
if l:status ==# s:forwardsearch_status_success
echomsg 'Preview success'
elseif l:status ==# s:forwardsearch_status_error
call lsp#utils#error('Preview failed: previewer process executed the command with errors')
elseif l:status ==# s:forwardsearch_status_failure
call lsp#utils#error('Preview failed: previewer process failed to start or crashed')
elseif l:status ==# s:forwardsearch_status_unconfigured
call lsp#utils#error('Preview failed: previewer command is not configured')
endif
endfunction
function! s:document_forwardsearch() abort
let l:servers = lsp#get_whitelisted_servers()
let l:has_extension = 0
for l:server in l:servers
if stridx(l:server, 'texlab') != -1
let l:has_extension += 1
endif
endfor
if l:has_extension == 0
call lsp#utils#error('Searching document not supported for '.&filetype)
return
endif
let l:command_id = lsp#_new_command()
let l:ctx = { 'counter': l:has_extension, 'list':[], 'last_command_id': l:command_id }
for l:server in l:servers
if stridx(l:server, 'texlab') == -1
continue
endif
call lsp#send_request(l:server, {
\ 'method': 'textDocument/forwardSearch',
\ 'params': {
\ 'textDocument': lsp#get_text_document_identifier(),
\ 'position': lsp#get_position()
\ },
\ 'on_notification': function('s:handle_document_forwardsearch', [l:ctx, l:server, 'header/source', l:has_extension]),
\ })
endfor
echo 'Forward search...'
endfunction
function! s:on_lsp_buffer_enabled() abort
command! -buffer LspDocumentBuild call <SID>document_build()
nnoremap <buffer> <plug>(lsp-document-build) :<c-u>call <SID>document_build()<cr>
command! -buffer LspDocumentForwardSearch call <SID>document_forwardsearch()
nnoremap <buffer> <plug>(lsp-document-forwardsearch) :<c-u>call <SID>document_forwardsearch()<cr>
endfunction
augroup lsp_install_texlab
au!
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_typeprof
au!
LspRegisterServer {
\ 'name': 'typeprof',
\ 'cmd': {server_info->lsp_settings#get('typeprof', 'cmd', [lsp_settings#exec_path('typeprof')]+lsp_settings#get('typeprof', 'args', ['--lsp', '--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('typeprof', 'root_uri', lsp_settings#root_uri('typeprof'))},
\ 'initialization_options': lsp_settings#get('typeprof', 'initialization_options', {'diagnostics': 'true'}),
\ 'allowlist': lsp_settings#get('typeprof', 'allowlist', ['ruby']),
\ 'blocklist': lsp_settings#get('typeprof', 'blocklist', []),
\ 'config': lsp_settings#get('typeprof', 'config', lsp_settings#server_config('typeprof')),
\ 'workspace_config': lsp_settings#get('typeprof', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('typeprof', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,24 @@
augroup vim_lsp_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')]+lsp_settings#get('typescript-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('typescript-language-server', 'root_uri', lsp_settings#root_uri('typescript-language-server'))},
\ 'initialization_options': lsp_settings#get('typescript-language-server', 'initialization_options', {
\ 'preferences': {
\ 'includeInlayParameterNameHintsWhenArgumentMatchesName': v:true,
\ 'includeInlayParameterNameHints': 'all',
\ 'includeInlayVariableTypeHints': v:true,
\ 'includeInlayPropertyDeclarationTypeHints': v:true,
\ 'includeInlayFunctionParameterTypeHints': v:true,
\ 'includeInlayEnumMemberValueHints': v:true,
\ 'includeInlayFunctionLikeReturnTypeHints': v:true
\ },
\ }),
\ 'allowlist': lsp_settings#get('typescript-language-server', 'allowlist', ['javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'typescript.tsx']),
\ 'blocklist': lsp_settings#get('typescript-language-server', 'blocklist', {c->empty(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'node_modules/')) ? ['typescript', 'javascript', 'typescriptreact', 'javascriptreact'] : []}),
\ 'config': lsp_settings#get('typescript-language-server', 'config', lsp_settings#server_config('typescript-language-server')),
\ 'workspace_config': lsp_settings#get('typescript-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('typescript-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,14 @@
augroup vim_lsp_settings_vala_language_server
au!
LspRegisterServer {
\ 'name': 'vala-language-server',
\ 'cmd': {server_info->lsp_settings#get('vala-language-server', 'cmd', [lsp_settings#exec_path('vala-language-server')]+lsp_settings#get('vala-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('vala-language-server', 'root_uri', lsp_settings#root_uri('vala-language-server'))},
\ 'initialization_options': lsp_settings#get('vala-language-server', 'initialization_options', v:null),
\ 'allowlist': lsp_settings#get('vala-language-server', 'allowlist', ['vala']),
\ 'blocklist': lsp_settings#get('vala-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('vala-language-server', 'config', lsp_settings#server_config('vala-language-server')),
\ 'workspace_config': lsp_settings#get('vala-language-server', 'workspace_config', {name, key->{'json': {'format': {'enable': v:true}, 'schemas': lsp_settings#utils#load_schemas('vala-language-server')}}}),
\ 'semantic_highlight': lsp_settings#get('vala-language-server', 'semantic_highlight', {}),
\ }
augroup END

View File

@@ -0,0 +1,20 @@
augroup vim_lsp_settings_vim_language_server
au!
LspRegisterServer {
\ 'name': 'vim-language-server',
\ 'cmd': {server_info->lsp_settings#get('vim-language-server', 'cmd', [lsp_settings#exec_path('vim-language-server')]+lsp_settings#get('vim-language-server', 'args', ['--stdio']))},
\ 'root_uri':{server_info->lsp_settings#get('vim-language-server', 'root_uri', lsp_settings#root_uri('vim-language-server'))},
\ 'initialization_options': extend({
\ 'isNeovim': has('nvim'),
\ 'vimruntime': $VIMRUNTIME,
\ 'runtimepath': &rtp,
\ 'iskeyword': &isk . ',:',
\ 'diagnostic': {'enable': v:true}
\ }, lsp_settings#get('vim-language-server', 'initialization_options', {}), 'force'),
\ 'allowlist': lsp_settings#get('vim-language-server', 'allowlist', ['vim']),
\ 'blocklist': lsp_settings#get('vimbash-language-server', 'blocklist', []),
\ 'config': lsp_settings#get('vim-language-server', 'config', lsp_settings#server_config('vim-language-server')),
\ 'workspace_config': lsp_settings#get('vim-language-server', 'workspace_config', {}),
\ 'semantic_highlight': lsp_settings#get('vim-language-server', 'semantic_highlight', {}),
\ }
augroup END

Some files were not shown because too many files have changed in this diff Show More