mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #8039 from bfredl/deadscreen
remove dead code in screen.c for terminals without scroll regions
This commit is contained in:
commit
471d6d4db5
@ -6445,64 +6445,11 @@ void setcursor(void)
|
||||
/// Returns FAIL if the lines are not inserted, OK for success.
|
||||
int win_ins_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
|
||||
{
|
||||
int did_delete;
|
||||
int nextrow;
|
||||
int lastrow;
|
||||
int retval;
|
||||
|
||||
if (invalid)
|
||||
wp->w_lines_valid = 0;
|
||||
|
||||
if (wp->w_height < 5)
|
||||
return FAIL;
|
||||
|
||||
if (line_count > wp->w_height - row)
|
||||
line_count = wp->w_height - row;
|
||||
|
||||
retval = win_do_lines(wp, row, line_count, mayclear, FALSE);
|
||||
if (retval != MAYBE)
|
||||
return retval;
|
||||
|
||||
/*
|
||||
* If there is a next window or a status line, we first try to delete the
|
||||
* lines at the bottom to avoid messing what is after the window.
|
||||
* If this fails and there are following windows, don't do anything to avoid
|
||||
* messing up those windows, better just redraw.
|
||||
*/
|
||||
did_delete = FALSE;
|
||||
if (wp->w_next != NULL || wp->w_status_height) {
|
||||
if (screen_del_lines(0, wp->w_winrow + wp->w_height - line_count,
|
||||
line_count, (int)Rows, NULL) == OK)
|
||||
did_delete = TRUE;
|
||||
else if (wp->w_next)
|
||||
return FAIL;
|
||||
}
|
||||
/*
|
||||
* if no lines deleted, blank the lines that will end up below the window
|
||||
*/
|
||||
if (!did_delete) {
|
||||
wp->w_redr_status = TRUE;
|
||||
redraw_cmdline = TRUE;
|
||||
nextrow = wp->w_winrow + wp->w_height + wp->w_status_height;
|
||||
lastrow = nextrow + line_count;
|
||||
if (lastrow > Rows)
|
||||
lastrow = Rows;
|
||||
screen_fill(nextrow - line_count, lastrow - line_count,
|
||||
wp->w_wincol, W_ENDCOL(wp),
|
||||
' ', ' ', 0);
|
||||
}
|
||||
|
||||
if (screen_ins_lines(0, wp->w_winrow + row, line_count, (int)Rows, NULL)
|
||||
== FAIL) {
|
||||
/* deletion will have messed up other windows */
|
||||
if (did_delete) {
|
||||
wp->w_redr_status = TRUE;
|
||||
win_rest_invalid(wp->w_next);
|
||||
}
|
||||
if (wp->w_height < 5) {
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
return OK;
|
||||
return win_do_lines(wp, row, line_count, invalid, mayclear, false);
|
||||
}
|
||||
|
||||
/// Delete "line_count" window lines at "row" in window "wp".
|
||||
@ -6512,47 +6459,18 @@ int win_ins_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
|
||||
/// Return OK for success, FAIL if the lines are not deleted.
|
||||
int win_del_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
|
||||
{
|
||||
int retval;
|
||||
|
||||
if (invalid)
|
||||
wp->w_lines_valid = 0;
|
||||
|
||||
if (line_count > wp->w_height - row)
|
||||
line_count = wp->w_height - row;
|
||||
|
||||
retval = win_do_lines(wp, row, line_count, mayclear, TRUE);
|
||||
if (retval != MAYBE)
|
||||
return retval;
|
||||
|
||||
if (screen_del_lines(0, wp->w_winrow + row, line_count,
|
||||
(int)Rows, NULL) == FAIL) {
|
||||
return FAIL;
|
||||
}
|
||||
|
||||
/*
|
||||
* If there are windows or status lines below, try to put them at the
|
||||
* correct place. If we can't do that, they have to be redrawn.
|
||||
*/
|
||||
if (wp->w_next || wp->w_status_height || cmdline_row < Rows - 1) {
|
||||
if (screen_ins_lines(0, wp->w_winrow + wp->w_height - line_count,
|
||||
line_count, (int)Rows, NULL) == FAIL) {
|
||||
wp->w_redr_status = TRUE;
|
||||
win_rest_invalid(wp->w_next);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* If this is the last window and there is no status line, redraw the
|
||||
* command line later.
|
||||
*/
|
||||
else
|
||||
redraw_cmdline = TRUE;
|
||||
return OK;
|
||||
return win_do_lines(wp, row, line_count, invalid, mayclear, true);
|
||||
}
|
||||
|
||||
// Common code for win_ins_lines() and win_del_lines().
|
||||
// Returns OK or FAIL when the work has been done.
|
||||
static int win_do_lines(win_T *wp, int row, int line_count, int mayclear, int del)
|
||||
static int win_do_lines(win_T *wp, int row, int line_count,
|
||||
int invalid, int mayclear, int del)
|
||||
{
|
||||
if (invalid) {
|
||||
wp->w_lines_valid = 0;
|
||||
}
|
||||
|
||||
if (!redrawing() || line_count <= 0) {
|
||||
return FAIL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user