dotfilesClean dotfiles |
git clone git://git.dimitrijedobrota.com/dotfiles.git |
Log | Files | Refs |
clangd.vim (2944B)
0 " Set up VIM language server using clangd 1 2 if executable('clangd') 3 augroup lsp_clangd 4 autocmd! 5 autocmd User lsp_setup call lsp#register_server({ 6 \ 'name': 'clangd', 7 \ 'cmd': {server_info->['clangd']}, 8 \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'], 9 \ }) 10 autocmd FileType c setlocal omnifunc=lsp#complete 11 autocmd FileType cpp setlocal omnifunc=lsp#complete 12 autocmd FileType objc setlocal omnifunc=lsp#complete 13 autocmd FileType objcpp setlocal omnifunc=lsp#complete 14 augroup end 15 endif 16 17 function! s:on_lsp_buffer_enabled() abort 18 setlocal omnifunc=lsp#complete 19 setlocal signcolumn=yes 20 if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif 21 nmap <buffer> gd <plug>(lsp-definition) 22 nmap <buffer> gs <plug>(lsp-document-symbol-search) 23 nmap <buffer> gf <plug>(lsp-document-format) 24 nmap <buffer> gD <plug>(lsp-document-diagnostics) 25 nmap <buffer> gS <plug>(lsp-workspace-symbol-search) 26 nmap <buffer> gR <plug>(lsp-references) 27 nmap <buffer> gi <plug>(lsp-implementation) 28 nmap <buffer> gt <plug>(lsp-type-definition) 29 nmap <buffer> <leader>rn <plug>(lsp-rename) 30 nmap <buffer> [g <plug>(lsp-previous-diagnostic) 31 nmap <buffer> ]g <plug>(lsp-next-diagnostic) 32 nmap <buffer> K <plug>(lsp-hover) 33 nnoremap <buffer> <expr><c-f> lsp#scroll(+4) 34 nnoremap <buffer> <expr><c-d> lsp#scroll(-4) 35 36 let g:lsp_format_sync_timeout = 1000 37 autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync') 38 39 " refer to doc to add more commands 40 endfunction 41 42 augroup lsp_install 43 au! 44 " call s:on_lsp_buffer_enabled only for languages that has the server registered. 45 autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() 46 augroup END 47 48 " set foldmethod=expr 49 " \ foldexpr=lsp#ui#vim#folding#foldexpr() 50 " \ foldtext=lsp#ui#vim#folding#foldtext() 51 52 " Key bindings for vim-lsp. 53 nn <silent> <M-d> :LspDefinition<cr> 54 nn <silent> <M-r> :LspReferences<cr> 55 nn <f2> :LspRename<cr> 56 nn <silent> <M-a> :LspWorkspaceSymbol<cr> 57 nn <silent> <M-l> :LspDocumentSymbol<cr> 58 59 highlight lspReference ctermfg=red guifg=red ctermbg=NONE guibg=green 60 61 autocmd User asyncomplete_setup call asyncomplete#register_source( 62 \ asyncomplete#sources#clang#get_source_options()) 63 64 " Key bindings for asyncomplete 65 inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>" 66 inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>" 67 inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>" 68 69 let g:asyncomplete_auto_popup = 0 70 71 function! s:check_back_space() abort 72 let col = col('.') - 1 73 return !col || getline('.')[col - 1] =~ '\s' 74 endfunction 75 76 inoremap <silent><expr> <TAB> 77 \ pumvisible() ? "\<C-n>" : 78 \ <SID>check_back_space() ? "\<TAB>" : 79 \ asyncomplete#force_refresh() 80 inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" 81 82 let g:asyncomplete_auto_completeopt = 0 83 set completeopt=menuone,noinsert,noselect,preview 84 autocmd! CompleteDone * if pumvisible() == 0 | pclose | endif