fix(ui2): dismiss msgs after mapped motions #41450

Problem:
Mapped keys can produce on_key callbacks with an empty `typed` value.
so mapped motions such as `j -> gj` are not recognized as typed input
and do not dismiss messages

Solution:
Track whether an empty `typed` callback follows typed input, allowing
mapped motions to dismiss messages like directly typed motions.
This commit is contained in:
not_compiled
2026-08-24 04:39:26 +05:30
committed by GitHub
parent 69bf8c7792
commit 716835c232
2 changed files with 8 additions and 2 deletions

View File

@@ -582,8 +582,8 @@ local typed_g = false
local function cmd_on_key(key, typed)
-- Don't dismiss for non-typed keys and mouse movement. When 'g' is passed (typed
-- or mapped), wait until the next key to avoid flickering when the pager is opened.
if typed == '' or (not typed_g and (typed == '<MouseMove>' or typed == 'g' or key == 'g')) then
typed_g = typed == 'g' or key == 'g'
if not typed_g and (typed == '' or (typed == '<MouseMove>' or typed == 'g' or key == 'g')) then
typed_g = typed ~= '' and (typed == 'g' or key == 'g')
return
end
if typed == ':' or ui.cmd.level > 0 or fn.getcmdtype() ~= '' then