X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fmm-decode.el;h=49fc7e1f3d063980bcec1bbc10d455a491403fe3;hb=66c26c155163db358a8641e5165b0439f95e7133;hp=45e81997af0f700d85bb9e39d87fb8e8dbd8e8d0;hpb=f754e9f0bb24e400cc95faf68ca603af8e785ecf;p=elisp%2Fgnus.git- diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index 45e8199..49fc7e1 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -98,8 +98,9 @@ (defcustom mm-text-html-renderer (cond ((locate-library "w3") 'w3) - ((locate-library "w3m") 'w3m) - ((executable-find "w3m") 'w3m-standalone) + ((executable-find "w3m") (if (locate-library "w3m") + 'w3m + 'w3m-standalone)) ((executable-find "links") 'links) ((executable-find "lynx") 'lynx) (t 'html2text)) @@ -113,6 +114,7 @@ The defined renderer types are: `lynx' : use lynx; `html2text' : use html2text; nil : use external viewer." + :version "21.4" :type '(choice (const w3) (const w3m) (const w3m-standalone) @@ -121,7 +123,6 @@ nil : use external viewer." (const html2text) (const nil) (function)) - :version "21.3" :group 'mime-display) (defvar mm-inline-text-html-renderer nil @@ -132,6 +133,7 @@ It is suggested to customize `mm-text-html-renderer' instead.") "If non-nil, Gnus will allow retrieving images in HTML contents with the tags. It has no effect on Emacs/w3. See also the documentation for the `mm-w3m-safe-url-regexp' variable." + :version "21.4" :type 'boolean :group 'mime-display) @@ -217,6 +219,7 @@ before the external MIME handler is invoked." (locate-library "diff-mode"))) ("application/emacs-lisp" mm-display-elisp-inline identity) ("application/x-emacs-lisp" mm-display-elisp-inline identity) + ("text/dns" mm-display-dns-inline identity) ("text/html" mm-inline-text-html (lambda (handle) @@ -278,13 +281,14 @@ type inline." "application/pdf" "application/x-dvi") "List of media types for which the external viewer will not be killed when selecting a different article." + :version "21.4" :type '(repeat string) :group 'mime-display) (defcustom mm-automatic-display '("text/plain" "text/enriched" "text/richtext" "text/html" "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*" - "message/rfc822" "text/x-patch" "application/pgp-signature" + "message/rfc822" "text/x-patch" "text/dns" "application/pgp-signature" "application/emacs-lisp" "application/x-emacs-lisp" "application/x-pkcs7-signature" "application/pkcs7-signature" "application/x-pkcs7-mime" @@ -379,6 +383,7 @@ If not set, `default-directory' will be used." (defcustom mm-external-terminal-program "xterm" "The program to start an external terminal." + :version "21.4" :type 'string :group 'mime-display) @@ -411,6 +416,7 @@ If not set, `default-directory' will be used." "Option of verifying signed parts. `never', not verify; `always', always verify; `known', only verify known protocols. Otherwise, ask user." + :version "21.4" :type '(choice (item always) (item never) (item :tag "only known protocols" known) @@ -521,15 +527,11 @@ Postpone undisplaying of viewers for types in ;; solution, avoids most of them. (if from (setq from (cadr (mail-extract-address-components from)))))) - (when cte - (setq cte (mail-header-strip cte))) (if (or (not ctl) (not (string-match "/" (car ctl)))) (mm-dissect-singlepart (list mm-dissect-default-type) - (and cte (intern (downcase (mail-header-remove-whitespace - (mail-header-remove-comments - cte))))) + (and cte (intern (downcase (mail-header-strip cte)))) no-strict-mime (and cd (ignore-errors (mail-header-parse-content-disposition cd))) description) @@ -562,9 +564,7 @@ Postpone undisplaying of viewers for types in (mm-possibly-verify-or-decrypt (mm-dissect-singlepart ctl - (and cte (intern (downcase (mail-header-remove-whitespace - (mail-header-remove-comments - cte))))) + (and cte (intern (downcase (mail-header-strip cte)))) no-strict-mime (and cd (ignore-errors (mail-header-parse-content-disposition cd))) @@ -616,18 +616,17 @@ Postpone undisplaying of viewers for types in (defun mm-copy-to-buffer () "Copy the contents of the current buffer to a fresh buffer." (save-excursion - (let ((flag enable-multibyte-characters) - (new-buffer (generate-new-buffer " *mm*"))) + (let ((obuf (current-buffer)) + beg) (goto-char (point-min)) (search-forward-regexp "^\n" nil t) - (save-restriction - (narrow-to-region (point) (point-max)) - (when flag - (set-buffer-multibyte nil)) - (copy-to-buffer new-buffer (point-min) (point-max)) - (when flag - (set-buffer-multibyte t))) - new-buffer))) + (setq beg (point)) + (set-buffer + ;; Preserve the data's unibyteness (for url-insert-file-contents). + (let ((default-enable-multibyte-characters (mm-multibyte-p))) + (generate-new-buffer " *mm*"))) + (insert-buffer-substring obuf beg) + (current-buffer)))) (defun mm-display-parts (handle &optional no-default) (if (stringp (car handle)) @@ -1093,9 +1092,10 @@ string if you do not like underscores." (setq filename (gnus-map-function mm-file-name-rewrite-functions (file-name-nondirectory filename)))) (setq file - (read-file-name "Save MIME part to: " - (or mm-default-directory default-directory) - nil nil (or filename name ""))) + (mm-with-multibyte + (read-file-name "Save MIME part to: " + (or mm-default-directory default-directory) + nil nil (or filename name "")))) (setq mm-default-directory (file-name-directory file)) (and (or (not (file-exists-p file)) (yes-or-no-p (format "File %s already exists; overwrite? "