diff options
Diffstat (limited to 'src/nvim/ex_cmds.c')
| -rw-r--r-- | src/nvim/ex_cmds.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c index 32dbf4cc69..4b3e02e5fd 100644 --- a/src/nvim/ex_cmds.c +++ b/src/nvim/ex_cmds.c @@ -3332,10 +3332,12 @@ static buf_T *do_sub(exarg_T *eap, proftime_T timeout)      sub = regtilde(sub, p_magic);    // Check for a match on each line. +  // If preview: limit to max('cmdwinheight', viewport).    linenr_T line2 = eap->line2;    for (linenr_T lnum = eap->line1; -       lnum <= line2 && !(got_quit || aborting()) -       && (!preview || matched_lines.size <= (size_t)p_cwh); +       lnum <= line2 && !got_quit && !aborting() +       && (!preview || matched_lines.size < (size_t)p_cwh +           || lnum <= curwin->w_botline);         lnum++) {      long nmatch = vim_regexec_multi(®match, curwin, curbuf, lnum,                                      (colnr_T)0, NULL); | 
