summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_hist.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-04-28 15:45:41 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-04-28 15:45:41 +0000
commitf8220437f22852d72d4a8ab2ed86afb5f5f21cce (patch)
tree10b7c8f2a5a971cdae74ef560b0cb212cfa9662a /Src/Zle/zle_hist.c
parent7462e3f97882ab00933a1a1704b67622e853c89e (diff)
downloadzsh-f8220437f22852d72d4a8ab2ed86afb5f5f21cce.tar.gz
zsh-f8220437f22852d72d4a8ab2ed86afb5f5f21cce.zip
unposted: reset search line on anchored pattern isearch
Diffstat (limited to 'Src/Zle/zle_hist.c')
-rw-r--r--Src/Zle/zle_hist.c24
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) {