" ================================================== " COC configuration and mapping " ================================================== " Use `lp` and `ln` for navigate diagnostics nmap <silent> <leader>lp <Plug>(coc-diagnostic-prev) nmap <silent> <leader>ln <Plug>(coc-diagnostic-next) " Remap keys for gotos nmap <silent> <leader>ld <Plug>(coc-definition) nmap <silent> <leader>lt <Plug>(coc-type-definition) nmap <silent> <leader>li <Plug>(coc-implementation) nmap <silent> <leader>lf <Plug>(coc-references) " Remap for rename current word nmap <leader>lr <Plug>(coc-rename) " Use K for show documentation in preview window nnoremap <silent> K :call <SID>show_documentation()<CR> function! s:show_documentation() if &filetype == 'vim' execute 'h '.expand('<cword>') else call CocAction('doHover') endif endfunction augroup Coc " Highlight symbol under cursor on CursorHold autocmd CursorHold * silent call CocActionAsync('highlight') " Update signature help on jump placeholder autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup END " See yank list nnoremap <silent> <space>y :<C-u>CocList -A --normal yank<cr> vmap <leader>fp <Plug>(coc-format-selected) nmap <leader>fp <Plug>(coc-format-selected) " Remap for rename current word nmap <leader>rn <Plug>(coc-rename) " inoremap <silent><expr> <TAB> \ pumvisible() ? coc#_select_confirm() : \ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" : \ <SID>check_back_space() ? "\<TAB>" : \ coc#refresh() function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction let g:coc_snippet_next = '<tab>' call coc#config('languageserver', { \ 'ccls': { \ 'command': 'ccls', \ 'trace.server': 'verbose', \ 'filetypes': ['c', 'cpp', 'objc', 'objcpp'] \ }, \ 'sorbet': { \ 'command': 'srb', \ 'args': ['tc', '--lsp', '--enable-all-experimental-lsp-features'], \ 'filetypes': ['ruby'], \ 'rootPatterns': ["sorbet/config"] \ } \}) call coc#config('eslint', { \ 'filetype': [ \ 'javascript', \ 'typescript', \ 'typescriptreact', \ 'typescript.tsx', \ 'vue' \ ] })