diff --git a/.config/vim/vimrc.d/25-coc.vim b/.config/vim/vimrc.d/25-coc.vim index 2babf06..7adc52e 100644 --- a/.config/vim/vimrc.d/25-coc.vim +++ b/.config/vim/vimrc.d/25-coc.vim @@ -1,57 +1,52 @@ " Primarly taken from: -" https://github.com/neoclide/coc.nvim/tree/c3d31ad09d#example-vim-configuration - -" TextEdit might fail if hidden is not set. -set hidden +" https://github.com/neoclide/coc.nvim/tree/v0.0.82#example-vim-configuration " Some servers have issues with backup files, see #649. set nobackup set nowritebackup -" Give more space for displaying messages. -set cmdheight=2 - -" Don't pass messages to |ins-completion-menu|. -set shortmess+=c +" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable +" delays and poor user experience. +set updatetime=300 " Always show the signcolumn, otherwise it would shift the text each time " diagnostics appear/become resolved. -if has("patch-8.1.1564") - " Recently vim can merge signcolumn and number column into one - set signcolumn=number -else - set signcolumn=yes -endif +set signcolumn=yes + +"Use and for navigate completion list like built in completion. +inoremap coc#pum#visible() ? coc#pum#next(1) : "\" +inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" " Use tab for trigger completion with characters ahead and navigate. " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by " other plugin before putting this into your config. inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() -inoremap pumvisible() ? "\" : "\" + \ coc#pum#visible() ? coc#pum#next(1): + \ CheckBackspace() ? "\" : + \ coc#refresh() +inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" -function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' +function! CheckBackspace() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion. if has('nvim') - inoremap coc#refresh() + inoremap coc#refresh() else - inoremap coc#refresh() + inoremap coc#refresh() endif -" Use to confirm completion, `u` means break undo chain at current -" position. Coc only does snippet and additional edit on confirm. -" could be remapped by other vim plugin, try `:verbose imap `. -if exists('*complete_info') - inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" -else - inoremap pumvisible() ? "\" : "\u\" -endif +" Make to accept selected completion item or notify coc.nvim to format +" u starts a new undo break, please make your own choice. +inoremap coc#pum#visible() ? coc#pum#confirm() + \: "\u\\=coc#on_enter()\" + +" Use `[g` and `]g` to navigate diagnostics +" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. +nmap [g (coc-diagnostic-prev) +nmap ]g (coc-diagnostic-next) " GoTo code navigation. nmap gd (coc-definition) @@ -60,14 +55,14 @@ nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window. -nnoremap K :call show_documentation() +nnoremap K :call ShowDocumentation() -function! s:show_documentation() - if (index(['vim','help'], &filetype) >= 0) - execute 'h '.expand('') - else - call CocAction('doHover') - endif +function! ShowDocumentation() + if CocAction('hasProvider', 'hover') + call CocActionAsync('doHover') + else + call feedkeys('K', 'in') + endif endfunction " Highlight the symbol and its references when holding the cursor. @@ -81,11 +76,11 @@ xmap f (coc-format-selected) nmap f (coc-format-selected) augroup mygroup - autocmd! - " Setup formatexpr specified filetype(s). - autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') - " Update signature help on jump placeholder. - autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') + autocmd! + " Setup formatexpr specified filetype(s). + autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') + " Update signature help on jump placeholder. + autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end " Applying codeAction to the selected region. @@ -99,4 +94,4 @@ nmap ac (coc-codeaction) nmap qf (coc-fix-current) " Add `:Format` command to format current buffer. -command! -nargs=0 Format :call CocAction('format') +command! -nargs=0 Format :call CocActionAsync('format') diff --git a/.local/share/vim/pack/plugins/opt/coc.nvim b/.local/share/vim/pack/plugins/opt/coc.nvim index 28e7f03..1d3c525 160000 --- a/.local/share/vim/pack/plugins/opt/coc.nvim +++ b/.local/share/vim/pack/plugins/opt/coc.nvim @@ -1 +1 @@ -Subproject commit 28e7f0376bcb661afa9e3b8b352152b981f5eda3 +Subproject commit 1d3c525e2d6af0c07ed19fa7a5016ffc6a9e8421