fix(highlight): refresh highlight attrs before message output #25737

Problem:
When MsgArea highlight is changed, the next message may flash
and disappear because msg_start() renders with stale highlight attributes.

msg_puts_len() uses HL_ATTR(HLF_MSG) to render message text, which
happens before update_screen() calls highlight_changed().
So the message is rendered with outdated attrs.

Solution:
Call highlight_changed() in msg_start().
This commit is contained in:
glepnir
2026-02-17 20:59:07 +08:00
committed by GitHub
parent 73c4472d4a
commit bd12aef784
5 changed files with 112 additions and 62 deletions

View File

@@ -40,7 +40,7 @@ local function test_embed(ext_linegrid)
startup('--cmd', 'echoerr invalid+')
screen:expect([[
|*4
{102: }|
{3: }|
{9:Error in pre-vimrc command line:} |
{9:E121: Undefined variable: invalid} |
{6:Press ENTER or type command to continue}^ |
@@ -74,7 +74,7 @@ local function test_embed(ext_linegrid)
screen:expect {
grid = [[
|*3
{102: }|
{3: }|
{9:Error in pre-vimrc command line:} |
{9:foo} |
{9:bar} |