" let g:coc_global_extensions = [ " \ 'coc-snippets', " \ 'coc-actions', " \ 'coc-emmet', " \ 'coc-pairs', " \ 'coc-tsserver', " \ 'coc-floaterm', " \ 'coc-html', " \ 'coc-css', " \ 'coc-cssmodules', " \ 'coc-yaml', " \ 'coc-python', " \ 'coc-explorer', " \ 'coc-svg', " \ 'coc-prettier', " \ 'coc-vimlsp', " \ 'coc-xml', " \ 'coc-yank', " \ 'coc-json', " \ 'coc-vimtex', " \ ] " Use tab for trigger completion with characters ahead and navigate. inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction " Use to trigger completion. inoremap coc#refresh() " Use to confirm completion, `u` means break undo chain at current " position. Coc only does snippet and additional edit on confirm. if exists('*complete_info') inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" else imap pumvisible() ? "\" : "\u\" endif " GoTo code navigation. nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use K to show documentation in preview window. nnoremap K :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') else call CocAction('doHover') endif endfunction " Highlight the symbol and its references when holding the cursor. autocmd CursorHold * silent call CocActionAsync('highlight') " Symbol renaming. nmap rn (coc-rename) 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') augroup end " Applying codeAction to the selected region. " Example: `aap` for current paragraph " xmap a (coc-codeaction-selected) " nmap a (coc-codeaction-selected) " Remap keys for applying codeAction to the current line. " nmap ac (coc-codeaction) " Apply AutoFix to problem on the current line. " nmap qf (coc-fix-current) " Introduce function text object " NOTE: Requires 'textDocument.documentSymbol' support from the language server. xmap if (coc-funcobj-i) xmap af (coc-funcobj-a) omap if (coc-funcobj-i) omap af (coc-funcobj-a) " Use for selections ranges. " NOTE: Requires 'textDocument/selectionRange' support from the language server. " coc-tsserver, coc-python are the examples of servers that support it. " nmap (coc-range-select) " xmap (coc-range-select) " Add `:Format` command to format current buffer. command! -nargs=0 Format :call CocAction('format') " Add `:Fold` command to fold current buffer. command! -nargs=? Fold :call CocAction('fold', ) " Add `:OR` command for organize imports of the current buffer. command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') " Add (Neo)Vim's native statusline support. " NOTE: Please see `:h coc-status` for integrations with external plugins that " provide custom statusline: lightline.vim, vim-airline. set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " Mappings using CoCList: " Show all diagnostics. " TODO add these to which key " nnoremap a :CocList diagnostics " " Manage extensions. " nnoremap e :CocList extensions " " Show commands. " nnoremap c :CocList commands " " Find symbol of current document. " nnoremap o :CocList outline " " Search workspace symbols. " nnoremap s :CocList -I symbols " " Do default action for next item. " nnoremap j :CocNext " " Do default action for previous item. " nnoremap k :CocPrev " " Resume latest coc list. " nnoremap p :CocListResume " Explorer let g:coc_explorer_global_presets = { \ 'floating': { \ 'position': 'floating', \ }, \ 'floatingLeftside': { \ 'position': 'floating', \ 'floating-position': 'left-center', \ 'floating-width': 30, \ }, \ 'floatingRightside': { \ 'position': 'floating', \ 'floating-position': 'right-center', \ 'floating-width': 30, \ }, \ 'simplify': { \ 'file.child.template': '[selection | clip | 1] [indent][icon | 1] [filename omitCenter 1]' \ } \ } "nmap e :CocCommand explorer " nnoremap e :CocCommand explorer " nmap f :CocCommand explorer --preset floatingRightside autocmd BufEnter * if (winnr("$") == 1 && &filetype == 'coc-explorer') | q | endif