" COC - the Conquerer of Completion let g:coc_node_path = '/Users/christoomey/.asdf/shims/node' Plug 'neoclide/coc.nvim', {'branch': 'release'} let g:coc_global_extensions = [ \ 'coc-css', \ 'coc-json', \ 'coc-tsserver', \ 'coc-tailwindcss', \ 'coc-elixir', \ 'coc-svelte', \ 'coc-html', \ 'coc-yaml', \ 'coc-vimlsp', \ 'coc-svg', \ 'coc-lists', \ 'coc-json', \ 'coc-yank', \ 'coc-highlight', \ 'coc-solargraph', \ ] " autocmd FileType * let b:coc_suggest_disable = 1 " inoremap <silent><expr> <c-j> coc#refresh() nmap <leader>rn <Plug>(coc-rename) inoremap <silent><expr> <TAB> \ coc#pum#visible() ? coc#pum#next(1) : \ CheckBackspace() ? "\<Tab>" : \ coc#refresh() " \ 'coc-actions', if isdirectory('./node_modules') && isdirectory('./node_modules/prettier') let g:coc_global_extensions += ['coc-prettier'] endif if isdirectory('./node_modules') && isdirectory('./node_modules/eslint') let g:coc_global_extensions += ['coc-eslint'] endif if isdirectory('./node_modules') && isdirectory('./node_modules/stylelint') let g:coc_global_extensions += ['coc-stylelintplus'] endif function! s:check_eslint() if !isdirectory('./node_modules') || !isdirectory('./node_modules/eslint') call coc#config('eslint', { \ 'enable': v:false, \ }) endif endfunction autocmd BufEnter *.{js,jsx,ts,tsx} :call <SID>check_eslint() function! s:RestartCoc() abort silent! CocRestart echohl String | echom 'Restarting COC...' | echohl None endfunction command! RestartCoc call s:RestartCoc() nnoremap <leader>re :RestartCoc<cr> inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() : "\<CR>" inoremap <silent><expr> <Tab> coc#pum#visible() ? "\<C-n>" : "\<Tab>" " hi! CocMenuSel ctermbg=8 nmap <silent> <C-]> <Plug>(coc-definition) nmap <leader>do <Plug>(coc-codeaction) " Jump to next / previous error nmap <silent> [r <Plug>(coc-diagnostic-prev) nmap <silent> ]r <Plug>(coc-diagnostic-next) " show documentation function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('<cword>') else call CocAction('doHover') endif endfunction nnoremap <silent> K :call <SID>show_documentation()<CR> " show error, otherwise documentation, on hold function! ShowDocIfNoDiagnostic(timer_id) " if (coc#util#has_float() == 0) silent call CocActionAsync('doHover') " endif endfunction function! s:show_hover_doc() call timer_start(200, 'ShowDocIfNoDiagnostic') endfunction nnoremap <leader>k :call <SID>show_hover_doc()<cr> " vim:ft=vim