neoclide/coc.nvim
View on GitHub[Bug]: Arrow keys doesn't highlight the current option
Closed
#5608 opened on Apr 15, 2026
Can't reproducehelp wanted
Description
Result from CocInfo
1 ## versions
2
3 vim version: VIM - Vi IMproved 9.2 9020300
4 node version: v25.8.2
5 coc.nvim version: 0.0.82-31b8b5e 2026-04-14 11:38:27 +0800
6 coc.nvim directory: /data/data/com.termux/files/home/.vim/plugged/coc.nvim
7 term: dumb
8 platform: android
9
10 ## Log of coc.nvim
11
12 2026-04-15T10:42:40.696 INFO (pid:32589) [plugin] - coc.nvim initialized with node: v25.8.2 after 1052
13 2026-04-15T10:42:43.412 INFO (pid:32589) [attach] - receive notification: showInfo []
Describe the bug
When using arrow keys to navigate through completion suggestion current option is not highlighted. This depends on what type of suggestion is the current one and usually happens wuth the first set of suggestions, that is, when menu is forced to redraw usually works normal, but going backward makes as the menu is not redraw, the issue keeps
Reproduce the bug
We will close your issue when you don't provide minimal vimrc and we can't reproduce it
- Create file
mini.vimwith:
" Plugins.
call plug#begin("~/.vim/plugged")
" Dracula theme.
Plug 'dracula/vim', { 'as': 'dracula' }
" Theme of status bar.
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" Buffer manager.
Plug 'zefei/vim-wintabs'
Plug 'zefei/vim-wintabs-powerline'
" NERDTree plugin (file manager).
Plug 'preservim/nerdtree'
" Autocompletion wuth coc.nvim.
" Use release branch (recommended).
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Snippets
Plug 'honza/vim-snippets'
" Autoclose symbols.
Plug 'jiangmiao/auto-pairs'
" Show emojis.
Plug 'kyazdani42/nvim-web-devicons'
Plug 'adelarsq/vim-devicons-emoji'
call plug#end()
" Configuration of coc.nvim
" May need for Vim (not Neovim) since coc.nvim calculates byte offset by count
" utf-8 byte sequence
set encoding=utf-8
" Some servers have issues with backup files, see #649
set nobackup
set nowritebackup
" Having longer updatetime (default is 4000 ms = 4s) 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
set signcolumn=yes
" Use tab for trigger completion with characters ahead and navigate
" NOTE: There's always complete item selected by default, you may want to enable
" no select by `"suggest.noselect": true` in your configuration file
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" GoTo code navigation
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window
nnoremap <silent> K :call ShowDocumentation()<CR>
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
autocmd CursorHold * silent call CocActionAsync('highlight')
" Symbol renaming
nmap <leader>rn <Plug>(coc-rename)
" Formatting selected code
xmap <leader>f <Plug>(coc-format-selected)
nmap <leader>f <Plug>(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')
augroup end
" Applying code actions to the selected code block
" Example: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap keys for applying code actions at the cursor position
nmap <leader>ac <Plug>(coc-codeaction-cursor)
" Remap keys for apply code actions affect whole buffer
nmap <leader>as <Plug>(coc-codeaction-source)
" Apply the most preferred quickfix action to fix diagnostic on the current line
nmap <leader>qf <Plug>(coc-fix-current)
" Remap keys for applying refactor code actions
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
" Run the Code Lens action on the current line
nmap <leader>cl <Plug>(coc-codelens-action)
" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server
xmap if <Plug>(coc-funcobj-i)
omap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap af <Plug>(coc-funcobj-a)
xmap ic <Plug>(coc-classobj-i)
omap ic <Plug>(coc-classobj-i)
xmap ac <Plug>(coc-classobj-a)
omap ac <Plug>(coc-classobj-a)
" Remap <C-f> and <C-b> to scroll float windows/popups
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-s>f coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-s>f"
nnoremap <silent><nowait><expr> <C-s>b coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-s>b"
inoremap <silent><nowait><expr> <C-s>f coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <silent><nowait><expr> <C-s>b coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
vnoremap <silent><nowait><expr> <C-s>f coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-s>f"
vnoremap <silent><nowait><expr> <C-s>b coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-s>b"
endif
" Use CTRL-S for selections ranges
" Requires 'textDocument/selectionRange' support of language server
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)
" Add `:Format` command to format current buffer
command! -nargs=0 Format :call CocActionAsync('format')
" Add `:Fold` command to fold current buffer
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" Add `:OR` command for organize imports of the current buffer
command! -nargs=0 OR :call CocActionAsync('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 for CoCList
" Show all diagnostics
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
" Do default action for previous item
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
" Configuration of NERDTree.
nnoremap <C-F>o :NERDTree<CR>
nnoremap <C-F>t :NERDTreeToggle<CR>
nnoremap <C-F>f :NERDTreeFind<CR>
" Configuration of wintabs.
map <C-B>b <Plug>(wintabs_previous)
map <C-B>n <Plug>(wintabs_next)
map <C-B>c <Plug>(wintabs_close)
map <C-B>u <Plug>(wintabs_undo)
map <C-B>o <Plug>(wintabs_only)
map <C-W>c <Plug>(wintabs_close_window)
map <C-W>o <Plug>(wintabs_only_window)
command! Tabc WintabsCloseVimtab
command! Tabo WintabsOnlyVimtab
" My cofiguration.
" Set line numbers.
set number
" Tabulation settings.
set autoindent
set expandtab
set tabstop=2
set shiftwidth=2
" Transparent background.
let g:dracula_colorterm = 0
" Set dracula as the theme.
colorscheme dracula
" Theme of vim-airline.
let g:airline_theme='dark'
-
Start (neo)vim with command:
vim -u mini.vim -
Operate vim.
Screenshots (optional)
https://github.com/user-attachments/assets/73b8f1dc-10cc-4826-9c0c-8911f54155e7