branch: elpa/magit
commit 0254d201537f93eedae79cc0fdd8bd9c74e1c2f0
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>

    magit-section-paint: Cosmetics
    
    The old way was nicer but starting with the next commit
    we use different faces for different parts of each line.
---
 lisp/magit-diff.el | 67 ++++++++++++++++++++++++++++++------------------------
 1 file changed, 37 insertions(+), 30 deletions(-)

diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el
index 7a1f2340ed..4d07e1f360 100644
--- a/lisp/magit-diff.el
+++ b/lisp/magit-diff.el
@@ -3418,39 +3418,46 @@ actually a `diff' but a `diffstat' section."
     (forward-line)
     (while (< (point) end)
       (let ((bol (point))
-            (eol (line-end-position)))
+            (eol (line-end-position))
+            (line-face nil))
         (when (and magit-diff-hide-trailing-cr-characters
                    (char-equal ?\r (char-before eol)))
           (put-text-property (1- eol) eol 'invisible t))
-        (put-text-property
-         bol (1+ eol) 'font-lock-face
-         (cond
-           ((looking-at "^\\+\\+?\\([<=|>]\\)\\{7\\}")
-            (setq stage (pcase (list (match-str 1) highlight)
-                          ('("<" nil) 'magit-diff-our)
-                          ('("<"   t) 'magit-diff-our-highlight)
-                          ('("|" nil) 'magit-diff-base)
-                          ('("|"   t) 'magit-diff-base-highlight)
-                          ('("=" nil) 'magit-diff-their)
-                          ('("="   t) 'magit-diff-their-highlight)
-                          ('(">" nil) nil)))
-            (if highlight
-                'magit-diff-conflict-heading-highlight
-              'magit-diff-conflict-heading))
-           ((looking-at (if merging "^\\(\\+\\| \\+\\)" "^\\+"))
-            (magit-diff-paint-tab merging tab-width)
-            (magit-diff-paint-whitespace merging 'added diff-type)
-            (or stage
-                (if highlight 'magit-diff-added-highlight 'magit-diff-added)))
-           ((looking-at (if merging "^\\(-\\| -\\)" "^-"))
-            (magit-diff-paint-tab merging tab-width)
-            (magit-diff-paint-whitespace merging 'removed diff-type)
-            (if highlight 'magit-diff-removed-highlight 'magit-diff-removed))
-           (t
-            (magit-diff-paint-tab merging tab-width)
-            (magit-diff-paint-whitespace merging 'context diff-type)
-            (if highlight 'magit-diff-context-highlight 'magit-diff-context))))
-        (forward-line))))
+        (cond
+          ((looking-at "^\\+\\+?\\([<=|>]\\)\\{7\\}")
+           (setq line-face
+                 (if highlight
+                     'magit-diff-conflict-heading-highlight
+                   'magit-diff-conflict-heading))
+           (setq stage
+                 (pcase (list (match-str 1) highlight)
+                   ('("<" nil) 'magit-diff-our)
+                   ('("<"   t) 'magit-diff-our-highlight)
+                   ('("|" nil) 'magit-diff-base)
+                   ('("|"   t) 'magit-diff-base-highlight)
+                   ('("=" nil) 'magit-diff-their)
+                   ('("="   t) 'magit-diff-their-highlight)
+                   ('(">" nil) nil))))
+          ((looking-at (if merging "^\\(\\+\\| \\+\\)" "^\\+"))
+           (magit-diff-paint-tab merging tab-width)
+           (magit-diff-paint-whitespace merging 'added diff-type)
+           (setq line-face (cond (stage)
+                                 (highlight 'magit-diff-added-highlight)
+                                 ('magit-diff-added))))
+          ((looking-at (if merging "^\\(-\\| -\\)" "^-"))
+           (magit-diff-paint-tab merging tab-width)
+           (magit-diff-paint-whitespace merging 'removed diff-type)
+           (setq line-face (if highlight
+                               'magit-diff-removed-highlight
+                             'magit-diff-removed)))
+          (t
+           (magit-diff-paint-tab merging tab-width)
+           (magit-diff-paint-whitespace merging 'context diff-type)
+           (setq line-face (if highlight
+                               'magit-diff-context-highlight
+                             'magit-diff-context))))
+        (put-text-property bol (1+ eol) 'font-lock-face line-face))
+      (forward-line)))
   (when (eq magit-diff-refine-hunk 'all)
     (magit-diff-update-hunk-refinement section))
   (oset section painted (if highlight 'highlight 'plain)))

Reply via email to