summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/view.el9
1 files changed, 5 insertions, 4 deletions
diff --git a/lisp/view.el b/lisp/view.el
index 8ac8377e476..a0fc23d0182 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -187,10 +187,6 @@ This is local in each buffer, once it is used.")
(setq minor-mode-map-alist
(cons (cons 'view-mode view-mode-map) minor-mode-map-alist)))
-;; Always leave view mode before changing major mode.
-;; This is to guarantee that the buffer-read-only variable is restored.
-(add-hook 'change-major-mode-hook 'view-mode-disable)
-
;;; Commands that enter or exit view mode.
;;;###autoload
@@ -399,6 +395,10 @@ Entry to view-mode runs the normal hook `view-mode-hook'."
(defun view-mode-enable ()
"Turn on View mode."
+ ;; Always leave view mode before changing major mode.
+ ;; This is to guarantee that the buffer-read-only variable is restored.
+ (make-local-hook 'change-major-mode-hook)
+ (add-hook 'change-major-mode-hook 'view-mode-disable nil t)
(setq view-mode t
view-page-size (view-page-size-default view-page-size)
view-half-page-size (or view-half-page-size (/ (view-window-size) 2))
@@ -415,6 +415,7 @@ Entry to view-mode runs the normal hook `view-mode-hook'."
(defun view-mode-disable ()
"Turn off View mode."
+ (remove-hook 'change-major-mode-hook 'view-mode-disable t)
(and view-overlay (delete-overlay view-overlay))
(setq view-mode nil
Helper-return-blurb view-old-Helper-return-blurb