From fd5c9dfa9e667a980e52e1f390e817f7133ca961 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Mon, 19 Apr 2010 02:49:58 +0300 Subject: [PATCH] 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. --- etc/NEWS | 2 ++ lisp/ChangeLog | 10 ++++++++++ lisp/arc-mode.el | 4 ++-- lisp/tar-mode.el | 14 ++++++-------- lisp/view.el | 22 +++++++++++----------- 5 files changed, 31 insertions(+), 21 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 74f1eb5f660..b47fcd09536 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -148,6 +148,8 @@ Secret Service API requires D-Bus for communication. * 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. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 45ebef6cec0..8b9fef8bb08 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2010-04-18 Juri Linkov + + 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 Add 7z archive format support (bug#5475). diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 059489c9997..fb6155dfd41 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -1062,8 +1062,8 @@ using `make-temp-file', and the generated name is returned." (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)))))) diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index be9af8e293d..f8925706337 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -852,14 +852,12 @@ appear on disk when you save the tar-file's buffer." (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 () diff --git a/lisp/view.el b/lisp/view.el index 63db3452a87..7493f641b6c 100644 --- a/lisp/view.el +++ b/lisp/view.el @@ -262,13 +262,7 @@ This command runs the normal hook `view-mode-hook'." (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 @@ 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: ") - (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) -- 2.39.2