Closed andvarfolomeev closed 1 year ago
I found recipe to avoid which-key, but delay is staying anyway
vim.api.nvim_create_autocmd('VimEnter', {
desc = 'Translate global keybindings',
callback = function()
local ok, lm = pcall(require, 'langmapper')
if ok then
lm.automapping({ buffer = false })
end
end,
})
The delay in insert mode is not because of `langmapper', but because you have insert mode mappings that start with a space. (By the way, the leader key is not normally used for insert mode mappings and command line mode mappings).
Disable langmapper
and check - the delay remains.
The which-key
window probably appears in insert mode for the same reason.
I runned following commands without langmapper and with.
:redir! > vim_keys.txt
:imap
:redir END
Without langmapper:
i <C-Space> * <Lua 331: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Up> * <Lua 329: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-N> * <Lua 327: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Down> * <Lua 325: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-K> * <Lua 322: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-P> * <Lua 318: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-J> * <Lua 315: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-Y> * <Lua 313: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <S-Tab> * <Lua 310: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-E> * <Lua 308: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-D> * <Lua 69: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Plug>(vsnip-jump-prev) * <Esc>:<C-U>call <SNR>29_jump(-1)<CR>
i <Plug>(vsnip-jump-next) * <Esc>:<C-U>call <SNR>29_jump(1)<CR>
i <Plug>(vsnip-expand) * <Esc>:<C-U>call <SNR>29_expand()<CR>
i <Plug>(vsnip-expand-or-jump) * <Esc>:<C-U>call <SNR>29_expand_or_jump()<CR>
i <BS> * v:lua.MiniPairs.bs()
MiniPairs <BS>
i <C-W> * <C-G>u<C-W>
Nvim builtin
i <C-U> * <Lua 304: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Tab> * <Lua 307: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <CR> * <Lua 320: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i " * v:lua.MiniPairs.closeopen('""', "[^\\].")
Closeopen action for '""' pair
i ' * v:lua.MiniPairs.closeopen("''", "[^%a\\].")
Closeopen action for "''" pair
i ( * v:lua.MiniPairs.open("()", "[^\\].")
Open action for "()" pair
i ) * v:lua.MiniPairs.close("()", "[^\\].")
Close action for "()" pair
i [ * v:lua.MiniPairs.open("[]", "[^\\].")
Open action for "[]" pair
i ] * v:lua.MiniPairs.close("[]", "[^\\].")
Close action for "[]" pair
i ` * v:lua.MiniPairs.closeopen("``", "[^\\].")
Closeopen action for "``" pair
i { * v:lua.MiniPairs.open("{}", "[^\\].")
Open action for "{}" pair
i } * v:lua.MiniPairs.close("{}", "[^\\].")
Close action for "{}" pair
With langmapper:
i <S-Tab> * <Lua 958: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-Space> * <Lua 1176: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Down> * <Lua 268: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Up> * <Lua 1223: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <BS> * v:lua.MiniPairs.bs()
MiniPairs <BS>
i <Plug>(vsnip-jump-prev) * <Esc>:<C-U>call <SNR>29_jump(-1)<CR>
i <Plug>(vsnip-jump-next) * <Esc>:<C-U>call <SNR>29_jump(1)<CR>
i <Plug>(vsnip-expand) * <Esc>:<C-U>call <SNR>29_expand()<CR>
i <Plug>(vsnip-expand-or-jump) * <Esc>:<C-U>call <SNR>29_expand_or_jump()<CR>
i <C-ю> * <Lua 442: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-.>")
i <C-б> * <Lua 436: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-,>")
i <C-ь> * <Lua 430: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-m>")
i <C-т> * <Lua 1177: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-и> * <Lua 418: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-b>")
i <C-м> * <Lua 412: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-v>")
i <C-с> * <Lua 406: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-c>")
i <C-ч> * <Lua 400: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-x>")
i <C-я> * <Lua 394: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-z>")
i <C-э> * <Lua 388: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-'>")
i <C-ж> * <Lua 382: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-;>")
i <C-д> * <Lua 376: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-l>")
i <C-л> * <Lua 370: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-k>")
i <C-о> * <Lua 364: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-j>")
i <C-р> * <Lua 358: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-h>")
i <C-п> * <Lua 352: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-g>")
i <C-а> * <Lua 346: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-f>")
i <C-в> * <Lua 1174: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-ы> * <Lua 334: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-s>")
i <C-ф> * <Lua 328: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-a>")
i <C-ъ> * <Lua 322: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-]>")
i <C-х> * <Lua 316: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-[>")
i <C-з> * <Lua 1190: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-щ> * <Lua 304: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-o>")
i <C-ш> * <Lua 298: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-i>")
i <C-г> * <Lua 1218: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-н> * <Lua 1193: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-е> * <Lua 280: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-t>")
i <C-к> * <Lua 274: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-r>")
i <C-у> * <Lua 1188: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <C-ц> * <Lua 262: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-w>")
i <C-й> * <Lua 256: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-q>")
i <C-ё> * <Lua 250: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-`>")
i <C-Ю> * <Lua 244: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C->>")
i <C-Б> * <Lua 238: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-<>")
i <C-Э> * <Lua 232: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-">")
i <C-Ж> * <Lua 226: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-:>")
i <C-Ъ> * <Lua 220: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-}>")
i <C-Х> * <Lua 214: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-{>")
i <C-Ë> * <Lua 208: ~/.local/share/nvim/lazy/langmapper.nvim/lua/langmapper/utils.lua:188>
LM (feedkeys "<C-~>")
i <C-W> * <C-G>u<C-W>
Nvim builtin
i <C-U> * <C-G>u<C-U>
Nvim builtin
i <Tab> * <Lua 1243: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <CR> * <Lua 1178: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Space>з * <Lua 1180: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Space>ры * <Lua 1182: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i <Space>рк * <Lua 1192: ~/.local/share/nvim/lazy/nvim-cmp/lua/cmp/utils/keymap.lua:127>
cmp.utils.keymap.set_map
i " * v:lua.MiniPairs.closeopen('""', "[^\\].")
Closeopen action for '""' pair
i ' * v:lua.MiniPairs.closeopen("''", "[^%a\\].")
Closeopen action for "''" pair
i ( * v:lua.MiniPairs.open("()", "[^\\].")
Open action for "()" pair
i ) * v:lua.MiniPairs.close("()", "[^\\].")
Close action for "()" pair
i [ * v:lua.MiniPairs.open("[]", "[^\\].")
Open action for "[]" pair
i ] * v:lua.MiniPairs.close("[]", "[^\\].")
Close action for "[]" pair
i ` * v:lua.MiniPairs.closeopen("``", "[^\\].")
Closeopen action for "``" pair
i { * v:lua.MiniPairs.open("{}", "[^\\].")
Open action for "{}" pair
i } * v:lua.MiniPairs.close("{}", "[^\\].")
Close action for "{}" pair
As you can see Additional mappings in insert mode appears when langmapper and cmp is enabled. Later I will try to find reason
Unfortunately, I can't reproduce these bugs in insert mode. Also, when outputting imap
I don't have <space>з
, <space>ры
and <space>рк
registered by nvim-cmp
.
Maybe you have some additional bindings in the cmp
config?
If you find the problem, please, let me know.
The reason of this behavior is my options of cmp plugin. In particular, It is mappings (<Tab>, S-<Tab>, <C-j>, <C-k>
).
But I tried your cmp configuration and I get the same behavior. You can try to reproduce the bug. Add this mapping to your config. Note that the delay happens when leader is space and map in visual mode.
map({ 'v' }, '<leader>y', [["+y]], { desc = 'Yank to system clipboard', noremap = false })
opts = function()
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') == nil
-- end
local feedkey = function(key, mode)
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
end
local cmp = require('cmp')
local lspkind = require('lspkind')
return {
snippet = {
expand = function(args)
vim.fn['vsnip#anonymous'](args.body)
end,
},
window = {
completion = {
winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,Search:None',
scrollbar = true,
col_offset = -3,
side_padding = 0,
},
documentation = {
winhighlight = 'Normal:CmpDoc',
},
},
performance = {
debounce = 50,
fetching_timeout = 100,
},
mapping = {
['<C-u>'] = cmp.mapping.scroll_docs(-4),
['<C-d>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function()
if cmp.visible() then
cmp.select_prev_item()
end
end, { 'i', 's' }),
['<C-j>'] = cmp.mapping(function(fallback)
if vim.fn['vsnip#available'](1) == 1 then
feedkey('<Plug>(vsnip-expand-or-jump)', '')
else
--fallback()
end
end, { 'i', 's' }),
['<C-k>'] = cmp.mapping(function()
if vim.fn['vsnip#jumpable'](-1) == 1 then
feedkey('<Plug>(vsnip-jump-prev)', '')
end
end, { 'i', 's' }),
},
sorting = {
priority_weight = 2,
comparators = {
cmp.config.compare.offset,
cmp.config.compare.exact,
cmp.config.compare.score,
cmp.config.compare.recently_used,
cmp.config.compare.locality,
cmp.config.compare.kind,
cmp.config.compare.length,
cmp.config.compare.order,
},
},
sources = cmp.config.sources({
-- { name = 'nvim_lsp' },
-- { name = 'vsnip' },
-- { name = 'path' },
-- { name = 'nvim_lsp_signature_help' },
}),
formatting = {
fields = { 'kind', 'abbr', 'menu' },
format = function(entry, vim_item)
local kind = lspkind.cmp_format({
mode = 'symbol_text',
maxwidth = 50,
})(entry, vim_item)
local strings = vim.split(kind.kind, '%s', { trimempty = true })
kind.kind = ' ' .. (strings[1] or '') .. ' '
kind.menu = ' (' .. (strings[2] or '') .. ')'
return kind
end,
},
}
end
I think I figured out what the problem is: try calling require('langmapper').hack_get_keymap()
after the plugin setup - should help.
https://github.com/Wansmer/langmapper.nvim/issues/8#issuecomment-1529142210
Yes, It's work! Thanks
Plugin works great when leader key is not space. Otherwise, there is a delay.
In addition, I can say that when you press the space in insert mode, a window of which-key plugin appears. You can see it on the screenshot.
Following Which-key settings:
Following langmapper settings: