changeset 15518:d01e58c9e431

(outline-minor-mode): No longer permanent local.
author Richard M. Stallman <rms@gnu.org>
date Wed, 26 Jun 1996 18:03:44 +0000
parents d9bb8f6b05a0
children 045a36502ad4
files lisp/textmodes/outline.el
diffstat 1 files changed, 13 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/outline.el	Wed Jun 26 18:01:42 1996 +0000
+++ b/lisp/textmodes/outline.el	Wed Jun 26 18:03:44 1996 +0000
@@ -132,7 +132,6 @@
 (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")))))
@@ -251,6 +250,11 @@
 	  (> (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.
@@ -308,13 +312,14 @@
   (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."