diff options
Diffstat (limited to 'lisp/textmodes/ooutline.el')
-rw-r--r-- | lisp/textmodes/ooutline.el | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/lisp/textmodes/ooutline.el b/lisp/textmodes/ooutline.el index 618507ae25d..9709fc0d309 100644 --- a/lisp/textmodes/ooutline.el +++ b/lisp/textmodes/ooutline.el @@ -372,20 +372,17 @@ while if FLAG is `\\^M' (control-M) the text is hidden." (setq levels (1- levels)) (save-excursion (goto-char (point-min)) - (condition-case nil - ;; Keep advancing to the next top-level heading. - (while (progn (or (and (bobp) (outline-on-heading-p)) - (outline-next-heading)) - (not (eobp))) - (setq first nil) - (let ((end (save-excursion (outline-end-of-subtree) (point)))) - ;; Hide everything under that. - (outline-flag-region (point) end ?\^M) - ;; Show the first LEVELS levels under that. - (show-children levels) - ;; Move to the next, since we already found it. - (goto-char end))) - (error nil)))) + ;; Keep advancing to the next top-level heading. + (while (or (and (bobp) (outline-on-heading-p)) + (outline-next-heading)) + (let ((end (save-excursion (outline-end-of-subtree) (point)))) + ;; Hide everything under that. + (outline-flag-region (point) end ?\^M) + ;; Show the first LEVELS levels under that. + (if (> levels 1) + (show-children levels)) + ;; Move to the next, since we already found it. + (goto-char end))))) (defun hide-other () "Hide everything except for the current body and the parent headings." |