You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.7 KiB
46 lines
1.7 KiB
" Register LSP servers |
|
|
|
"" Register clangd C and C++ lanuage server. |
|
if executable('clangd') |
|
augroup lsp_clangd |
|
autocmd! |
|
autocmd User lsp_setup call lsp#register_server({ |
|
\ 'name': 'clangd', |
|
\ 'cmd': {server_info->['clangd']}, |
|
\ 'whitelist': ['c', 'cpp', 'cxx', 'objc', 'objcpp'], |
|
\ }) |
|
autocmd FileType c setlocal omnifunc=lsp#complete |
|
autocmd FileType cpp setlocal omnifunc=lsp#complete |
|
autocmd FileType objc setlocal omnifunc=lsp#complete |
|
autocmd FileType objcpp setlocal omnifunc=lsp#complete |
|
augroup end |
|
endif |
|
|
|
function! s:on_lsp_buffer_enabled() abort |
|
setlocal omnifunc=lsp#complete |
|
setlocal signcolumn=yes |
|
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif |
|
nmap <buffer> gd <plug>(lsp-definition) |
|
nmap <buffer> gs <plug>(lsp-document-symbol-search) |
|
nmap <buffer> gS <plug>(lsp-workspace-symbol-search) |
|
nmap <buffer> gr <plug>(lsp-references) |
|
nmap <buffer> gi <plug>(lsp-implementation) |
|
nmap <buffer> gt <plug>(lsp-type-definition) |
|
nmap <buffer> <leader>rn <plug>(lsp-rename) |
|
nmap <buffer> [g <plug>(lsp-previous-diagnostic) |
|
nmap <buffer> ]g <plug>(lsp-next-diagnostic) |
|
nmap <buffer> K <plug>(lsp-hover) |
|
nnoremap <buffer> <expr><c-f> lsp#scroll(+4) |
|
nnoremap <buffer> <expr><c-d> lsp#scroll(-4) |
|
|
|
let g:lsp_format_sync_timeout = 1000 |
|
autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync') |
|
|
|
" refer to doc to add more commands |
|
endfunction |
|
|
|
augroup lsp_install |
|
au! |
|
" call s:on_lsp_buffer_enabled only for languages that has the server registered. |
|
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() |
|
augroup END
|
|
|