diff options
Diffstat (limited to 'src/search.c')
-rw-r--r-- | src/search.c | 12 |
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 { |