changeset 13035:89e191a2a8a7 v8.0.1393

patch 8.0.1393: too much highlighting with 'hlsearch' and 'incsearch' set commit https://github.com/vim/vim/commit/6621605eb97cf5fbc481282fd4d349a76e168f16 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Dec 16 16:33:44 2017 +0100 patch 8.0.1393: too much highlighting with 'hlsearch' and 'incsearch' set Problem: Too much highlighting with 'hlsearch' and 'incsearch' set. Solution: Do not highlight matches when the pattern matches everything.
author Christian Brabandt <cb@256bit.org>
date Sat, 16 Dec 2017 16:45:04 +0100
parents 7608b10442d9
children 754780887de1
files src/ex_getln.c src/version.c
diffstat 2 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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,