summaryrefslogtreecommitdiffstats
path: root/src/search.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/search.c')
-rw-r--r--src/search.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/search.c b/src/search.c
index 5e38570780..793e042341 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1089,7 +1089,9 @@ searchit(
/*
* If 'wrapscan' is set we continue at the other end of the file.
- * If 'shortmess' does not contain 's', we give a message.
+ * If 'shortmess' does not contain 's', we give a message, but
+ * only, if we won't show the search stat later anyhow,
+ * (so SEARCH_COUNT must be absent).
* This message is also remembered in keep_msg for when the screen
* is redrawn. The keep_msg is cleared whenever another message is
* written.
@@ -1098,7 +1100,9 @@ searchit(
lnum = buf->b_ml.ml_line_count;
else
lnum = 1;
- if (!shortmess(SHM_SEARCH) && (options & SEARCH_MSG))
+ if (!shortmess(SHM_SEARCH)
+ && shortmess(SHM_SEARCHCOUNT)
+ && (options & SEARCH_MSG))
give_warning((char_u *)_(dir == BACKWARD
? top_bot_msg : bot_top_msg), TRUE);
if (extra_arg != NULL)
@@ -3237,8 +3241,10 @@ update_search_stat(
lbuf = curbuf;
}
+ // when searching backwards and having jumped to the first occurrence,
+ // cur must remain greater than 1
if (EQUAL_POS(lastpos, *cursor_pos) && !wraparound
- && (dirc == 0 || dirc == '/' ? cur < cnt : cur > 0))
+ && (dirc == 0 || dirc == '/' ? cur < cnt : cur > 1))
cur += dirc == 0 ? 0 : dirc == '/' ? 1 : -1;
else
{