changeset 107897:1721e4658521

Test for special mode-class in view-buffer instead of view-file (bug#5513). * view.el (view-file, view-buffer): Move test for special mode-class from view-file to view-buffer. * tar-mode.el (tar-extract): Turn if's into one cond like in arc-mode.el.
author Juri Linkov <juri@jurta.org>
date Mon, 19 Apr 2010 02:49:58 +0300
parents f9390ec51de5
children 6eae3bc10330 0f1b71b92989
files etc/NEWS lisp/ChangeLog lisp/arc-mode.el lisp/tar-mode.el lisp/view.el
diffstat 5 files changed, 31 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS	Mon Apr 19 02:08:52 2010 +0300
+++ b/etc/NEWS	Mon Apr 19 02:49:58 2010 +0300
@@ -148,6 +148,8 @@
 
 * Incompatible Lisp Changes in Emacs 24.1
 
+** Test for special mode-class was moved from view-file to view-buffer.
+
 ** Passing a nil argument to a minor mode function now turns the mode
    ON unconditionally.
 
--- a/lisp/ChangeLog	Mon Apr 19 02:08:52 2010 +0300
+++ b/lisp/ChangeLog	Mon Apr 19 02:49:58 2010 +0300
@@ -1,3 +1,13 @@
+2010-04-18  Juri Linkov  <juri@jurta.org>
+
+	Test for special mode-class in view-buffer instead of view-file (bug#5513).
+
+	* view.el (view-file, view-buffer): Move test for special mode-class
+	from view-file to view-buffer.
+
+	* tar-mode.el (tar-extract): Turn if's into one cond
+	like in arc-mode.el.
+
 2010-04-18  Juri Linkov  <juri@jurta.org>
 
 	Add 7z archive format support (bug#5475).
--- a/lisp/arc-mode.el	Mon Apr 19 02:08:52 2010 +0300
+++ b/lisp/arc-mode.el	Mon Apr 19 02:49:58 2010 +0300
@@ -1062,8 +1062,8 @@
 	(archive-maybe-update t))
       (or (not (buffer-name buffer))
           (cond
-           (view-p (view-buffer
-		    buffer (and just-created 'kill-buffer-if-not-modified)))
+           (view-p
+	    (view-buffer buffer (and just-created 'kill-buffer-if-not-modified)))
            ((eq other-window-p 'display) (display-buffer buffer))
            (other-window-p (switch-to-buffer-other-window buffer))
            (t (switch-to-buffer buffer))))))
--- a/lisp/tar-mode.el	Mon Apr 19 02:08:52 2010 +0300
+++ b/lisp/tar-mode.el	Mon Apr 19 02:49:58 2010 +0300
@@ -852,14 +852,12 @@
           (set (make-local-variable 'tar-superior-descriptor) descriptor)
           (setq buffer-read-only read-only-p)
           (tar-subfile-mode 1)))
-      (if view-p
-	  (view-buffer
-	   buffer (and just-created 'kill-buffer-if-not-modified))
-	(if (eq other-window-p 'display)
-	    (display-buffer buffer)
-	  (if other-window-p
-	      (switch-to-buffer-other-window buffer)
-	    (switch-to-buffer buffer)))))))
+      (cond
+       (view-p
+	(view-buffer buffer (and just-created 'kill-buffer-if-not-modified)))
+       ((eq other-window-p 'display) (display-buffer buffer))
+       (other-window-p (switch-to-buffer-other-window buffer))
+       (t (switch-to-buffer buffer))))))
 
 
 (defun tar-extract-other-window ()
--- a/lisp/view.el	Mon Apr 19 02:08:52 2010 +0300
+++ b/lisp/view.el	Mon Apr 19 02:49:58 2010 +0300
@@ -262,13 +262,7 @@
   (unless (file-exists-p file) (error "%s does not exist" file))
   (let ((had-a-buf (get-file-buffer file))
 	(buffer (find-file-noselect file)))
-    (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"))
-      (view-buffer buffer (and (not had-a-buf) 'kill-buffer-if-not-modified)))))
+    (view-buffer buffer (and (not had-a-buf) 'kill-buffer-if-not-modified))))
 
 ;;;###autoload
 (defun view-file-other-window (file)
@@ -334,10 +328,16 @@
 Exiting View mode will then discard the user's edits.  Setting
 EXIT-ACTION to `kill-buffer-if-not-modified' avoids this."
   (interactive "bView buffer: ")
-  (let ((undo-window (list (window-buffer) (window-start) (window-point))))
-    (switch-to-buffer buffer)
-    (view-mode-enter (cons (selected-window) (cons nil undo-window))
-		     exit-action)))
+  (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"))
+    (let ((undo-window (list (window-buffer) (window-start) (window-point))))
+      (switch-to-buffer buffer)
+      (view-mode-enter (cons (selected-window) (cons nil undo-window))
+		       exit-action))))
 
 ;;;###autoload
 (defun view-buffer-other-window (buffer &optional not-return exit-action)