summaryrefslogtreecommitdiff
path: root/lisp/view.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2007-09-25 07:06:06 +0000
committerGlenn Morris <rgm@gnu.org>2007-09-25 07:06:06 +0000
commit7920b6e8557bc0361e544cfc80ffc443666536eb (patch)
treeb3e89009ef575e13a0acf8ce11ff2e5fbd2cb21d /lisp/view.el
parentdab2d343484d91fae2ce38677857f7226d61c320 (diff)
downloademacs-7920b6e8557bc0361e544cfc80ffc443666536eb.tar.gz
(view-search-no-match-lines): Fix previous change (went wrong if
regexp to not be matched matched last thing in the buffer).
Diffstat (limited to 'lisp/view.el')
-rw-r--r--lisp/view.el23
1 files changed, 10 insertions, 13 deletions
diff --git a/lisp/view.el b/lisp/view.el
index 04f288a75d2..c152383a48b 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -998,22 +998,19 @@ for highlighting the match that is found."
"Search for the TIMESth occurrence of a line with no match for REGEXP.
If such a line is found, return non-nil and set the match-data to that line.
If TIMES is negative, search backwards."
- (let ((step 1)
- (noerror 'move))
- (when (< times 0)
- (setq times (- times)
- step -1
- noerror t))
+ (let ((step (if (>= times 0) 1
+ (setq times (- times))
+ -1)))
;; Note that we do not check the current line.
(while (and (> times 0)
(zerop (forward-line step)))
- ;; Move only to handle eob in the forward case: on last line,
- ;; (forward-line 1) returns 0 before the end of line.
- (or (re-search-forward regexp (line-end-position) noerror)
- (setq times (1- times)))))
- (when (zerop times)
- (forward-line 0)
- (looking-at ".*")))
+ ;; (forward-line 1) returns 0 on moving within the last line.
+ (if (eobp)
+ (setq times -1)
+ (or (re-search-forward regexp (line-end-position) t)
+ (setq times (1- times))))))
+ (and (zerop times)
+ (looking-at ".*")))
(provide 'view)