diff options
Diffstat (limited to 'src/nvim/search.c')
-rw-r--r-- | src/nvim/search.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/nvim/search.c b/src/nvim/search.c index 30653cbe63..756a4c5255 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -3689,15 +3689,15 @@ bool search_for_fuzzy_match(buf_T *buf, pos_T *pos, char *pattern, int dir, pos_ current_pos.lnum += dir; } - while (true) { - if (buf == curbuf) { - circly_end = *start_pos; - } else { - circly_end.lnum = buf->b_ml.ml_line_count; - circly_end.col = 0; - circly_end.coladd = 0; - } + if (buf == curbuf) { + circly_end = *start_pos; + } else { + circly_end.lnum = buf->b_ml.ml_line_count; + circly_end.col = 0; + circly_end.coladd = 0; + } + while (true) { // Check if looped around and back to start position if (looped_around && equalpos(current_pos, circly_end)) { break; @@ -3717,6 +3717,8 @@ bool search_for_fuzzy_match(buf_T *buf, pos_T *pos, char *pattern, int dir, pos_ if (found_new_match) { *pos = current_pos; break; + } else if (looped_around && current_pos.lnum == circly_end.lnum) { + break; } } else { if (fuzzy_match_str(*ptr, pattern) > 0) { |