mirror of
https://github.com/vim/vim.git
synced 2025-09-30 04:44:14 -04:00
patch 8.2.1995: the popup menu can cause too much redrawing
Problem: The popup menu can cause too much redrawing. Solution: Reduce the length of the displayed text. (Yasuhiro Matsumoto, closes #7306)
This commit is contained in:
@@ -361,6 +361,8 @@ pum_display(
|
||||
// redo the positioning. Limit this to two times, when there is not
|
||||
// much room the window size will keep changing.
|
||||
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
|
||||
|
||||
pum_redraw();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -541,8 +543,23 @@ pum_redraw(void)
|
||||
{
|
||||
if (st != NULL)
|
||||
{
|
||||
screen_puts_len(st, (int)STRLEN(st), row, col,
|
||||
attr);
|
||||
int size = (int)STRLEN(st);
|
||||
int cells = (*mb_string2cells)(st, size);
|
||||
|
||||
// only draw the text that fits
|
||||
while (size > 0
|
||||
&& col + cells > pum_width + pum_col)
|
||||
{
|
||||
--size;
|
||||
if (has_mbyte)
|
||||
{
|
||||
size -= (*mb_head_off)(st, st + size);
|
||||
cells -= (*mb_ptr2cells)(st + size);
|
||||
}
|
||||
else
|
||||
--cells;
|
||||
}
|
||||
screen_puts_len(st, size, row, col, attr);
|
||||
vim_free(st);
|
||||
}
|
||||
col += width;
|
||||
@@ -990,9 +1007,6 @@ pum_set_selected(int n, int repeat UNUSED)
|
||||
popup_hide_info();
|
||||
#endif
|
||||
|
||||
if (!resized)
|
||||
pum_redraw();
|
||||
|
||||
return resized;
|
||||
}
|
||||
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1995,
|
||||
/**/
|
||||
1994,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user