Subject: bug#32474: closed (Re: bug#32474: 27.0.50; Gnus doesn't highlight refined changes in diff attachments)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 30 Aug 2018 22:18:02 +0000

Your bug report

#32474: 27.0.50; Gnus doesn't highlight refined changes in diff attachments

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
32474: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32474
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#32474: 27.0.50; Gnus doesn't highlight refined changes in diff attachments
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Fri, 31 Aug 2018 01:17:14 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Since refined changes in diff attachments are highlighted using overlays,
> they need special treatment to be copied together with text properties:

Done in eb5588db69.

Subject: 27.0.50; Gnus doesn't highlight refined changes in diff attachments
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Mon, 20 Aug 2018 00:20:02 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Since refined changes in diff attachments are highlighted using overlays,
they need special treatment to be copied together with text properties:

diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 50a927bce2..0b15f6b188 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -452,7 +452,7 @@ mm-display-inline-fontify
   "Insert HANDLE inline fontifying with MODE.
 If MODE is not set, try to find mode automatically."
   (let ((charset (mail-content-type-get (mm-handle-type handle) 'charset))
-	text coding-system)
+	text coding-system ovs)
     (unless (eq charset 'gnus-decoded)
       (mm-with-unibyte-buffer
 	(mm-insert-part handle)
@@ -498,10 +498,18 @@ mm-display-inline-fontify
 		      (eq major-mode 'fundamental-mode))
 	    (font-lock-ensure))))
       (setq text (buffer-string))
+      (when (eq mode 'diff-mode)
+	(setq ovs (mapcar (lambda (ov) (list ov (overlay-start ov)
+	                                        (overlay-end ov)))
+	                  (overlays-in (point-min) (point-max)))))
       ;; Set buffer unmodified to avoid confirmation when killing the
       ;; buffer.
       (set-buffer-modified-p nil))
-    (mm-insert-inline handle text)))
+    (let ((b (1- (point))))
+      (mm-insert-inline handle text)
+      (dolist (ov ovs)
+	(move-overlay (nth 0 ov) (+ (nth 1 ov) b)
+	                         (+ (nth 2 ov) b) (current-buffer))))))
 
 ;; Shouldn't these functions check whether the user even wants to use
 ;; font-lock?  Also, it would be nice to change for the size of the