mirror of
https://github.com/neovim/neovim.git
synced 2025-10-06 09:56:31 +00:00
vim-patch:8.1.0822: peeking and flushing output slows down execution (#25629)
Problem: Peeking and flushing output slows down execution.
Solution: Do not update the mode message when global_busy is set. Do not
flush when only peeking for a character. (Ken Takata)
cb574f4154
This commit is contained in:
@@ -3287,5 +3287,5 @@ static void win_put_linebuf(win_T *wp, int row, int coloff, int endcol, int clea
|
||||
}
|
||||
|
||||
grid_adjust(&grid, &row, &coloff);
|
||||
grid_put_linebuf(grid, row, coloff, 0, endcol, clear_width, wp->w_p_rl, bg_attr, wrap, false);
|
||||
grid_put_linebuf(grid, row, coloff, 0, endcol, clear_width, wp->w_p_rl, bg_attr, wrap);
|
||||
}
|
||||
|
@@ -2861,8 +2861,10 @@ int inchar(uint8_t *buf, int maxlen, long wait_time)
|
||||
}
|
||||
|
||||
// Always flush the output characters when getting input characters
|
||||
// from the user.
|
||||
ui_flush();
|
||||
// from the user and not just peeking.
|
||||
if (wait_time == -1L || wait_time > 10L) {
|
||||
ui_flush();
|
||||
}
|
||||
|
||||
// Fill up to a third of the buffer, because each character may be
|
||||
// tripled below.
|
||||
|
@@ -481,11 +481,8 @@ void grid_line_flush(void)
|
||||
return;
|
||||
}
|
||||
|
||||
int row = grid_line_row;
|
||||
|
||||
bool invalid_row = grid != &default_grid && grid_invalid_row(grid, row) && grid_line_first == 0;
|
||||
grid_put_linebuf(grid, row, grid_line_coloff, grid_line_first, grid_line_last, grid_line_last,
|
||||
false, 0, false, invalid_row);
|
||||
grid_put_linebuf(grid, grid_line_row, grid_line_coloff, grid_line_first, grid_line_last,
|
||||
grid_line_last, false, 0, false);
|
||||
}
|
||||
|
||||
/// flush grid line but only if on a valid row
|
||||
@@ -620,7 +617,7 @@ static int grid_char_needs_redraw(ScreenGrid *grid, int col, size_t off_to, int
|
||||
/// If "wrap" is true, then hint to the UI that "row" contains a line
|
||||
/// which has wrapped into the next row.
|
||||
void grid_put_linebuf(ScreenGrid *grid, int row, int coloff, int col, int endcol, int clear_width,
|
||||
bool rl, int bg_attr, bool wrap, bool invalid_row)
|
||||
bool rl, int bg_attr, bool wrap)
|
||||
{
|
||||
bool redraw_next; // redraw_this for next character
|
||||
bool clear_next = false;
|
||||
@@ -639,6 +636,7 @@ void grid_put_linebuf(ScreenGrid *grid, int row, int coloff, int col, int endcol
|
||||
return;
|
||||
}
|
||||
|
||||
bool invalid_row = grid != &default_grid && grid_invalid_row(grid, row) && col == 0;
|
||||
size_t off_to = grid->line_offset[row] + (size_t)coloff;
|
||||
const size_t max_off_to = grid->line_offset[row] + (size_t)grid->cols;
|
||||
|
||||
|
Reference in New Issue
Block a user