mirror of
https://github.com/mattn/vim-lsp-settings.git
synced 2025-12-12 20:35:54 +01:00
42 lines
1.8 KiB
VimL
42 lines
1.8 KiB
VimL
augroup vimlsp_settings_rust_analyzer
|
|
au!
|
|
LspRegisterServer {
|
|
\ 'name': 'rust-analyzer',
|
|
\ 'cmd': {server_info->lsp_settings#get('rust-analyzer', 'cmd', [lsp_settings#exec_path('rust-analyzer')])},
|
|
\ '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', v:null),
|
|
\ 'whitelist': lsp_settings#get('rust-analyzer', 'whitelist', ['rust']),
|
|
\ 'blacklist': lsp_settings#get('rust-analyzer', 'blacklist', []),
|
|
\ '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()
|
|
augroup END
|
|
|
|
function! s:rust_analyzer_apply_source_change(context)
|
|
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:register_command()
|
|
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'))
|
|
endif
|
|
endfunction
|