aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-01-06 12:45:37 +0100
committerGitHub <noreply@github.com>2019-01-06 12:45:37 +0100
commit072448a2c98c7ac371b7b3398c4826fe5863f04c (patch)
treee21309a0f333baaefe0fec0bd5e478da35107309
parentf3d2d3c8144b8716f34f9237ac3a8d2dd6662a4d (diff)
parent624f5c8be38bda72e68c424001bdeacee88bc197 (diff)
downloadrneovim-072448a2c98c7ac371b7b3398c4826fe5863f04c.tar.gz
rneovim-072448a2c98c7ac371b7b3398c4826fe5863f04c.tar.bz2
rneovim-072448a2c98c7ac371b7b3398c4826fe5863f04c.zip
Merge #8604 from janlazo/vim-8.0.0286
-rw-r--r--src/nvim/screen.c55
1 files changed, 25 insertions, 30 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c
index 5166bc2e42..98b0378b18 100644
--- a/src/nvim/screen.c
+++ b/src/nvim/screen.c
@@ -477,6 +477,25 @@ void update_screen(int type)
}
+// Prepare for updating one or more windows.
+// Caller must check for "updating_screen" already set to avoid recursiveness.
+static void update_prepare(void)
+{
+ updating_screen = true;
+ start_search_hl();
+}
+
+// Finish updating one or more windows.
+static void update_finish(void)
+{
+ if (redraw_cmdline) {
+ showmode();
+ }
+
+ end_search_hl();
+ updating_screen = false;
+}
+
/*
* Return TRUE if the cursor line in window "wp" may be concealed, according
* to the 'concealcursor' option.
@@ -522,52 +541,28 @@ void update_single_line(win_T *wp, linenr_T lnum)
if (linebuf_char == NULL || updating_screen) {
return;
}
- updating_screen = true;
if (lnum >= wp->w_topline && lnum < wp->w_botline
&& foldedCount(wp, lnum, &win_foldinfo) == 0) {
+ update_prepare();
+
row = 0;
for (j = 0; j < wp->w_lines_valid; ++j) {
if (lnum == wp->w_lines[j].wl_lnum) {
init_search_hl(wp);
- start_search_hl();
prepare_search_hl(wp, lnum);
update_window_hl(wp, false);
// allocate window grid if not already
win_grid_alloc(wp);
win_line(wp, lnum, row, row + wp->w_lines[j].wl_size, false, false);
- end_search_hl();
break;
}
row += wp->w_lines[j].wl_size;
}
+
+ update_finish();
}
need_cursor_line_redraw = false;
- updating_screen = false;
-}
-
-
-/*
- * Prepare for updating one or more windows.
- * Caller must check for "updating_screen" already set to avoid recursiveness.
- */
-static void update_prepare(void)
-{
- updating_screen = TRUE;
- start_search_hl();
-}
-
-/*
- * Finish updating one or more windows.
- */
-static void update_finish(void)
-{
- if (redraw_cmdline) {
- showmode();
- }
-
- end_search_hl();
- updating_screen = FALSE;
}
void update_debug_sign(const buf_T *const buf, const linenr_T lnum)
@@ -2941,8 +2936,8 @@ win_line (
break;
}
- if (draw_state == WL_LINE && area_highlighting) {
- /* handle Visual or match highlighting in this line */
+ if (draw_state == WL_LINE && (area_highlighting || has_spell)) {
+ // handle Visual or match highlighting in this line
if (vcol == fromcol
|| (vcol + 1 == fromcol && n_extra == 0
&& utf_ptr2cells(ptr) > 1)