X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fmm-decode.el;h=03bcaa15ff49ce6d40a05490c6e9339a284ac7f7;hp=dc29718815ac1e5b468bf96f2c119b2883a1cb4c;hb=4598d7eb56ad42593c8aee7189d3b31e6c476344;hpb=dce35658e5d9aebb1509d691e0de256c1511854b diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index dc2971881..03bcaa15f 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -249,6 +249,8 @@ before the external MIME handler is invoked." ("message/partial" mm-inline-partial identity) ("message/external-body" mm-inline-external-body identity) ("text/.*" mm-inline-text identity) + ("application/x-.?tar\\(-.*\\)?" mm-archive-dissect-and-inline identity) + ("application/zip" mm-archive-dissect-and-inline identity) ("audio/wav" mm-inline-audio (lambda (handle) (and (or (featurep 'nas-sound) (featurep 'native-sound)) @@ -298,6 +300,9 @@ before the external MIME handler is invoked." "application/pgp-signature" "application/x-pkcs7-signature" "application/pkcs7-signature" "application/x-pkcs7-mime" "application/pkcs7-mime" + "application/x-gtar-compressed" + "application/x-tar" + "application/zip" ;; Mutt still uses this even though it has already been withdrawn. "application/pgp") "List of media types that are to be displayed inline. @@ -659,7 +664,9 @@ Postpone undisplaying of viewers for types in (mm-copy-to-buffer) ctl cte nil cdl description nil id)) (decoder (assoc (car ctl) mm-archive-decoders))) (if (and decoder - (executable-find (cadr decoder))) + ;; Do automatic decoding + (cadr decoder) + (executable-find (caddr decoder))) (mm-dissect-archive handle) handle)))) @@ -945,15 +952,17 @@ external if displayed external." (condition-case nil (delete-directory (file-name-directory file)) (error)) - (with-current-buffer outbuf - (let ((buffer-read-only nil) - (point (point))) - (forward-line 2) - (mm-insert-inline - handle (with-current-buffer buffer - (buffer-string))) - (goto-char point))) - (kill-buffer buffer)) + (when (buffer-live-p outbuf) + (with-current-buffer outbuf + (let ((buffer-read-only nil) + (point (point))) + (forward-line 2) + (mm-insert-inline + handle (with-current-buffer buffer + (buffer-string))) + (goto-char point)))) + (when (buffer-live-p buffer) + (kill-buffer buffer))) (message "Displaying %s...done" command))))) (mm-handle-set-external-undisplayer handle (cons file buffer)))