diff options
author | Glenn Morris <rgm@gnu.org> | 2007-09-25 07:06:06 +0000 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2007-09-25 07:06:06 +0000 |
commit | 7920b6e8557bc0361e544cfc80ffc443666536eb (patch) | |
tree | b3e89009ef575e13a0acf8ce11ff2e5fbd2cb21d /lisp/view.el | |
parent | dab2d343484d91fae2ce38677857f7226d61c320 (diff) | |
download | emacs-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.el | 23 |
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) |