0
0
mirror of https://github.com/vim/vim.git synced 2025-10-29 09:37:35 -04:00

patch 9.1.1136: Match highlighting marks a buffer region as changed

Problem:  Match highlighting marks a buffer region to be redrawn as if
          its buffer text was changed, unnecessarily invoking syntax code.
Solution: Set the `w_redraw_top/bot` variables instead of the b_mod_* ones
          (Luuk van Baal)

closes: #16697

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Luuk van Baal
2025-02-22 09:19:04 +01:00
committed by Christian Brabandt
parent bf595ae4ac
commit 7bbb0f357e
5 changed files with 23 additions and 39 deletions

View File

@@ -187,20 +187,7 @@ match_add(
// Calculate top and bottom lines for redrawing area
if (toplnum != 0)
{
if (wp->w_buffer->b_mod_set)
{
if (wp->w_buffer->b_mod_top > toplnum)
wp->w_buffer->b_mod_top = toplnum;
if (wp->w_buffer->b_mod_bot < botlnum)
wp->w_buffer->b_mod_bot = botlnum;
}
else
{
wp->w_buffer->b_mod_set = TRUE;
wp->w_buffer->b_mod_top = toplnum;
wp->w_buffer->b_mod_bot = botlnum;
wp->w_buffer->b_mod_xlines = 0;
}
redraw_win_range_later(wp, toplnum, botlnum);
m->mit_toplnum = toplnum;
m->mit_botlnum = botlnum;
rtype = UPD_VALID;
@@ -269,20 +256,7 @@ match_delete(win_T *wp, int id, int perr)
vim_free(cur->mit_pattern);
if (cur->mit_toplnum != 0)
{
if (wp->w_buffer->b_mod_set)
{
if (wp->w_buffer->b_mod_top > cur->mit_toplnum)
wp->w_buffer->b_mod_top = cur->mit_toplnum;
if (wp->w_buffer->b_mod_bot < cur->mit_botlnum)
wp->w_buffer->b_mod_bot = cur->mit_botlnum;
}
else
{
wp->w_buffer->b_mod_set = TRUE;
wp->w_buffer->b_mod_top = cur->mit_toplnum;
wp->w_buffer->b_mod_bot = cur->mit_botlnum;
wp->w_buffer->b_mod_xlines = 0;
}
redraw_win_range_later(wp, cur->mit_toplnum, cur->mit_botlnum);
rtype = UPD_VALID;
}
vim_free(cur->mit_pos_array);