aboutsummaryrefslogtreecommitdiff
path: root/lisp/magit-diff.el
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2017-10-27 15:16:50 +0200
committerJonas Bernoulli <jonas@bernoul.li>2017-10-27 15:41:21 +0200
commit958da37b4ad56ef98e447efb2914f8db25430acf (patch)
tree77136d5d60f65f2098365ddfb11c4d91f46df303 /lisp/magit-diff.el
parentfef502f0c2c30d0d5639ddf268dd0399a530803e (diff)
Use correct width for leading tabs in diffs
,---- An added line like |<tab-><tab->text should be displayed in a diff as |+<tab-><tab->text but the display engine turns it into |+<tab><tab->text `---- We have to set the `:width' of each leading tab individually to prevent that. Closes #3185.
Diffstat (limited to 'lisp/magit-diff.el')
-rw-r--r--lisp/magit-diff.el11
1 files changed, 11 insertions, 0 deletions
diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el
index 1246efe..96338bc 100644
--- a/lisp/magit-diff.el
+++ b/lisp/magit-diff.el
@@ -2279,16 +2279,27 @@ are highlighted."
(`(">" nil) nil)))
'magit-diff-conflict-heading)
((looking-at (if merging "^\\(\\+\\| \\+\\)" "^\\+"))
+ (magit-diff-paint-tab merging)
(magit-diff-paint-whitespace merging)
(or stage
(if highlight 'magit-diff-added-highlight 'magit-diff-added)))
((looking-at (if merging "^\\(-\\| -\\)" "^-"))
+ (magit-diff-paint-tab merging)
(if highlight 'magit-diff-removed-highlight 'magit-diff-removed))
(t
+ (magit-diff-paint-tab merging)
(if highlight 'magit-diff-context-highlight 'magit-diff-context))))
(forward-line))))))
(magit-diff-update-hunk-refinement section))
+(defun magit-diff-paint-tab (merging)
+ (save-excursion
+ (forward-char (if merging 2 1))
+ (while (= (char-after) ?\t)
+ (put-text-property (point) (1+ (point))
+ 'display (list (list 'space :width tab-width)))
+ (forward-char))))
+
(defun magit-diff-paint-whitespace (merging)
(when (and magit-diff-paint-whitespace
(or (derived-mode-p 'magit-status-mode)