mirror of
https://github.com/neovim/neovim.git
synced 2026-07-31 04:39:07 +00:00
fix(ui2): avoid ModeChanged in message window #40788
This commit is contained in:
@@ -486,7 +486,8 @@ function M.msg_show(kind, content, replace_last, _, append, id, trigger)
|
||||
M.cmd.ids, M.cmd.prev_msg = {}, ''
|
||||
elseif tgt == 'pager' then
|
||||
-- Position cursor at start of first or last message at bottom of window.
|
||||
fn.win_execute(ui.wins.pager, 'norm! ' .. (enter_pager and 'gg0' or 'G0zb'))
|
||||
local lnum = enter_pager and 1 or api.nvim_buf_line_count(ui.bufs.pager)
|
||||
api.nvim_win_set_cursor(ui.wins.pager, { lnum, 0 })
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -718,7 +719,7 @@ function M.set_pos(tgt)
|
||||
M.dialog_on_key = vim.on_key(dialog_on_key, M.dialog_on_key)
|
||||
elseif tgt == 'msg' then
|
||||
-- Ensure last line is visible and first line is at top of window.
|
||||
fn.win_execute(ui.wins.msg, 'norm! Gzb')
|
||||
api.nvim_win_set_cursor(ui.wins.msg, { api.nvim_buf_line_count(ui.bufs.msg), 0 })
|
||||
elseif tgt == 'pager' and not in_pager then
|
||||
enter_pager()
|
||||
end
|
||||
|
||||
@@ -994,6 +994,19 @@ describe('messages2', function()
|
||||
]])
|
||||
end)
|
||||
|
||||
it('msg window timer does not trigger ModeChanged #40780', function()
|
||||
exec_lua(function()
|
||||
require('vim._core.ui2').enable({ msg = { targets = 'msg', msg = { timeout = 50 } } })
|
||||
end)
|
||||
command('let g:modechanged = []')
|
||||
command([[autocmd ModeChanged i:n call add(g:modechanged, copy(v:event))]])
|
||||
command([[echo "a" | echo "b" | startinsert]])
|
||||
screen:sleep(100)
|
||||
t.eq({}, n.eval('g:modechanged'))
|
||||
feed('<Esc>')
|
||||
t.eq({ { old_mode = 'i', new_mode = 'n' } }, n.eval('g:modechanged'))
|
||||
end)
|
||||
|
||||
it('configured targets per kind', function()
|
||||
exec_lua(function()
|
||||
local targets = { echo = 'msg', list_cmd = 'pager', bufwrite = 'cmd', lua_print = 'cmd' }
|
||||
|
||||
Reference in New Issue
Block a user