hrsh7th/nvim-cmp
View on GitHubSetting mapping in `cmp.setup.cmdline({'/', '?'}, {` prevents command tab completion from working after search
Open
#1511 opened on Apr 1, 2023
bugdifficulthelp wanted
Description
FAQ
- I have checked the FAQ and it didn't resolve my problem.
Announcement
- I have checked Breaking change announcement.
Minimal reproducible full config
let s:plug_dir = expand('/tmp/plugged/vim-plug')
if !filereadable(s:plug_dir .. '/plug.vim')
execute printf('!curl -fLo %s/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim', s:plug_dir)
end
execute 'set runtimepath+=' . s:plug_dir
call plug#begin(s:plug_dir)
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-cmdline'
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/cmp-path'
Plug 'hrsh7th/cmp-calc'
call plug#end()
PlugInstall | quit
" Setup global configuration. More on configuration below.
lua << EOF
local cmp = require "cmp"
cmp.setup {
mapping = {
['<CR>'] = cmp.mapping.confirm({ select = true })
},
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "buffer" },
}),
}
local capabilities = require('cmp_nvim_lsp').default_capabilities()
cmp.setup.cmdline({'/', '?'}, {
-- setting mapping causes the issue of :e %^I after / search
mapping = cmp.mapping.preset.cmdline(),
sources = {
{ name = 'buffer' }
}
})
EOF
Description
When mapping = cmp.mapping.preset.cmdline(), is provided to the /, ? cmp cmdlines, after searching once tab completion in the vim commandline stops working and prints ^I instead. If you remove the mapping then the problem won't trigger.
Steps to reproduce
- Open some file with nvim using attached minimal config
- Verify that
:e %<tab>will actually tab-expand%to current filename. - Perform search using
/foo<CR>or equivalent; verify that:e %<tab>will not work anymore and instead, print^Iper tab invocation. - Comment out mapping line in example config and verify (3) above cannot be reproduced.
Expected behavior
:e %<tab> will expand current filename after performing at least one search
Actual behavior
:e %<tab> will expand to :e %^I which is not expected.
Additional context
I don't know the significance of the mapping attribute for the search cmdline config but I merely copy-pasted it from the reference manual/README.