mm-decode.el (mm-display-external): Spelling fix
[gnus] / lisp / mm-decode.el
index a99e7a4..311ea7c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mm-decode.el --- Functions for decoding MIME things
 
-;; Copyright (C) 1998-2014 Free Software Foundation, Inc.
+;; Copyright (C) 1998-2015 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -647,7 +647,7 @@ MIME-Version header before proceeding."
          (unless from
            (setq from (mail-fetch-field "from")))
          ;; FIXME: In some circumstances, this code is running within
-         ;; an unibyte macro.  mail-extract-address-components
+         ;; a unibyte macro.  mail-extract-address-components
          ;; creates unibyte buffers. This `if', though not a perfect
          ;; solution, avoids most of them.
          (if from
@@ -821,7 +821,6 @@ external if displayed external."
          'inline)
         ((and (mm-inlinable-p ehandle)
               (mm-inlined-p ehandle))
-         (forward-line 1)
          (mm-display-inline handle)
          'inline)
         ((or method
@@ -834,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
@@ -886,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, sort of.
+                         (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)
@@ -1815,6 +1822,7 @@ If RECURSIVE, search recursively."
   ;; Require since we bind its variables.
   (require 'shr)
   (let ((article-buffer (current-buffer))
+       (shr-width fill-column)
        (shr-content-function (lambda (id)
                                (let ((handle (mm-get-content-id id)))
                                  (when handle
@@ -1868,7 +1876,7 @@ If RECURSIVE, search recursively."
        handle
        `(lambda ()
          (let ((inhibit-read-only t))
-           (delete-region ,(point-min-marker)
+           (delete-region ,(copy-marker (point-min) t)
                           ,(point-max-marker))))))))
 
 (defvar shr-map)