summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-05-29 22:49:43 +0200
committerBram Moolenaar <Bram@vim.org>2020-05-29 22:49:43 +0200
commit6cb0726215519fe94103803e4aa77a355384bcf2 (patch)
treef7b9a635b37cf16d4fc25cff201eb2bdeba7107a
parentb42c0d54279b1fdb79652db0c84171e213458809 (diff)
downloadvim-git-8.2.0840.tar.gz
patch 8.2.0840: search match count wrong when only match is in foldv8.2.0840
Problem: Search match count wrong when only match is in fold. Solution: Update search stats when in a closed fold. (Christian Brabandt, closes #6160, closes #6152)
-rw-r--r--src/search.c7
-rw-r--r--src/testdir/dumps/Test_searchstat_3.dump10
-rw-r--r--src/testdir/test_search_stat.vim29
-rw-r--r--src/version.c2
4 files changed, 47 insertions, 1 deletions
diff --git a/src/search.c b/src/search.c
index 0bf49629e..7bda6f983 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1592,7 +1592,12 @@ do_search(
&& !shortmess(SHM_SEARCHCOUNT)
&& msgbuf != NULL)
search_stat(dirc, &pos, show_top_bot_msg, msgbuf,
- (count != 1 || has_offset));
+ (count != 1 || has_offset
+#ifdef FEAT_FOLDING
+ || (!(fdo_flags & FDO_SEARCH) &&
+ hasFolding(curwin->w_cursor.lnum, NULL, NULL))
+#endif
+ ));
/*
* The search command can be followed by a ';' to do another search.
diff --git a/src/testdir/dumps/Test_searchstat_3.dump b/src/testdir/dumps/Test_searchstat_3.dump
new file mode 100644
index 000000000..a21b47e7c
--- /dev/null
+++ b/src/testdir/dumps/Test_searchstat_3.dump
@@ -0,0 +1,10 @@
+|i+0&#ffffff0|f| @72
+>++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|o@1|-@57
+|e+0#0000000#ffffff0|n|d|i|f| @69
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|/+0#0000000&|f|o@1| @35|[|1|/|2|]| @11|2|,|2|-|1| @8|A|l@1|
diff --git a/src/testdir/test_search_stat.vim b/src/testdir/test_search_stat.vim
index 9bd2404df..68d339fb3 100644
--- a/src/testdir/test_search_stat.vim
+++ b/src/testdir/test_search_stat.vim
@@ -186,6 +186,35 @@ func Test_search_stat()
bwipe!
endfunc
+func Test_search_stat_foldopen()
+ CheckScreendump
+
+ let lines =<< trim END
+ set shortmess-=S
+ setl foldenable foldmethod=indent foldopen-=search
+ call append(0, ['if', "\tfoo", "\tfoo", 'endif'])
+ let @/ = 'foo'
+ call cursor(1,1)
+ norm n
+ END
+ call writefile(lines, 'Xsearchstat1')
+
+ let buf = RunVimInTerminal('-S Xsearchstat1', #{rows: 10})
+ call TermWait(buf)
+ call VerifyScreenDump(buf, 'Test_searchstat_3', {})
+
+ call term_sendkeys(buf, "n")
+ call TermWait(buf)
+ call VerifyScreenDump(buf, 'Test_searchstat_3', {})
+
+ call term_sendkeys(buf, "n")
+ call TermWait(buf)
+ call VerifyScreenDump(buf, 'Test_searchstat_3', {})
+
+ call StopVimInTerminal(buf)
+ call delete('Xsearchstat1')
+endfunc
+
func! Test_search_stat_screendump()
CheckScreendump
diff --git a/src/version.c b/src/version.c
index a1b6a7d8b..7c5b3c037 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 840,
+/**/
839,
/**/
838,