From: Glenn Morris Date: Tue, 25 Sep 2007 07:06:16 +0000 (+0000) Subject: (view-search-no-match-lines): Fix previous change (went wrong if X-Git-Tag: emacs-pretest-23.0.90~10693 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=138c66b0dc82bb10283e495e7ac35d43efa5c899;p=emacs.git (view-search-no-match-lines): Fix previous change (went wrong if regexp to not be matched matched last thing in the buffer). --- 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)