mirror of
https://github.com/neovim/neovim
synced 2025-07-16 09:11:51 +00:00
fix(edit): clear showcmd after clearing last put char (#34517)
Problem: Screen may be updated by a msg_showcmd event before '"' is cleared from the screen with register insertion. Solution: Emit the msg_showcmd event before clearing the '"'.
This commit is contained in:
@ -3270,12 +3270,13 @@ static void ins_reg(void)
|
||||
ins_need_undo = true;
|
||||
}
|
||||
u_sync_once = 0;
|
||||
clear_showcmd();
|
||||
|
||||
// If the inserted register is empty, we need to remove the '"'
|
||||
// If the inserted register is empty, we need to remove the '"'. Do this before
|
||||
// clearing showcmd, which emits an event that can also update the screen.
|
||||
if (need_redraw || stuff_empty()) {
|
||||
edit_unputchar();
|
||||
}
|
||||
clear_showcmd();
|
||||
|
||||
// Disallow starting Visual mode here, would get a weird mode.
|
||||
if (!vis_active && VIsual_active) {
|
||||
|
@ -24,7 +24,7 @@ describe('messages2', function()
|
||||
{1:~ }|*12
|
||||
foo[+1] |
|
||||
]])
|
||||
command('set ruler')
|
||||
command('set ruler showcmd noshowmode')
|
||||
feed('g<lt>')
|
||||
screen:expect([[
|
||||
|
|
||||
@ -68,6 +68,19 @@ describe('messages2', function()
|
||||
{4: 1 %a "[No Name]" line 1 }|
|
||||
1,1 All|
|
||||
]])
|
||||
-- edit_unputchar() does not clear already updated screen #34515.
|
||||
feed('qix<Esc>dwi<C-r>')
|
||||
screen:expect([[
|
||||
{18:^"} |
|
||||
{1:~ }|*12
|
||||
^R 1,1 All|
|
||||
]])
|
||||
feed('-')
|
||||
screen:expect([[
|
||||
x^ |
|
||||
{1:~ }|*12
|
||||
1,2 All|
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
Reference in New Issue
Block a user