(defvar outline-minor-mode nil
"Non-nil if using Outline mode as a minor mode of some other mode.")
(make-variable-buffer-local 'outline-minor-mode)
-(put 'outline-minor-mode 'permanent-local t)
(or (assq 'outline-minor-mode minor-mode-alist)
(setq minor-mode-alist (append minor-mode-alist
(list '(outline-minor-mode " Outl")))))
(> (prefix-numeric-value arg) 0)))
(if outline-minor-mode
(progn
+ (make-local-hook 'change-major-mode-hook)
+ ;; Turn off this mode if we change major modes.
+ (add-hook 'change-major-mode-hook
+ '(lambda () (outline-minor-mode -1))
+ nil t)
(make-local-variable 'line-move-ignore-invisible)
(setq line-move-ignore-invisible t)
;; Cause use of ellipses for invisible text.
(beginning-of-line)
(or (outline-on-heading-p)
(let (found)
- (while (not found)
- (setq found
- (and (re-search-backward (concat "^\\(" outline-regexp "\\)")
- nil t)
- (outline-visible))))
- found)
- (error "before first heading")))
+ (save-excursion
+ (while (not found)
+ (or (re-search-backward (concat "^\\(" outline-regexp "\\)")
+ nil t)
+ (error "before first heading"))
+ (setq found (and (outline-visible) (point)))))
+ (goto-char found)
+ found)))
(defun outline-on-heading-p ()
"Return t if point is on a (visible) heading line."