feat: add auto_cmd_events for hover configuration and highlight readme explaination
This commit is contained in:
@ -19,8 +19,9 @@ M.conf = {
|
||||
-- TODO :
|
||||
pageup = '[[',
|
||||
pagedown = ']]',
|
||||
pin = '_',
|
||||
close = '+',
|
||||
pin = '+',
|
||||
close = '_',
|
||||
toggle_entry = '--',
|
||||
},
|
||||
animation = {
|
||||
-- open = 'fold',
|
||||
@ -28,7 +29,12 @@ M.conf = {
|
||||
open = 'slid',
|
||||
close = 'slid',
|
||||
interval = 12,
|
||||
}
|
||||
},
|
||||
auto_close_events = {
|
||||
'InsertEnter',
|
||||
'CursorMoved',
|
||||
'BufLeave',
|
||||
},
|
||||
},
|
||||
float = {
|
||||
width = 0.8,
|
||||
|
@ -184,8 +184,8 @@ local try_del_keymap = function()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local action
|
||||
local next
|
||||
action = {
|
||||
pageup = function()
|
||||
m_window:normal('gg')
|
||||
@ -199,11 +199,8 @@ action = {
|
||||
if pin then
|
||||
error('too many window')
|
||||
end
|
||||
if cmd_id > 0 then
|
||||
api.nvim_del_autocmd(cmd_id)
|
||||
cmd_id = -1
|
||||
end
|
||||
|
||||
pcall(api.nvim_del_autocmd, cmd_id)
|
||||
m_window:set('wrap', false)
|
||||
|
||||
m_window:try_close(function()
|
||||
@ -219,18 +216,20 @@ action = {
|
||||
vim.keymap.del('n', conf.hover.keymap.pin, { buffer = true })
|
||||
|
||||
|
||||
|
||||
--- NOTE : 只允许存在一个pin窗口
|
||||
local buf = m_window.bufnr
|
||||
pin = true
|
||||
api.nvim_create_autocmd({ 'BufWipeOut', 'BufLeave' }, {
|
||||
local toggle = conf.hover.keymap.toggle_entry
|
||||
if toggle then
|
||||
next = m_window.winid
|
||||
vim.keymap.set('n', toggle, action.toggle_entry, { silent = true, buffer = buf })
|
||||
end
|
||||
|
||||
api.nvim_create_autocmd('BufWipeOut', {
|
||||
callback = function(opt)
|
||||
if opt.event == 'BufLeave' or opt.buf == buf then
|
||||
if opt.buf == buf then
|
||||
pin = false
|
||||
api.nvim_del_autocmd(opt.id)
|
||||
if opt.event == 'BufLeave' then
|
||||
action.close()
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
@ -238,15 +237,21 @@ action = {
|
||||
end,
|
||||
|
||||
close = function()
|
||||
if cmd_id > 0 then
|
||||
api.nvim_del_autocmd(cmd_id)
|
||||
cmd_id = -1
|
||||
end
|
||||
|
||||
pcall(api.nvim_del_autocmd, cmd_id)
|
||||
m_window:set('wrap', false)
|
||||
m_window:try_close()
|
||||
try_del_keymap()
|
||||
end,
|
||||
|
||||
toggle_entry = function()
|
||||
if pin and m_window:is_open() then
|
||||
local prev = api.nvim_get_current_win()
|
||||
api.nvim_set_current_win(next)
|
||||
next = prev
|
||||
else
|
||||
vim.keymap.del('n', conf.hover.keymap.toggle_entry, { buffer = true })
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
@ -285,9 +290,11 @@ return function(word)
|
||||
m_window:set('wrap', true)
|
||||
end)
|
||||
|
||||
|
||||
|
||||
-- Auto Close
|
||||
cmd_id = api.nvim_create_autocmd(
|
||||
{ 'InsertEnter', 'CursorMoved', 'BufLeave', }, {
|
||||
hover.auto_close_events, {
|
||||
buffer = 0,
|
||||
callback = function()
|
||||
m_window:set('wrap', false)
|
||||
|
Reference in New Issue
Block a user