From: Miles Bader Date: Wed, 12 Apr 2006 05:23:27 +0000 (+0000) Subject: Revision: emacs@sv.gnu.org/emacs--devo--0--patch-214 X-Git-Tag: emacs-pretest-22.0.90~3201 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=163cb72dcb641bd2e68d3b6887cfef71bb1464ae;p=emacs.git Revision: emacs@sv.gnu.org/emacs--devo--0--patch-214 Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 83) - Update from CVS --- diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 087cdf14503..792fb2a5c0d 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,24 @@ +2006-04-12 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-view-part-as-charset): Ignore charset + that the part specifies. + + * mm-decode.el (mm-display-part): Work with external parts and + usual parts similarly. + + * mm-extern.el (mm-inline-external-body): Use mm-display-part + instead of gnus-display-mime. + + * gnus-uu.el (gnus-uu-save-article): Put mml tags instead of part + tag to summarized topics part in order to encode non-ASCII text. + +2006-04-12 Kenichi Handa + + * rfc2231.el (rfc2231-decode-encoded-string): Work on unibyte + buffer and then decode the buffer text if necessary. + (rfc2231-encode-string): Be sure to work on multibyte buffer at + first, and after mm-encode-body, change the buffer to unibyte. + 2006-04-11 Reiner Steib * gnus-art.el (gnus-button-valid-localpart-regexp): Exclude `@'. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index eed793d23ba..a4da4ae85f3 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -4477,19 +4477,29 @@ are decompressed." specified charset." (interactive (list nil current-prefix-arg)) (gnus-article-check-buffer) - (let* ((handle (or handle (get-text-property (point) 'gnus-data))) - contents charset - (b (point)) - (inhibit-read-only t)) + (let ((handle (or handle (get-text-property (point) 'gnus-data))) + (fun (get-text-property (point) 'gnus-callback)) + (gnus-newsgroup-ignored-charsets 'gnus-all) + gnus-newsgroup-charset type charset) (when handle (if (mm-handle-undisplayer handle) (mm-remove-part handle)) - (let ((gnus-newsgroup-charset - (or (cdr (assq arg - gnus-summary-show-article-charset-alist)) - (mm-read-coding-system "Charset: "))) - (gnus-newsgroup-ignored-charsets 'gnus-all)) - (gnus-article-press-button))))) + (when fun + (setq gnus-newsgroup-charset + (or (cdr (assq arg gnus-summary-show-article-charset-alist)) + (mm-read-coding-system "Charset: "))) + ;; Strip the charset parameter from `handle'. + (setq type (mm-handle-type + (if (equal (mm-handle-media-type handle) + "message/external-body") + (progn + (unless (mm-handle-cache handle) + (mm-extern-cache-contents handle)) + (mm-handle-cache handle)) + handle)) + charset (assq 'charset (cdr type))) + (delq charset type) + (funcall fun handle))))) (defun gnus-mime-view-part-externally (&optional handle) "View the MIME part under point with an external viewer." diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el index e9756547167..46f810b2fbb 100644 --- a/lisp/gnus/gnus-uu.el +++ b/lisp/gnus/gnus-uu.el @@ -839,7 +839,9 @@ When called interactively, prompt for REGEXP." "Date: %s\nFrom: %s\nSubject: %s Digest\n\n" (message-make-date) name name)) (when (and message-forward-as-mime gnus-uu-digest-buffer) - (insert "<#part type=message/rfc822>\nSubject: Topics\n\n")) + (insert + "<#mml type=message/rfc822>\nSubject: Topics\n\n<#/mml>\n") + (forward-line -1)) (insert "Topics:\n"))) (when (not (eq in-state 'end)) (setq state (list 'middle)))) diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 60cbb413473..5ee47a8ce26 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -672,7 +672,14 @@ external if displayed external." (mailcap-parse-mailcaps) (if (mm-handle-displayed-p handle) (mm-remove-part handle) - (let* ((type (mm-handle-media-type handle)) + (let* ((ehandle (if (equal (mm-handle-media-type handle) + "message/external-body") + (progn + (unless (mm-handle-cache handle) + (mm-extern-cache-contents handle)) + (mm-handle-cache handle)) + handle)) + (type (mm-handle-media-type ehandle)) (method (mailcap-mime-info type)) (filename (or (mail-content-type-get (mm-handle-disposition handle) 'filename) @@ -680,8 +687,8 @@ external if displayed external." (mm-handle-type handle) 'name) "")) (external mm-enable-external)) - (if (and (mm-inlinable-p handle) - (mm-inlined-p handle)) + (if (and (mm-inlinable-p ehandle) + (mm-inlined-p ehandle)) (progn (forward-line 1) (mm-display-inline handle) @@ -689,7 +696,7 @@ external if displayed external." (when (or method (not no-default)) (if (and (not method) - (equal "text" (car (split-string type)))) + (equal "text" (car (split-string type "/")))) (progn (forward-line 1) (mm-insert-inline handle (mm-get-part handle)) diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el index b736374f016..c574bd6156e 100644 --- a/lisp/gnus/mm-extern.el +++ b/lisp/gnus/mm-extern.el @@ -157,25 +157,11 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing." (save-excursion (save-restriction (narrow-to-region (point) (point)) - (let* ((type (regexp-quote - (mm-handle-media-type (mm-handle-cache handle)))) - ;; Force the part to be displayed (but if there is no - ;; method to display, a user will be prompted to save). - ;; See `gnus-mime-display-single'. - (mm-inline-override-types nil) - (mm-attachment-override-types - (cons type mm-attachment-override-types)) - (mm-automatic-display (cons type mm-automatic-display)) - (mm-automatic-external-display - (cons type mm-automatic-external-display)) - ;; Suppress adding of button to the cached part. - (gnus-inhibit-mime-unbuttonizing nil)) - (gnus-display-mime (mm-handle-cache handle))) - ;; Move undisplayer added to the cached handle to the parent. - (mm-handle-set-undisplayer - handle - (mm-handle-undisplayer (mm-handle-cache handle))) - (mm-handle-set-undisplayer (mm-handle-cache handle) nil))))) + (mm-display-part (mm-handle-cache handle)))) + ;; Move undisplayer added to the cached handle to the parent. + (mm-handle-set-undisplayer + handle (mm-handle-undisplayer (mm-handle-cache handle))) + (mm-handle-set-undisplayer (mm-handle-cache handle) nil))) (provide 'mm-extern)