emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 16995fa: Make message/rfc822 on buttons work again in Gnus


From: Lars Ingebrigtsen
Subject: master 16995fa: Make message/rfc822 on buttons work again in Gnus
Date: Fri, 29 Oct 2021 11:27:01 -0400 (EDT)

branch: master
commit 16995fa7c234bda25f9c19b7284842b1ea2febc6
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make message/rfc822 on buttons work again in Gnus
    
    * lisp/gnus/gnus-art.el (gnus-article-mode): Set
    mm-inline-message-prepare-function buffer-locally so that it works
    both when inlining rfc822 and hitting the MIME button (bug#51388).
    (gnus-mime--inline-message): Factor out into own function.
    (gnus-mime-display-single): From here.
---
 lisp/gnus/gnus-art.el | 42 ++++++++++++++++++++++--------------------
 lisp/gnus/mm-view.el  |  4 ++--
 2 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 930c739..6b33680 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4506,6 +4506,10 @@ commands:
   (gnus-set-default-directory)
   (buffer-disable-undo)
   (setq show-trailing-whitespace nil)
+  ;; Arrange a callback from `mm-inline-message' if we're
+  ;; displaying a message/rfc822 part.
+  (setq-local mm-inline-message-prepare-function
+              #'gnus-mime--inline-message-function)
   (mm-enable-multibyte))
 
 (defun gnus-article-setup-buffer ()
@@ -6041,31 +6045,29 @@ If nil, don't show those extra buttons."
 (defun gnus-mime-display-mixed (handles)
   (mapcar #'gnus-mime-display-part handles))
 
+(defun gnus-mime--inline-message-function (handle charset)
+  (let ((handles
+         (let (gnus-article-mime-handles
+              ;; disable prepare hook
+              gnus-article-prepare-hook
+              (gnus-newsgroup-charset
+                ;; mm-uu might set it.
+               (unless (eq charset 'gnus-decoded)
+                 (or charset gnus-newsgroup-charset))))
+          (let ((gnus-original-article-buffer
+                  (mm-handle-buffer handle)))
+            (run-hooks 'gnus-article-decode-hook))
+          (gnus-article-prepare-display)
+           gnus-article-mime-handles)))
+    (when handles
+      (setq gnus-article-mime-handles
+           (mm-merge-handles gnus-article-mime-handles handles)))))
+
 (defun gnus-mime-display-single (handle)
   (let ((type (mm-handle-media-type handle))
        (ignored gnus-ignored-mime-types)
        (mm-inline-font-lock (gnus-visual-p 'article-highlight 'highlight))
        (not-attachment t)
-        ;; Arrange a callback from `mm-inline-message' if we're
-        ;; displaying a message/rfc822 part.
-        (mm-inline-message-prepare-function
-         (lambda (charset)
-           (let ((handles
-                  (let (gnus-article-mime-handles
-                       ;; disable prepare hook
-                       gnus-article-prepare-hook
-                       (gnus-newsgroup-charset
-                         ;; mm-uu might set it.
-                        (unless (eq charset 'gnus-decoded)
-                          (or charset gnus-newsgroup-charset))))
-                   (let ((gnus-original-article-buffer
-                           (mm-handle-buffer handle)))
-                     (run-hooks 'gnus-article-decode-hook))
-                   (gnus-article-prepare-display)
-                    gnus-article-mime-handles)))
-            (when handles
-              (setq gnus-article-mime-handles
-                    (mm-merge-handles gnus-article-mime-handles handles))))))
        display text
         gnus-displaying-mime)
     (catch 'ignored
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 56d05c8..d2a6d2c 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -451,7 +451,7 @@ This is only used if `mm-inline-large-images' is set to
 
 (defvar mm-inline-message-prepare-function nil
   "Function called by `mm-inline-message' to do client specific setup.
-It is called with one parameter -- the charset.")
+It is called with two parameters -- the MIME handle and the charset.")
 
 (defun mm-inline-message (handle)
   "Insert HANDLE (a message/rfc822 part) into the current buffer.
@@ -471,7 +471,7 @@ after inserting the part."
        (narrow-to-region b b)
        (mm-insert-part handle)
         (when mm-inline-message-prepare-function
-         (funcall mm-inline-message-prepare-function charset))
+         (funcall mm-inline-message-prepare-function handle charset))
        (goto-char (point-min))
        (unless bolp
          (insert "\n"))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]