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

@@ -1655,6 +1655,10 @@ void msg_start(void)
need_fileinfo = false;
}
if (need_highlight_changed) {
highlight_changed();
}
if (need_clr_eos || (p_ch == 0 && redrawing_cmdline)) {
// Halfway an ":echo" command and getting an (error) message: clear
// any text from the command.