GNU bug report logs - #74536
30.0.50; undocumented box behaviour in faces

Previous Next

Package: emacs;

Reported by: Al Haji-Ali <abdo.haji.ali <at> gmail.com>

Date: Mon, 25 Nov 2024 19:35:02 UTC

Severity: normal

Tags: notabug

Found in version 30.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 74536 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Al Haji-Ali <abdo.haji.ali <at> gmail.com>
Cc: 74536 <at> debbugs.gnu.org
Subject: Re: bug#74536: 30.0.50; undocumented box behaviour in faces
Date: Mon, 25 Nov 2024 21:44:51 +0200
tags 74536 notabug
thanks

> From: Al Haji-Ali <abdo.haji.ali <at> gmail.com>
> Date: Mon, 25 Nov 2024 19:34:41 +0000
> 
> 
> The output of the following code is
> 
> --8<---------------cut here---------------start------------->8---
> (progn
>   (fundamental-mode)
>   (insert (concat "\n"
>                   (propertize "hello" 'face '(:box (:line-width (3 . 0) :color "red")))
>                   (propertize " again" 'face '(:box (:line-width (3 . 0) :color "yellow")))
>                   (propertize " other" 'face '(:box (:line-width (3 . 0) :color "green"))))
>           "\n"))
> --8<---------------cut here---------------end--------------->8---
> 
> 
> |hello again other|
> 
> where the left border is red and the right one is green and the yellow border is completely hidden. Having negative line-width produces the same output.

As expected.

> It seems that one cannot have multiple adjacent borders unless one has some text in between without a border, like this
> --8<---------------cut here---------------start------------->8---
> (progn
>   (fundamental-mode)
>   (insert (concat "\n"
>                   (propertize "hello" 'face '(:box (:line-width (3 . 0) :color "red")))
>                   " "
>                   (propertize " again" 'face '(:box (:line-width (3 . 0) :color "yellow")))
>                   (propertize " othe " 'face '(:box (:line-width (3 . 0) :color "green"))))
>           "\n"))
> --8<---------------cut here---------------end--------------->8---
> 
> produces
> 
> |hello| | again other|
> 
> with (red, red, yellow, green) borders.

Yes.  Basically, Emacs doesn't examine box face changes unless it
changes from box to no-box or vice versa.

> I find this behaviour, if intended, sometimes helpful as it allows one to have a one-sided border. Though it would be helpful if the exact mechanism is documented.

What mechanism would you like to be documented?

> In any case, I was also originally expecting, and wanting, an output like this
> |hello| again | other|
> 
> with `(red, yellow, green, green)` and no text in between, but it seems there is no way to achieve such output? Is that correct?

Yes.




This bug report was last modified 172 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.