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
|
// redo the positioning. Limit this to two times, when there is not
|
||||||
// much room the window size will keep changing.
|
// much room the window size will keep changing.
|
||||||
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
|
} while (pum_set_selected(selected, redo_count) && ++redo_count <= 2);
|
||||||
|
|
||||||
|
pum_redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -541,8 +543,23 @@ pum_redraw(void)
|
|||||||
{
|
{
|
||||||
if (st != NULL)
|
if (st != NULL)
|
||||||
{
|
{
|
||||||
screen_puts_len(st, (int)STRLEN(st), row, col,
|
int size = (int)STRLEN(st);
|
||||||
attr);
|
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);
|
vim_free(st);
|
||||||
}
|
}
|
||||||
col += width;
|
col += width;
|
||||||
@@ -990,9 +1007,6 @@ pum_set_selected(int n, int repeat UNUSED)
|
|||||||
popup_hide_info();
|
popup_hide_info();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!resized)
|
|
||||||
pum_redraw();
|
|
||||||
|
|
||||||
return resized;
|
return resized;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1995,
|
||||||
/**/
|
/**/
|
||||||
1994,
|
1994,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user