Support documentation window scrolling

This commit is contained in:
hrsh7th
2021-08-09 19:34:45 +09:00
parent 421720641b
commit a11ddccb33
6 changed files with 62 additions and 2 deletions

View File

@@ -19,6 +19,21 @@ keymap.t = function(keys)
return vim.api.nvim_replace_termcodes(keys, true, true, true)
end
---Escape keymap with <LT>
keymap.escape = function(keys)
local i = 1
while i <= #keys do
if string.sub(keys, i, i) == '<' then
if not vim.tbl_contains({ '<lt>', '<Lt>', '<lT>', '<LT>' }, string.sub(keys, i, i + 3)) then
keys = string.sub(keys, 1, i -1) .. '<LT>' .. string.sub(keys, i + 1)
i = i + 3
end
end
i = i + 1
end
return keys
end
---Return vim notation keymapping (simple conversion).
---@param s string
---@return string
@@ -107,7 +122,7 @@ keymap.listen = setmetatable({
existing = existing,
callback = callback,
})
vim.api.nvim_buf_set_keymap(0, 'i', keys, ('v:lua.cmp.utils.keymap.expr("%s")'):format(keys), {
vim.api.nvim_buf_set_keymap(0, 'i', keys, ('v:lua.cmp.utils.keymap.expr("%s")'):format(keymap.escape(keys)), {
expr = true,
nowait = true,
noremap = true,
@@ -115,7 +130,6 @@ keymap.listen = setmetatable({
end,
})
misc.set(_G, { 'cmp', 'utils', 'keymap', 'expr' }, function(keys)
keys = keymap.to_keymap(keys)
local bufnr = vim.api.nvim_get_current_buf()
local existing = keymap.listen.cache:get({ bufnr, keys }).existing

View File

@@ -10,4 +10,10 @@ describe('keymap', function()
assert.are.equal(keymap.to_keymap('<CR>'), '<CR>')
assert.are.equal(keymap.to_keymap('|'), '<Bar>')
end)
it('escape', function()
assert.are.equal(keymap.escape('<C-d>'), '<LT>C-d>')
assert.are.equal(keymap.escape('<C-d><C-f>'), '<LT>C-d><LT>C-f>')
assert.are.equal(keymap.escape('<LT>C-d>'), '<LT>C-d>')
end)
end)