]> code.delx.au - gnu-emacs/commitdiff
Fix view-buffer-other-window/frame handling of special modes.
authorChong Yidong <cyd@gnu.org>
Wed, 1 Feb 2012 08:31:29 +0000 (16:31 +0800)
committerChong Yidong <cyd@gnu.org>
Wed, 1 Feb 2012 08:31:29 +0000 (16:31 +0800)
* view.el (view-buffer-other-window, view-buffer-other-frame):
Handle special modes like view-buffer.
(view-buffer): Simplify.

Fixes: debbugs:10650
lisp/ChangeLog
lisp/view.el

index 152acc03f147a95334f772ce218d42c44143a52f..7d05f85f2474a3b6b5e28650779b5f468191b90b 100644 (file)
@@ -1,5 +1,9 @@
 2012-02-01  Chong Yidong  <cyd@gnu.org>
 
+       * view.el (view-buffer-other-window, view-buffer-other-frame):
+       Handle special modes like view-buffer (Bug#10650).
+       (view-buffer): Simplify.
+
        * frame.el (set-frame-font): Tweak meaning of third argument.
 
        * dynamic-setting.el (font-setting-change-default-font): Use
index 035f8c61d9fd57971c89d925838f0c44e8e2a24e..4a219971097abce0db667ecd3dd89ad02f72ed49 100644 (file)
@@ -311,13 +311,9 @@ file: Users may suspend viewing in order to modify the buffer.
 Exiting View mode will then discard the user's edits.  Setting
 EXIT-ACTION to `kill-buffer-if-not-modified' avoids this."
   (interactive "bView buffer: ")
-  (if (eq (with-current-buffer buffer
-           (get major-mode 'mode-class))
-         'special)
-      (progn
-       (switch-to-buffer buffer)
-       (message "Not using View mode because the major mode is special"))
-    (switch-to-buffer buffer)
+  (switch-to-buffer buffer)
+  (if (eq (get major-mode 'mode-class) 'special)
+      (message "Not using View mode because the major mode is special")
     (view-mode-enter nil exit-action)))
 
 ;;;###autoload
@@ -339,7 +335,9 @@ this argument instead of explicitly setting `view-exit-action'."
   (interactive "bIn other window view buffer:\nP")
   (let ((pop-up-windows t))
     (pop-to-buffer buffer t))
-  (view-mode-enter nil exit-action))
+  (if (eq (get major-mode 'mode-class) 'special)
+      (message "Not using View mode because the major mode is special")
+    (view-mode-enter nil exit-action)))
 
 ;;;###autoload
 (defun view-buffer-other-frame (buffer &optional not-return exit-action)
@@ -360,7 +358,9 @@ this argument instead of explicitly setting `view-exit-action'."
   (interactive "bView buffer in other frame: \nP")
   (let ((pop-up-frames t))
     (pop-to-buffer buffer t))
-  (view-mode-enter nil exit-action))
+  (if (eq (get major-mode 'mode-class) 'special)
+      (message "Not using View mode because the major mode is special")
+    (view-mode-enter nil exit-action)))
 \f
 ;;;###autoload
 (define-minor-mode view-mode