Fixups when displaying certain attachments
authorPeder O. Klingenberg <peder@klingenberg.no>
Mon, 26 Jan 2015 03:26:27 +0000 (14:26 +1100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 26 Jan 2015 03:26:27 +0000 (14:26 +1100)
* mm-decode.el (mm-display-part): Make non-string methods work.
Non-string methods are funcalled and work just fine, the test was
bogus.
* mm-decode.el (mm-display-external): Show "external" lisp viewers in
whole frame.

lisp/ChangeLog
lisp/mm-decode.el

index 9aebb54..11f1282 100644 (file)
@@ -1,3 +1,11 @@
+2014-12-30  Peder O. Klingenberg  <peder@klingenberg.no>
+
+       * mm-decode.el (mm-display-part): Make non-string methods work.
+       Non-string methods are funcalled and work just fine, the test was
+       bogus.
+       * mm-decode.el (mm-display-external): Show "external" lisp viewers in
+       whole frame.
+
 2015-01-26  Lars Ingebrigtsen  <larsi@gnus.org>
 
        * nnimap.el (nnimap-request-accept-article): Allow respooling using
index fb32ad9..f03b9c9 100644 (file)
@@ -833,18 +833,18 @@ external if displayed external."
                'inline)
            (setq external
                  (and method         ;; If nil, we always use "save".
-                      (stringp method) ;; 'mailcap-save-binary-file
                       (or (eq mm-enable-external t)
                           (and (eq mm-enable-external 'ask)
                                (y-or-n-p
                                 (concat
                                  "Display part (" type
-                                 ") using external program"
-                                 ;; Can non-string method ever happen?
+                                 ") "
                                  (if (stringp method)
                                      (concat
-                                      " \"" (format method filename) "\"")
-                                   "")
+                                      "using external program \""
+                                      (format method filename) "\"")
+                                   (format
+                                    "by calling `%s' on the contents)" method))
                                  "? "))))))
            (if external
                (mm-display-external
@@ -885,7 +885,15 @@ external if displayed external."
                                     (mm-handle-media-type handle) t))))
              (unwind-protect
                  (if method
-                     (funcall method)
+                     (progn
+                       (when (and (boundp 'gnus-summary-buffer)
+                                  (bufferp gnus-summary-buffer)
+                                  (buffer-name gnus-summary-buffer))
+                         ;; So that we pop back to the right place, sortof.
+                         (switch-to-buffer gnus-summary-buffer)
+                         (switch-to-buffer mm))
+                       (delete-other-windows)
+                       (funcall method))
                    (mm-save-part handle))
                (when (and (not non-viewer)
                           method)