mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
screen: screen_cleared is TriState
This commit is contained in:
parent
971e9370ad
commit
3f8ba68895
@ -191,7 +191,7 @@ 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 int screen_cleared INIT(= FALSE); /* screen has been cleared */
|
EXTERN TriState screen_cleared INIT(= kFalse); // screen has been cleared
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When '$' is included in 'cpoptions' option set:
|
* When '$' is included in 'cpoptions' option set:
|
||||||
|
@ -833,12 +833,13 @@ static void win_update(win_T *wp)
|
|||||||
type = VALID;
|
type = VALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Trick: we want to avoid clearing the screen twice. screenclear() will
|
// Trick: we want to avoid clearing the screen twice. screenclear() will
|
||||||
* set "screen_cleared" to TRUE. The special value MAYBE (which is still
|
// set "screen_cleared" to kTrue. The special value kNone (which is still
|
||||||
* non-zero and thus not FALSE) will indicate that screenclear() was not
|
// non-zero and thus not kFalse) will indicate that screenclear() was not
|
||||||
* called. */
|
// called.
|
||||||
if (screen_cleared)
|
if (screen_cleared) {
|
||||||
screen_cleared = MAYBE;
|
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,
|
||||||
@ -999,14 +1000,16 @@ static void win_update(win_T *wp)
|
|||||||
if (mid_start == 0) {
|
if (mid_start == 0) {
|
||||||
mid_end = wp->w_height;
|
mid_end = wp->w_height;
|
||||||
if (ONE_WINDOW) {
|
if (ONE_WINDOW) {
|
||||||
/* Clear the screen when it was not done by win_del_lines() or
|
// Clear the screen when it was not done by win_del_lines() or
|
||||||
* win_ins_lines() above, "screen_cleared" is FALSE or MAYBE
|
// win_ins_lines() above, "screen_cleared" is kFalse or kNone
|
||||||
* then. */
|
// then.
|
||||||
if (screen_cleared != TRUE)
|
if (screen_cleared != kTrue) {
|
||||||
screenclear();
|
screenclear();
|
||||||
/* The screen was cleared, redraw the tab pages line. */
|
}
|
||||||
if (redraw_tabline)
|
// The screen was cleared, redraw the tab pages line.
|
||||||
|
if (redraw_tabline) {
|
||||||
draw_tabline();
|
draw_tabline();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1014,8 +1017,9 @@ static void win_update(win_T *wp)
|
|||||||
* cleared (only happens for the first window) or when screenclear()
|
* cleared (only happens for the first window) or when screenclear()
|
||||||
* was called directly above, "must_redraw" will have been set to
|
* was called directly above, "must_redraw" will have been set to
|
||||||
* NOT_VALID, need to reset it here to avoid redrawing twice. */
|
* NOT_VALID, need to reset it here to avoid redrawing twice. */
|
||||||
if (screen_cleared == TRUE)
|
if (screen_cleared == kTrue) {
|
||||||
must_redraw = 0;
|
must_redraw = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Not VALID or INVERTED: redraw all lines. */
|
/* Not VALID or INVERTED: redraw all lines. */
|
||||||
mid_start = 0;
|
mid_start = 0;
|
||||||
@ -6068,7 +6072,7 @@ 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 = true; // can use contents of ScreenLines now
|
screen_cleared = kTrue; // can use contents of ScreenLines now
|
||||||
|
|
||||||
win_rest_invalid(firstwin);
|
win_rest_invalid(firstwin);
|
||||||
redraw_cmdline = TRUE;
|
redraw_cmdline = TRUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user