aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/screen.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2018-08-14 02:17:05 +0200
committerGitHub <noreply@github.com>2018-08-14 02:17:05 +0200
commitbec5e4cb6183f3b403aca35ef55c3798a48dc64b (patch)
tree42553f509890440cf88995ed38c6c14e162bf33b /src/nvim/screen.c
parentee5cc88a73401e4352660862631117c8319950f7 (diff)
parentc6dd84e00b2860bb906d5fd61b8414620714594d (diff)
downloadrneovim-bec5e4cb6183f3b403aca35ef55c3798a48dc64b.tar.gz
rneovim-bec5e4cb6183f3b403aca35ef55c3798a48dc64b.tar.bz2
rneovim-bec5e4cb6183f3b403aca35ef55c3798a48dc64b.zip
Merge #8832 from eraserhd/vim-insert-setline-undo-fixes
Diffstat (limited to 'src/nvim/screen.c')
-rw-r--r--src/nvim/screen.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index f7fdc6060d..43ab9cd356 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -423,7 +423,7 @@ void update_screen(int type)
/* redraw status line after the window to minimize cursor movement */
if (wp->w_redr_status) {
- win_redr_status(wp);
+ win_redr_status(wp, true); // any popup menu will be redrawn below
}
}
end_search_hl();
@@ -589,7 +589,7 @@ void update_debug_sign(const buf_T *const buf, const linenr_T lnum)
win_update(wp);
}
if (wp->w_redr_status) {
- win_redr_status(wp);
+ win_redr_status(wp, false);
}
}
@@ -4542,7 +4542,7 @@ void redraw_statuslines(void)
{
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
if (wp->w_redr_status) {
- win_redr_status(wp);
+ win_redr_status(wp, false);
}
}
if (redraw_tabline)
@@ -4809,7 +4809,9 @@ win_redr_status_matches (
/// Redraw the status line of window `wp`.
///
/// If inversion is possible we use it. Else '=' characters are used.
-static void win_redr_status(win_T *wp)
+/// If "ignore_pum" is true, also redraw statusline when the popup menu is
+/// displayed.
+static void win_redr_status(win_T *wp, int ignore_pum)
{
int row;
char_u *p;
@@ -4832,7 +4834,7 @@ static void win_redr_status(win_T *wp)
if (wp->w_status_height == 0) {
// no status line, can only be last window
redraw_cmdline = true;
- } else if (!redrawing() || pum_drawn()) {
+ } else if (!redrawing() || (!ignore_pum && pum_drawn())) {
// Don't redraw right now, do it later. Don't update status line when
// popup menu is visible and may be drawn over it
wp->w_redr_status = true;