Merge pull request #9143 from bfredl/nuclear

disable clearing almost everywhere, cleanup screen.c dead code
This commit is contained in:
Björn Linse
2018-10-22 14:53:45 +02:00
committed by GitHub
18 changed files with 119 additions and 185 deletions

View File

@@ -1645,9 +1645,6 @@ void listdigraphs(void)
os_breakcheck(); os_breakcheck();
dp++; dp++;
} }
// clear screen, because some digraphs may be wrong, in which case we messed
// up ScreenLines
must_redraw = CLEAR;
} }
static void printdigraph(digr_T *dp) static void printdigraph(digr_T *dp)

View File

@@ -208,8 +208,8 @@ void do_exmode(int improved)
return; return;
save_msg_scroll = msg_scroll; save_msg_scroll = msg_scroll;
++RedrawingDisabled; /* don't redisplay the window */ RedrawingDisabled++; // don't redisplay the window
++no_wait_return; /* don't wait for return */ no_wait_return++; // don't wait for return
MSG(_("Entering Ex mode. Type \"visual\" to go to Normal mode.")); MSG(_("Entering Ex mode. Type \"visual\" to go to Normal mode."));
while (exmode_active) { while (exmode_active) {
@@ -253,10 +253,11 @@ void do_exmode(int improved)
} }
} }
--RedrawingDisabled; RedrawingDisabled--;
--no_wait_return; no_wait_return--;
update_screen(CLEAR); redraw_all_later(NOT_VALID);
need_wait_return = FALSE; update_screen(NOT_VALID);
need_wait_return = false;
msg_scroll = save_msg_scroll; msg_scroll = save_msg_scroll;
} }
@@ -6857,7 +6858,8 @@ static void ex_tabs(exarg_T *eap)
static void ex_mode(exarg_T *eap) static void ex_mode(exarg_T *eap)
{ {
if (*eap->arg == NUL) { if (*eap->arg == NUL) {
ui_refresh(); must_redraw = CLEAR;
ex_redraw(eap);
} else { } else {
EMSG(_(e_screenmode)); EMSG(_(e_screenmode));
} }
@@ -6963,7 +6965,7 @@ do_exedit(
no_wait_return = 0; no_wait_return = 0;
need_wait_return = FALSE; need_wait_return = FALSE;
msg_scroll = 0; msg_scroll = 0;
must_redraw = CLEAR; redraw_all_later(NOT_VALID);
normal_enter(false, true); normal_enter(false, true);
@@ -7782,11 +7784,14 @@ static void ex_redraw(exarg_T *eap)
p_lz = FALSE; p_lz = FALSE;
validate_cursor(); validate_cursor();
update_topline(); update_topline();
update_screen(eap->forceit ? CLEAR : if (eap->forceit) {
VIsual_active ? INVERTED : redraw_all_later(NOT_VALID);
0); }
if (need_maketitle) update_screen(eap->forceit ? NOT_VALID
: VIsual_active ? INVERTED : 0);
if (need_maketitle) {
maketitle(); maketitle();
}
RedrawingDisabled = r; RedrawingDisabled = r;
p_lz = p; p_lz = p;

View File

@@ -214,8 +214,6 @@ static int hislen = 0; /* actual length of history tables */
/// user interrupting highlight function to not interrupt command-line. /// user interrupting highlight function to not interrupt command-line.
static bool getln_interrupted_highlight = false; static bool getln_interrupted_highlight = false;
static bool need_cursor_update = false;
#ifdef INCLUDE_GENERATED_DECLARATIONS #ifdef INCLUDE_GENERATED_DECLARATIONS
# include "ex_getln.c.generated.h" # include "ex_getln.c.generated.h"
@@ -3020,8 +3018,6 @@ void cmdline_screen_cleared(void)
} }
line = line->prev_ccline; line = line->prev_ccline;
} }
need_cursor_update = true;
} }
/// called by ui_flush, do what redraws neccessary to keep cmdline updated. /// called by ui_flush, do what redraws neccessary to keep cmdline updated.
@@ -3481,10 +3477,7 @@ static void cursorcmd(void)
if (ccline.redraw_state < kCmdRedrawPos) { if (ccline.redraw_state < kCmdRedrawPos) {
ccline.redraw_state = kCmdRedrawPos; ccline.redraw_state = kCmdRedrawPos;
} }
if (need_cursor_update) {
need_cursor_update = false;
setcursor(); setcursor();
}
return; return;
} }

View File

@@ -1602,7 +1602,7 @@ static void conv_to_pvim(void)
do_cmdline_cmd("%s/\201\231/\370\334/ge"); do_cmdline_cmd("%s/\201\231/\370\334/ge");
// Assume the screen has been messed up: clear it and redraw. // Assume the screen has been messed up: clear it and redraw.
redraw_later(CLEAR); redraw_later(NOT_VALID);
MSG_ATTR((const char *)farsi_text_1, HL_ATTR(HLF_S)); MSG_ATTR((const char *)farsi_text_1, HL_ATTR(HLF_S));
} }
@@ -1623,7 +1623,7 @@ static void conv_to_pstd(void)
} }
// Assume the screen has been messed up: clear it and redraw. // Assume the screen has been messed up: clear it and redraw.
redraw_later(CLEAR); redraw_later(NOT_VALID);
msg_attr((const char *)farsi_text_2, HL_ATTR(HLF_S)); msg_attr((const char *)farsi_text_2, HL_ATTR(HLF_S));
} }

View File

@@ -191,8 +191,6 @@ EXTERN int cmdline_star INIT(= FALSE); /* cmdline is crypted */
EXTERN int exec_from_reg INIT(= FALSE); /* executing register */ EXTERN int exec_from_reg INIT(= FALSE); /* executing register */
EXTERN TriState screen_cleared INIT(= kFalse); // screen has been cleared
/* /*
* When '$' is included in 'cpoptions' option set: * When '$' is included in 'cpoptions' option set:
* When a change command is given that deletes only part of a line, a dollar * When a change command is given that deletes only part of a line, a dollar

View File

@@ -832,12 +832,11 @@ void msg_end_prompt(void)
lines_left = -1; lines_left = -1;
} }
/* /// wait for the user to hit a key (normally a return)
* wait for the user to hit a key (normally a return) ///
* if 'redraw' is TRUE, clear and redraw the screen /// if 'redraw' is true, redraw the entire screen NOT_VALID
* if 'redraw' is FALSE, just redraw the screen /// if 'redraw' is false, do a normal redraw
* if 'redraw' is -1, don't redraw at all /// if 'redraw' is -1, don't redraw at all
*/
void wait_return(int redraw) void wait_return(int redraw)
{ {
int c; int c;
@@ -847,8 +846,9 @@ void wait_return(int redraw)
int save_Recording; int save_Recording;
FILE *save_scriptout; FILE *save_scriptout;
if (redraw == TRUE) if (redraw == true) {
must_redraw = CLEAR; redraw_all_later(NOT_VALID);
}
/* If using ":silent cmd", don't wait for a return. Also don't set /* If using ":silent cmd", don't wait for a return. Also don't set
* need_wait_return to do it later. */ * need_wait_return to do it later. */

View File

@@ -918,9 +918,9 @@ void curs_columns(
extra = ((int)prev_skipcol - (int)curwin->w_skipcol) / width; extra = ((int)prev_skipcol - (int)curwin->w_skipcol) / width;
if (extra > 0) { if (extra > 0) {
win_ins_lines(curwin, 0, extra, false, false); win_ins_lines(curwin, 0, extra, false);
} else if (extra < 0) { } else if (extra < 0) {
win_del_lines(curwin, 0, -extra, false, false); win_del_lines(curwin, 0, -extra, false);
} }
} else { } else {
curwin->w_skipcol = 0; curwin->w_skipcol = 0;

View File

@@ -3980,8 +3980,8 @@ static char *set_bool_option(const int opt_idx, char_u *const varp,
/* Enable Arabic shaping (major part of what Arabic requires) */ /* Enable Arabic shaping (major part of what Arabic requires) */
if (!p_arshape) { if (!p_arshape) {
p_arshape = TRUE; p_arshape = true;
redraw_later_clear(); redraw_all_later(NOT_VALID);
} }
} }

View File

@@ -68,7 +68,7 @@ return {
type='bool', scope={'global'}, type='bool', scope={'global'},
vi_def=true, vi_def=true,
vim=true, vim=true,
redraw={'everything', 'ui_option'}, redraw={'all_windows', 'ui_option'},
varname='p_arshape', varname='p_arshape',
defaults={if_true={vi=true}} defaults={if_true={vi=true}}
@@ -92,7 +92,7 @@ return {
full_name='ambiwidth', abbreviation='ambw', full_name='ambiwidth', abbreviation='ambw',
type='string', scope={'global'}, type='string', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything', 'ui_option'}, redraw={'all_windows', 'ui_option'},
varname='p_ambw', varname='p_ambw',
defaults={if_true={vi="single"}} defaults={if_true={vi="single"}}
}, },
@@ -133,7 +133,7 @@ return {
full_name='background', abbreviation='bg', full_name='background', abbreviation='bg',
type='string', scope={'global'}, type='string', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything'}, redraw={'all_windows'},
varname='p_bg', varname='p_bg',
defaults={if_true={vi="light"}} defaults={if_true={vi="light"}}
}, },
@@ -662,7 +662,7 @@ return {
full_name='emoji', abbreviation='emo', full_name='emoji', abbreviation='emo',
type='bool', scope={'global'}, type='bool', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything', 'ui_option'}, redraw={'all_windows', 'ui_option'},
varname='p_emoji', varname='p_emoji',
defaults={if_true={vi=true}} defaults={if_true={vi=true}}
}, },
@@ -671,7 +671,6 @@ return {
type='string', scope={'global'}, type='string', scope={'global'},
deny_in_modelines=true, deny_in_modelines=true,
vi_def=true, vi_def=true,
redraw={'everything'},
varname='p_enc', varname='p_enc',
defaults={if_true={vi=macros('ENC_DFLT')}} defaults={if_true={vi=macros('ENC_DFLT')}}
}, },
@@ -1023,7 +1022,7 @@ return {
deny_duplicates=true, deny_duplicates=true,
vi_def=true, vi_def=true,
varname='p_guifont', varname='p_guifont',
redraw={'everything', 'ui_option'}, redraw={'ui_option'},
defaults={if_true={vi=""}} defaults={if_true={vi=""}}
}, },
{ {
@@ -1031,7 +1030,7 @@ return {
type='string', list='onecomma', scope={'global'}, type='string', list='onecomma', scope={'global'},
vi_def=true, vi_def=true,
varname='p_guifontset', varname='p_guifontset',
redraw={'everything', 'ui_option'}, redraw={'ui_option'},
defaults={if_true={vi=""}} defaults={if_true={vi=""}}
}, },
{ {
@@ -1039,7 +1038,7 @@ return {
type='string', list='onecomma', scope={'global'}, type='string', list='onecomma', scope={'global'},
deny_duplicates=true, deny_duplicates=true,
vi_def=true, vi_def=true,
redraw={'everything', 'ui_option'}, redraw={'ui_option'},
varname='p_guifontwide', varname='p_guifontwide',
defaults={if_true={vi=""}} defaults={if_true={vi=""}}
}, },
@@ -1099,7 +1098,6 @@ return {
type='string', list='onecomma', scope={'global'}, type='string', list='onecomma', scope={'global'},
deny_duplicates=true, deny_duplicates=true,
vi_def=true, vi_def=true,
redraw={'everything'},
varname='p_hl', varname='p_hl',
defaults={if_true={vi=macros('HIGHLIGHT_INIT')}} defaults={if_true={vi=macros('HIGHLIGHT_INIT')}}
}, },
@@ -1195,7 +1193,7 @@ return {
full_name='inccommand', abbreviation='icm', full_name='inccommand', abbreviation='icm',
type='string', scope={'global'}, type='string', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything'}, redraw={'all_windows'},
varname='p_icm', varname='p_icm',
defaults={if_true={vi=""}} defaults={if_true={vi=""}}
}, },
@@ -1399,7 +1397,7 @@ return {
full_name='linespace', abbreviation='lsp', full_name='linespace', abbreviation='lsp',
type='number', scope={'global'}, type='number', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything', 'ui_option'}, redraw={'ui_option'},
varname='p_linespace', varname='p_linespace',
defaults={if_true={vi=0}} defaults={if_true={vi=0}}
}, },
@@ -2428,7 +2426,6 @@ return {
full_name='termencoding', abbreviation='tenc', full_name='termencoding', abbreviation='tenc',
type='string', scope={'global'}, type='string', scope={'global'},
vi_def=true, vi_def=true,
redraw={'everything'},
defaults={if_true={vi=""}} defaults={if_true={vi=""}}
}, },
{ {

View File

@@ -167,12 +167,6 @@ void redraw_win_later(win_T *wp, int type)
} }
} }
/// Forces a complete redraw later. Also resets the highlighting.
void redraw_later_clear(void)
{
redraw_all_later(CLEAR);
}
/* /*
* Mark all windows to be redrawn later. * Mark all windows to be redrawn later.
*/ */
@@ -845,14 +839,6 @@ static void win_update(win_T *wp)
type = VALID; type = VALID;
} }
// Trick: we want to avoid clearing the screen twice. screenclear() will
// set "screen_cleared" to kTrue. The special value kNone (which is still
// non-zero and thus not kFalse) will indicate that screenclear() was not
// called.
if (screen_cleared) {
screen_cleared = kNone;
}
/* /*
* If there are no changes on the screen that require a complete redraw, * If there are no changes on the screen that require a complete redraw,
* handle three cases: * handle three cases:
@@ -898,15 +884,14 @@ static void win_update(win_T *wp)
if (wp->w_lines[0].wl_lnum != wp->w_topline) if (wp->w_lines[0].wl_lnum != wp->w_topline)
i += diff_check_fill(wp, wp->w_lines[0].wl_lnum) i += diff_check_fill(wp, wp->w_lines[0].wl_lnum)
- wp->w_old_topfill; - wp->w_old_topfill;
if (i < wp->w_height - 2) { /* less than a screen off */ if (i < wp->w_height - 2) { // less than a screen off
/* // Try to insert the correct number of lines.
* Try to insert the correct number of lines. // If not the last window, delete the lines at the bottom.
* If not the last window, delete the lines at the bottom. // win_ins_lines may fail when the terminal can't do it.
* win_ins_lines may fail when the terminal can't do it. if (i > 0) {
*/ check_for_delay(false);
if (i > 0) }
check_for_delay(FALSE); if (win_ins_lines(wp, 0, i, false) == OK) {
if (win_ins_lines(wp, 0, i, FALSE, wp == firstwin) == OK) {
if (wp->w_lines_valid != 0) { if (wp->w_lines_valid != 0) {
/* Need to update rows that are new, stop at the /* Need to update rows that are new, stop at the
* first one that scrolled down. */ * first one that scrolled down. */
@@ -964,11 +949,12 @@ static void win_update(win_T *wp)
/* ... but don't delete new filler lines. */ /* ... but don't delete new filler lines. */
row -= wp->w_topfill; row -= wp->w_topfill;
if (row > 0) { if (row > 0) {
check_for_delay(FALSE); check_for_delay(false);
if (win_del_lines(wp, 0, row, FALSE, wp == firstwin) == OK) if (win_del_lines(wp, 0, row, false) == OK) {
bot_start = wp->w_height - row; bot_start = wp->w_height - row;
else } else {
mid_start = 0; /* redraw all lines */ mid_start = 0; // redraw all lines
}
} }
if ((row == 0 || bot_start < 999) && wp->w_lines_valid != 0) { if ((row == 0 || bot_start < 999) && wp->w_lines_valid != 0) {
/* /*
@@ -1006,31 +992,9 @@ static void win_update(win_T *wp)
} }
} }
/* When starting redraw in the first line, redraw all lines. When // When starting redraw in the first line, redraw all lines.
* there is only one window it's probably faster to clear the screen
* first. */
if (mid_start == 0) { if (mid_start == 0) {
mid_end = wp->w_height; mid_end = wp->w_height;
if (ONE_WINDOW) {
// Clear the screen when it was not done by win_del_lines() or
// win_ins_lines() above, "screen_cleared" is kFalse or kNone
// then.
if (screen_cleared != kTrue) {
screenclear();
}
// The screen was cleared, redraw the tab pages line.
if (redraw_tabline) {
draw_tabline();
}
}
}
/* When win_del_lines() or win_ins_lines() caused the screen to be
* cleared (only happens for the first window) or when screenclear()
* was called directly above, "must_redraw" will have been set to
* NOT_VALID, need to reset it here to avoid redrawing twice. */
if (screen_cleared == kTrue) {
must_redraw = 0;
} }
} else { } else {
/* Not VALID or INVERTED: redraw all lines. */ /* Not VALID or INVERTED: redraw all lines. */
@@ -1338,33 +1302,33 @@ static void win_update(win_T *wp)
* remaining text or scrolling fails, must redraw the * remaining text or scrolling fails, must redraw the
* rest. If scrolling works, must redraw the text * rest. If scrolling works, must redraw the text
* below the scrolled text. */ * below the scrolled text. */
if (row - xtra_rows >= wp->w_height - 2) if (row - xtra_rows >= wp->w_height - 2) {
mod_bot = MAXLNUM; mod_bot = MAXLNUM;
else { } else {
check_for_delay(FALSE); check_for_delay(false);
if (win_del_lines(wp, row, if (win_del_lines(wp, row, -xtra_rows, false) == FAIL) {
-xtra_rows, FALSE, FALSE) == FAIL)
mod_bot = MAXLNUM; mod_bot = MAXLNUM;
else } else {
bot_start = wp->w_height + xtra_rows; bot_start = wp->w_height + xtra_rows;
} }
}
} else if (xtra_rows > 0) { } else if (xtra_rows > 0) {
/* May scroll text down. If there is not enough /* May scroll text down. If there is not enough
* remaining text of scrolling fails, must redraw the * remaining text of scrolling fails, must redraw the
* rest. */ * rest. */
if (row + xtra_rows >= wp->w_height - 2) if (row + xtra_rows >= wp->w_height - 2) {
mod_bot = MAXLNUM; mod_bot = MAXLNUM;
else { } else {
check_for_delay(FALSE); check_for_delay(false);
if (win_ins_lines(wp, row + old_rows, if (win_ins_lines(wp, row + old_rows, xtra_rows, false) == FAIL) {
xtra_rows, FALSE, FALSE) == FAIL)
mod_bot = MAXLNUM; mod_bot = MAXLNUM;
else if (top_end > row + old_rows) } else if (top_end > row + old_rows) {
/* Scrolled the part at the top that requires // Scrolled the part at the top that requires
* updating down. */ // updating down.
top_end += xtra_rows; top_end += xtra_rows;
} }
} }
}
/* When not updating the rest, may need to move w_lines[] /* When not updating the rest, may need to move w_lines[]
* entries. */ * entries. */
@@ -6137,19 +6101,19 @@ static void screenclear2(void)
ui_call_grid_clear(1); // clear the display ui_call_grid_clear(1); // clear the display
clear_cmdline = false; clear_cmdline = false;
mode_displayed = false; mode_displayed = false;
screen_cleared = kTrue; // can use contents of ScreenLines now
win_rest_invalid(firstwin); redraw_all_later(NOT_VALID);
redraw_cmdline = TRUE; redraw_cmdline = true;
redraw_tabline = TRUE; redraw_tabline = true;
if (must_redraw == CLEAR) /* no need to clear again */ if (must_redraw == CLEAR) {
must_redraw = NOT_VALID; must_redraw = NOT_VALID; // no need to clear again
}
compute_cmdrow(); compute_cmdrow();
msg_row = cmdline_row; /* put cursor on last line for messages */ msg_row = cmdline_row; // put cursor on last line for messages
msg_col = 0; msg_col = 0;
msg_scrolled = 0; /* can't scroll back */ msg_scrolled = 0; // can't scroll back
msg_didany = FALSE; msg_didany = false;
msg_didout = FALSE; msg_didout = false;
} }
/* /*
@@ -6200,13 +6164,13 @@ void setcursor(void)
/// If 'mayclear' is TRUE the screen will be cleared if it is faster than /// If 'mayclear' is TRUE the screen will be cleared if it is faster than
/// scrolling. /// scrolling.
/// Returns FAIL if the lines are not inserted, OK for success. /// 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 win_ins_lines(win_T *wp, int row, int line_count, int invalid)
{ {
if (wp->w_height < 5) { if (wp->w_height < 5) {
return FAIL; return FAIL;
} }
return win_do_lines(wp, row, line_count, invalid, mayclear, false); return win_do_lines(wp, row, line_count, invalid, false);
} }
/// Delete "line_count" window lines at "row" in window "wp". /// Delete "line_count" window lines at "row" in window "wp".
@@ -6214,15 +6178,15 @@ int win_ins_lines(win_T *wp, int row, int line_count, int invalid, int mayclear)
/// If "mayclear" is TRUE the screen will be cleared if it is faster than /// If "mayclear" is TRUE the screen will be cleared if it is faster than
/// scrolling /// scrolling
/// Return OK for success, FAIL if the lines are not deleted. /// 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 win_del_lines(win_T *wp, int row, int line_count, int invalid)
{ {
return win_do_lines(wp, row, line_count, invalid, mayclear, true); return win_do_lines(wp, row, line_count, invalid, true);
} }
// Common code for win_ins_lines() and win_del_lines(). // Common code for win_ins_lines() and win_del_lines().
// Returns OK or FAIL when the work has been done. // Returns OK or FAIL when the work has been done.
static int win_do_lines(win_T *wp, int row, int line_count, static int win_do_lines(win_T *wp, int row, int line_count,
int invalid, int mayclear, int del) int invalid, int del)
{ {
if (invalid) { if (invalid) {
wp->w_lines_valid = 0; wp->w_lines_valid = 0;
@@ -6232,12 +6196,6 @@ static int win_do_lines(win_T *wp, int row, int line_count,
return FAIL; return FAIL;
} }
// only a few lines left: redraw is faster
if (mayclear && Rows - line_count < 5 && wp->w_width == Columns) {
screenclear(); /* will set wp->w_lines_valid to 0 */
return FAIL;
}
// Delete all remaining lines // Delete all remaining lines
if (row + line_count >= wp->w_height) { if (row + line_count >= wp->w_height) {
screen_fill(wp->w_winrow + row, wp->w_winrow + wp->w_height, screen_fill(wp->w_winrow + row, wp->w_winrow + wp->w_height,
@@ -6263,19 +6221,6 @@ static int win_do_lines(win_T *wp, int row, int line_count,
return retval; return retval;
} }
/*
* window 'wp' and everything after it is messed up, mark it for redraw
*/
static void win_rest_invalid(win_T *wp)
{
while (wp != NULL) {
redraw_win_later(wp, NOT_VALID);
wp->w_redr_status = TRUE;
wp = wp->w_next;
}
redraw_cmdline = TRUE;
}
/* /*
* The rest of the routines in this file perform screen manipulations. The * The rest of the routines in this file perform screen manipulations. The
* given operation is performed physically on the screen. The corresponding * given operation is performed physically on the screen. The corresponding

View File

@@ -6566,7 +6566,7 @@ void do_highlight(const char *line, const bool forceit, const bool init)
} }
init_highlight(true, true); init_highlight(true, true);
highlight_changed(); highlight_changed();
redraw_later_clear(); redraw_all_later(NOT_VALID);
return; return;
} }
name_end = (const char *)skiptowhite((const char_u *)line); name_end = (const char *)skiptowhite((const char_u *)line);

View File

@@ -1265,7 +1265,8 @@ static void win_exchange(long Prenum)
(void)win_comp_pos(); /* recompute window positions */ (void)win_comp_pos(); /* recompute window positions */
win_enter(wp, true); win_enter(wp, true);
redraw_later(CLEAR); redraw_later(NOT_VALID);
redraw_win_later(wp, NOT_VALID);
} }
/* /*
@@ -1340,7 +1341,7 @@ static void win_rotate(int upwards, int count)
(void)win_comp_pos(); (void)win_comp_pos();
} }
redraw_later(CLEAR); redraw_all_later(NOT_VALID);
} }
/* /*
@@ -1477,10 +1478,10 @@ static void win_equal_rec(
|| topfr->fr_width != width || topfr->fr_win->w_wincol != col || topfr->fr_width != width || topfr->fr_win->w_wincol != col
) { ) {
topfr->fr_win->w_winrow = row; topfr->fr_win->w_winrow = row;
frame_new_height(topfr, height, FALSE, FALSE); frame_new_height(topfr, height, false, false);
topfr->fr_win->w_wincol = col; topfr->fr_win->w_wincol = col;
frame_new_width(topfr, width, FALSE, FALSE); frame_new_width(topfr, width, false, false);
redraw_all_later(CLEAR); redraw_all_later(NOT_VALID);
} }
} else if (topfr->fr_layout == FR_ROW) { } else if (topfr->fr_layout == FR_ROW) {
topfr->fr_width = width; topfr->fr_width = width;
@@ -3105,7 +3106,7 @@ int win_new_tabpage(int after, char_u *filename)
newtp->tp_topframe = topframe; newtp->tp_topframe = topframe;
last_status(FALSE); last_status(FALSE);
redraw_all_later(CLEAR); redraw_all_later(NOT_VALID);
apply_autocmds(EVENT_WINNEW, NULL, NULL, false, curbuf); apply_autocmds(EVENT_WINNEW, NULL, NULL, false, curbuf);
apply_autocmds(EVENT_WINENTER, NULL, NULL, false, curbuf); apply_autocmds(EVENT_WINENTER, NULL, NULL, false, curbuf);
@@ -3310,10 +3311,9 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, int trigger_enter_au
trigger_enter_autocmds, trigger_leave_autocmds); trigger_enter_autocmds, trigger_leave_autocmds);
prevwin = next_prevwin; prevwin = next_prevwin;
last_status(FALSE); /* status line may appear or disappear */ last_status(false); // status line may appear or disappear
(void)win_comp_pos(); /* recompute w_winrow for all windows */ (void)win_comp_pos(); // recompute w_winrow for all windows
must_redraw = CLEAR; /* need to redraw everything */ diff_need_scrollbind = true;
diff_need_scrollbind = TRUE;
/* The tabpage line may have appeared or disappeared, may need to resize /* The tabpage line may have appeared or disappeared, may need to resize
* the frames for that. When the Vim window was resized need to update * the frames for that. When the Vim window was resized need to update
@@ -3335,7 +3335,7 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, int trigger_enter_au
apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf); apply_autocmds(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf);
} }
redraw_all_later(CLEAR); redraw_all_later(NOT_VALID);
} }
/* /*
@@ -5443,7 +5443,7 @@ restore_snapshot (
win_comp_pos(); win_comp_pos();
if (wp != NULL && close_curwin) if (wp != NULL && close_curwin)
win_goto(wp); win_goto(wp);
redraw_all_later(CLEAR); redraw_all_later(NOT_VALID);
} }
clear_snapshot(curtab, idx); clear_snapshot(curtab, idx);
} }

View File

@@ -149,7 +149,7 @@ describe('input()', function()
{EOB:~ }| {EOB:~ }|
{T:Foo>}Bar^ | {T:Foo>}Bar^ |
]]) ]])
command('redraw!') command('mode')
screen:expect{grid=[[ screen:expect{grid=[[
| |
{EOB:~ }| {EOB:~ }|
@@ -165,7 +165,7 @@ describe('input()', function()
{EOB:~ }| {EOB:~ }|
{T:Foo>}Ba^ | {T:Foo>}Ba^ |
]]) ]])
command('redraw!') command('mode')
screen:expect{grid=[[ screen:expect{grid=[[
| |
{EOB:~ }| {EOB:~ }|
@@ -347,7 +347,7 @@ describe('inputdialog()', function()
{EOB:~ }| {EOB:~ }|
{T:Foo>}Bar^ | {T:Foo>}Bar^ |
]]) ]])
command('redraw!') command('mode')
screen:expect{grid=[[ screen:expect{grid=[[
| |
{EOB:~ }| {EOB:~ }|
@@ -363,7 +363,7 @@ describe('inputdialog()', function()
{EOB:~ }| {EOB:~ }|
{T:Foo>}Ba^ | {T:Foo>}Ba^ |
]]) ]])
command('redraw!') command('mode')
screen:expect{grid=[[ screen:expect{grid=[[
| |
{EOB:~ }| {EOB:~ }|

View File

@@ -32,7 +32,7 @@ before_each(function()
highlight RBP4 guibg=Blue highlight RBP4 guibg=Blue
let g:NUM_LVLS = 4 let g:NUM_LVLS = 4
function Redraw() function Redraw()
redraw! mode
return '' return ''
endfunction endfunction
let g:id = '' let g:id = ''

View File

@@ -253,7 +253,7 @@ local function test_cmdline(linegrid)
]], cmdline=expectation} ]], cmdline=expectation}
-- erase information, so we check if it is retransmitted -- erase information, so we check if it is retransmitted
command("redraw!") command("mode")
screen:expect{grid=[[ screen:expect{grid=[[
^ | ^ |
{1:~ }| {1:~ }|
@@ -320,7 +320,7 @@ local function test_cmdline(linegrid)
{{' line1'}}, {{' line1'}},
}} }}
command("redraw!") command("mode")
screen:expect{grid=[[ screen:expect{grid=[[
^ | ^ |
{1:~ }| {1:~ }|
@@ -411,7 +411,7 @@ local function test_cmdline(linegrid)
pos = 4, pos = 4,
}}} }}}
command("redraw!") command("mode")
screen:expect{grid=[[ screen:expect{grid=[[
| |
{2:[No Name] }| {2:[No Name] }|
@@ -435,9 +435,9 @@ local function test_cmdline(linegrid)
feed("<c-c>") feed("<c-c>")
screen:expect{grid=[[ screen:expect{grid=[[
| ^ |
{2:[No Name] }| {2:[No Name] }|
{1::}make^ | {1::}make |
{3:[Command Line] }| {3:[Command Line] }|
| |
]], cmdline={{ ]], cmdline={{
@@ -446,7 +446,6 @@ local function test_cmdline(linegrid)
pos = 4, pos = 4,
}}} }}}
screen.cmdline = {}
command("redraw!") command("redraw!")
screen:expect{grid=[[ screen:expect{grid=[[
^ | ^ |

View File

@@ -65,7 +65,7 @@ describe("folded lines", function()
{1:~ }| {1:~ }|
{1:~ }| {1:~ }|
{1:~ }| {1:~ }|
| :set noarabicshape |
]]) ]])
feed_command("set number foldcolumn=2") feed_command("set number foldcolumn=2")
@@ -114,7 +114,7 @@ describe("folded lines", function()
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
| :set arabicshape |
]]) ]])
feed('zo') feed('zo')
@@ -126,7 +126,7 @@ describe("folded lines", function()
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
| :set arabicshape |
]]) ]])
feed_command('set noarabicshape') feed_command('set noarabicshape')
@@ -138,7 +138,7 @@ describe("folded lines", function()
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
{1: ~}| {1: ~}|
| :set noarabicshape |
]]) ]])
end) end)

View File

@@ -122,7 +122,7 @@ describe('highlight defaults', function()
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{2:[No Name] }| {2:[No Name] }|
| :vsp |
]]) ]])
-- navigate to verify that the attributes are properly moved -- navigate to verify that the attributes are properly moved
feed('<c-w>j') feed('<c-w>j')
@@ -140,7 +140,7 @@ describe('highlight defaults', function()
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{1:[No Name] }| {1:[No Name] }|
| :vsp |
]]) ]])
-- note that when moving to a window with small width nvim will increase -- note that when moving to a window with small width nvim will increase
-- the width of the new active window at the expense of a inactive window -- the width of the new active window at the expense of a inactive window
@@ -160,7 +160,7 @@ describe('highlight defaults', function()
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{2:[No Name] }| {2:[No Name] }|
| :vsp |
]]) ]])
feed('<c-w>l') feed('<c-w>l')
screen:expect([[ screen:expect([[
@@ -177,7 +177,7 @@ describe('highlight defaults', function()
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{2:[No Name] }| {2:[No Name] }|
| :vsp |
]]) ]])
feed('<c-w>h<c-w>h') feed('<c-w>h<c-w>h')
screen:expect([[ screen:expect([[
@@ -194,7 +194,7 @@ describe('highlight defaults', function()
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
{2:[No Name] }| {2:[No Name] }|
| :vsp |
]]) ]])
end) end)

View File

@@ -530,7 +530,7 @@ describe('ui/mouse/input', function()
mouse | mouse |
support and selectio^n | support and selectio^n |
{0:~ }| {0:~ }|
| :tabprevious |
]]) ]])
feed('<LeftMouse><10,0><LeftRelease>') -- go to second tab feed('<LeftMouse><10,0><LeftRelease>') -- go to second tab
helpers.wait() helpers.wait()
@@ -540,7 +540,7 @@ describe('ui/mouse/input', function()
^this is bar | ^this is bar |
{0:~ }| {0:~ }|
{0:~ }| {0:~ }|
| :tabprevious |
]]) ]])
feed('<LeftDrag><4,1>') feed('<LeftDrag><4,1>')
screen:expect([[ screen:expect([[