summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-12-16 16:33:44 +0100
committerBram Moolenaar <Bram@vim.org>2017-12-16 16:33:44 +0100
commit6621605eb97cf5fbc481282fd4d349a76e168f16 (patch)
treea987db3257da14c08cba740c01682b6ca9446202 /src
parent8b42328cef294a5d6059ee7c452da75b845f6f8c (diff)
patch 8.0.1393: too much highlighting with 'hlsearch' and 'incsearch' setv8.0.1393
Problem: Too much highlighting with 'hlsearch' and 'incsearch' set. Solution: Do not highlight matches when the pattern matches everything.
Diffstat (limited to 'src')
-rw-r--r--src/ex_getln.c21
-rw-r--r--src/version.c2
2 files changed, 23 insertions, 0 deletions
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 4202b036e4..7c553e42e2 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -173,6 +173,22 @@ abandon_cmdline(void)
}
/*
+ * Guess that the pattern matches everything. Only finds specific cases, such
+ * as a trailing \|, which can happen while typing a pattern.
+ */
+ static int
+empty_pattern(char_u *p)
+{
+ int n = STRLEN(p);
+
+ /* remove trailing \v and the like */
+ while (n >= 2 && p[n - 2] == '\\'
+ && vim_strchr((char_u *)"mMvVcCZ", p[n - 1]) != NULL)
+ n -= 2;
+ return n == 0 || (n >= 2 && p[n - 2] == '\\' && p[n - 1] == '|');
+}
+
+/*
* getcmdline() - accept a command line starting with firstc.
*
* firstc == ':' get ":" command line.
@@ -2023,6 +2039,11 @@ cmdline_changed:
else
end_pos = curwin->w_cursor; /* shutup gcc 4 */
+ /* Disable 'hlsearch' highlighting if the pattern matches
+ * everything. Avoids a flash when typing "foo\|". */
+ if (empty_pattern(ccline.cmdbuff))
+ SET_NO_HLSEARCH(TRUE);
+
validate_cursor();
/* May redraw the status line to show the cursor position. */
if (p_ru && curwin->w_status_height > 0)
diff --git a/src/version.c b/src/version.c
index ab1f816274..4b18f63ad2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1393,
+/**/
1392,
/**/
1391,