bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#42300: Visual bug in diff-mode


From: Stefan Kangas
Subject: bug#42300: Visual bug in diff-mode
Date: Thu, 13 Aug 2020 09:23:52 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

tags 42300 + confirmed
found 42300 28.0.50
thanks

Gregory Heytings <ghe@sdf.org> writes:

> Diff-mode was updated in Emacs 27, and it is now possible to use the fringe to
> indicate whether the lines were added, deleted, or are common. The face is
> omitted in the display property in the case common lines, which leads to the 
> bug
> described below.
>
> Steps to reproduce:
>
> 1. start emacs -Q
> 2. (setq diff-font-lock-prettify t)
> 3. to make the bug clearly visible: (set-face-attribute 'fringe nil 
> :background "red" :foreground "yellow")
> 4. open a diff file (with "common" lines, that is, lines starting with a 
> space)
> 5. observe that the fringe in front of the common lines is red
> 6. press C-x C-+, the fringe in front of the common lines is now white
> 7. press -, the fringe in front of the common lines is now red again

I can reproduce this on current master, and verify that the below change
fixes it.

I'm not that familiar with diff-mode.ela nor font-locking so it's better
that someone else takes a look and installs the fix.

> --- diff-mode.el.orig 2020-06-29 17:39:26.000000000 +0000
> +++ diff-mode.el      2020-07-09 18:44:08.000000000 +0000
> @@ -2518,7 +2518,7 @@
>                                 '((?+ . (left-fringe diff-fringe-add 
> diff-indicator-added))
>                                   (?- . (left-fringe diff-fringe-del 
> diff-indicator-removed))
>                                   (?! . (left-fringe diff-fringe-rep 
> diff-indicator-changed))
> -                                 (?\s . (left-fringe diff-fringe-nul))))))
> +                                 (?\s . (left-fringe diff-fringe-nul 
> fringe))))))
>            (put-text-property (match-beginning 0) (match-end 0) 'display 
> spec))))
>      ;; Mimicks the output of Magit's diff.
>      ;; FIXME: This has only been tested with Git's diff output.

Best regards,
Stefan Kangas





reply via email to

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