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.
47 lines
1.7 KiB
47 lines
1.7 KiB
3 months ago
|
" 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
|