diff options
Diffstat (limited to 'Src/Zle/zle_hist.c')
-rw-r--r-- | Src/Zle/zle_hist.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/Src/Zle/zle_hist.c b/Src/Zle/zle_hist.c index be52210cc..9d4692305 100644 --- a/Src/Zle/zle_hist.c +++ b/Src/Zle/zle_hist.c @@ -1214,6 +1214,19 @@ doisearch(char **args, int dir, int pattern) */ while ((!pattern || patprog) && !nosearch) { if (patprog) { + if (revert_patpos) { + /* + * Search from where the previous + * search started; see note above. + * This is down here within the loop because of + * the "nosearch" optimisation. + */ + revert_patpos = 0; + dup_ok = 1; + he = quietgethist(hl = pat_hl); + zt = GETZLETEXT(he); + pos = pat_pos; + } /* * We are pattern matching against the current * line. If anchored at the start, this is @@ -1245,17 +1258,6 @@ doisearch(char **args, int dir, int pattern) t = zt; } else { if (!matchlist && !skip_pos) { - if (revert_patpos) { - /* - * Search from where the previous - * search started; see note above. - */ - revert_patpos = 0; - dup_ok = 1; - he = quietgethist(hl = pat_hl); - zt = GETZLETEXT(he); - pos = pat_pos; - } if (!getmatchlist(zt, patprog, &matchlist) || !firstnode(matchlist)) { if (matchlist) { |