summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-07-19 03:19:03 +0000
committerRichard M. Stallman <rms@gnu.org>1995-07-19 03:19:03 +0000
commitb297554a2813268c7b86d009c0c987c5f41c371b (patch)
tree61d85215d56c9fd0c0c2c030f01bb7ec5b348f01 /lisp
parentfb893977d600f0cb7b61efffef956474f7fea05f (diff)
downloademacs-b297554a2813268c7b86d009c0c987c5f41c371b.tar.gz
(outline-next-visible-heading): Rewritten to handle
backwards motion and handle beg/end of buffer properly.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/textmodes/outline.el22
1 files changed, 12 insertions, 10 deletions
diff --git a/lisp/textmodes/outline.el b/lisp/textmodes/outline.el
index b169396ef20..84d95ef36e7 100644
--- a/lisp/textmodes/outline.el
+++ b/lisp/textmodes/outline.el
@@ -331,16 +331,18 @@ A heading line is one that starts with a `*' (or that
(if (< arg 0)
(beginning-of-line)
(end-of-line))
- (let (found)
- (or (while (and found (> arg 0))
- (setq found nil)
- (while (not found)
- (setq found
- (and (re-search-backward (concat "^\\(" outline-regexp "\\)")
- nil t)
- (outline-visible))))
- (setq arg (1- arg)))
- (error "")))
+ (while (and (not (bobp)) (< arg 0))
+ (while (and (not (bobp))
+ (re-search-backward (concat "^\\(" outline-regexp "\\)")
+ nil 'move)
+ (not (outline-visible))))
+ (setq arg (1+ arg)))
+ (while (and (not (eobp)) (> arg 0))
+ (while (and (not (eobp))
+ (re-search-forward (concat "^\\(" outline-regexp "\\)")
+ nil 'move)
+ (not (outline-visible))))
+ (setq arg (1- arg)))
(beginning-of-line))
(defun outline-previous-visible-heading (arg)