summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
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)