GNU bug report logs - #67404
30.0.50; Issue with :box face attribute

Previous Next

Package: emacs;

Reported by: David Ponce <da_vid <at> orange.fr>

Date: Thu, 23 Nov 2023 15:24:02 UTC

Severity: normal

Found in version 30.0.50

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

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#67404: closed (30.0.50; Issue with :box face attribute)
Date: Thu, 30 Nov 2023 17:55:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 30 Nov 2023 19:53:40 +0200
with message-id <83msuvb00r.fsf <at> gnu.org>
and subject line Re: bug#67404: 30.0.50; Issue with :box face attribute
has caused the debbugs.gnu.org bug report #67404,
regarding 30.0.50; Issue with :box face attribute
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
67404: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67404
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: David Ponce <da_vid <at> orange.fr>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; Issue with :box face attribute
Date: Thu, 23 Nov 2023 16:23:15 +0100
Hello,

The below face with specified :box attribute can be defined and further
used without problem:

(defface test-face
  '((t
     (:box (:style released-button :line-width (3 . 0)))
     ))
  "Test face.")

(insert (propertize "XXXXX" 'face 'test-face))

However, it is not possible to apply any change to this face with
`customize-face', for example to change :line-width (3 . 0) to
:line-width (2 . 0), or to add a :foreground color, etc.  This fails
with the message "set-face-attribute: Invalid face box: :line-width,
<value>, :style, <value>", and the :box attribute is discarded.

AFAICS, :box attribute with any zero :line-width value works as
expected: the box line with zero width is not displayed.  But zero is
not considered as a valid value by `set-face-attribute' (in fact, the
internal function `internal-set-lisp-face-attribute').

For consistency, a zero :line-width value either should be accepted by
`internal-set-lisp-face-attribute', or never accepted at all.

Thanks


In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
 3.24.38, cairo version 1.18.0) of 2023-11-21
Repository revision: 3328c327254b5846782990f6171175bea216eba9
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 39 (KDE Plasma)

Configured using:
 'configure --with-x-toolkit=gtk3 --with-cairo-xcb
 --with-native-compilation=no
 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LC_TIME: fr_FR.utf8
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix


[Message part 3 (message/rfc822, inline)]
From: Eli Zaretskii <eliz <at> gnu.org>
To: David Ponce <da_vid <at> orange.fr>
Cc: 67404-done <at> debbugs.gnu.org, maurooaranda <at> gmail.com
Subject: Re: bug#67404: 30.0.50; Issue with :box face attribute
Date: Thu, 30 Nov 2023 19:53:40 +0200
> Date: Thu, 30 Nov 2023 17:20:44 +0100
> Cc: 67404 <at> debbugs.gnu.org
> From: David Ponce <da_vid <at> orange.fr>
> 
> I confirm that with your fix on master branch, the behavior is now
> consistent between defface and customize-face: both signal an error
> on value zero for line-width :-)

Thanks for testing, I'm therefore closing this bug.

> However, please note that it remains possible to use a value zero for
> line-width on an anonymous face.  For example, in the *scratch* buffer
> you still can eval the below expression without error:
>   
> (insert
>    (propertize "xxxx" 'font-lock-face
>                '(:box (:style released-button :line-width (3 . 0)))))

This seems to be a general issue with anonymous faces: their
attributes are validated much more leniently than those of defface.
For example, try:

  (insert
     (propertize "xxxx" 'font-lock-face
		 '(:box (:style foobar :line-width 'bogus))))
or

  (insert
     (propertize "xxxx" 'font-lock-face
		 '(:underline (foo bar :style bogus :position))))

You get a face that effectively ignores the invalid attributes.  I'm
not sure we need to change that.


This bug report was last modified 1 year and 227 days ago.

Previous Next


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