diff options
| author | Jonas Bernoulli <jonas@bernoul.li> | 2017-10-27 15:16:50 +0200 |
|---|---|---|
| committer | Jonas Bernoulli <jonas@bernoul.li> | 2017-10-27 15:41:21 +0200 |
| commit | 958da37b4ad56ef98e447efb2914f8db25430acf (patch) | |
| tree | 77136d5d60f65f2098365ddfb11c4d91f46df303 /lisp/magit-diff.el | |
| parent | fef502f0c2c30d0d5639ddf268dd0399a530803e (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.el | 11 |
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) |
