" 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