unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#66391: 30.0.50; Error when saving a face with :underline attribute in Customize
@ 2023-10-07 14:24 Mauro Aranda
  2023-10-07 15:02 ` Mauro Aranda
  0 siblings, 1 reply; 3+ messages in thread
From: Mauro Aranda @ 2023-10-07 14:24 UTC (permalink / raw)
  To: 66391

This cannot be reproduced with emacs -Q, since it involves attempting to
save customizations to the custom-file.

So, backup your custom-file and init file, or follow these steps with a
test use.  Start Emacs and evaluate the following:

(defface foo '((t nil))
   "...")

Then: M-x customize-face RET foo
Action Show All Attributes, select the Underline attribute and in the
Value Menu select On.
Leave all the default options for the On choice.  That is, the buffer
should show:
    [X] Underline: Value Menu On:
        Color: Value Menu Foreground Color
        Style: Value Menu Line
        Position: Value Menu At Default Position

Action State, select Save for Future Sessions.
There's an error and the face is not saved:
set-face-attribute: Invalid face underline: :color, nil, :style, nil, 
:position, nil

I think the following commit made this problem visible, but it might not
be the code that actually has the bug.  I'm not sure yet.

commit a4c07bc8c8201a620c4365c1d0d2cb814cc677a9
Author: Alan Mackenzie <acm@muc.de>
Date:   Fri May 1 12:23:15 2020 +0000

     Protect non-selected face spec components in custimize-face.  Fixes 
bug #40866

     * lisp/cus-edit.el (custom-face-save): If the current face widget 
is only
     displaying part of the face spec, temporarily set it to "display" 
the whole
     spec around the call to custom-face-mark-to-save.


In GNU Emacs 30.0.50 (build 75, x86_64-pc-linux-gnu, GTK+ Version
  3.24.33, cairo version 1.16.0) of 2023-10-07 built on tbb-desktop
Repository revision: b583cb81c90ee452c754777e33571dbd23f159ff
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12201001
System Description: Ubuntu 22.04.3 LTS

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 X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
   value of $LC_MONETARY: es_AR.UTF-8
   value of $LC_NUMERIC: es_AR.UTF-8
   value of $LC_TIME: es_AR.UTF-8
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: @im=ibus
   locale-coding-system: utf-8-unix

Major mode: Custom

Minor modes in effect:
   tooltip-mode: t
   global-eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   minibuffer-regexp-mode: t
   line-number-mode: t
   indent-tabs-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
/home/tbb/.emacs.d/elpa/transient-20221019.941/transient hides 
/home/tbb/code/emacs/emacs/lisp/transient

Features:
(shadow sort mail-extr emacsbug message yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util text-property-search time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils crm thingatpt cus-edit
pp cus-start cus-load icons wid-edit finder-inf 750words-autoloads
adjust-parens-autoloads auctex-autoloads tex-site cider-autoloads
csv-mode-autoloads epkg-autoloads closql-autoloads excorporate-autoloads
fsm-autoloads git-modes-autoloads inf-clojure-autoloads
clojure-mode-autoloads magit-autoloads git-commit-autoloads
magit-section-autoloads package-lint-autoloads parseedn-autoloads
parseclj-autoloads pdf-tools-autoloads perl-doc-autoloads
sesman-autoloads slime-autoloads swift-mode-autoloads tam-autoloads
queue-autoloads uniquify-files-autoloads url-http-ntlm-autoloads
url-http-oauth-autoloads url-auth webdriver-autoloads
with-editor-autoloads dash-autoloads transient-autoloads info
compat-autoloads package-theme package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib server
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 291616 11765) (symbols 48 16588 0) (strings 32 99007 3417)
  (string-bytes 1 2433500) (vectors 16 24631)
  (vector-slots 8 357831 7593) (floats 8 37 99) (intervals 56 335 15)
  (buffers 992 14))






^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#66391: 30.0.50; Error when saving a face with :underline attribute in Customize
  2023-10-07 14:24 bug#66391: 30.0.50; Error when saving a face with :underline attribute in Customize Mauro Aranda
@ 2023-10-07 15:02 ` Mauro Aranda
  2023-10-14  7:49   ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: Mauro Aranda @ 2023-10-07 15:02 UTC (permalink / raw)
  To: 66391

[-- Attachment #1: Type: text/plain, Size: 623 bytes --]

tags 66391 patch
quit


Hmm, actually, it was I that made a thinko when trying to fix Bug#44331
that the previously cited commit introduced.

commit ecec9a259b13d88fa23dde078fba99ae78ef79c7
Author: Mauro Aranda <maurooaranda@gmail.com>
Date:   Sun Nov 1 10:10:08 2020 -0300

     Fix saving a face setting with Customize

     * lisp/cus-edit.el (custom-face-save): Make sure we back up into the
     :shown-value property what the user has edited so far, if we are going
     to recreate the custom-face widget.  (Bug#44331)

---

The :shown-value should be just the value as the widget holds it, not a
post-filtered one.

[-- Attachment #2: 0001-Fix-saving-faces-with-attributes-that-need-filtering.patch --]
[-- Type: text/x-patch, Size: 1367 bytes --]

From e003b24ad69d0dce4916b32e6c5c36c2745b24ae Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Sat, 7 Oct 2023 11:57:18 -0300
Subject: [PATCH] Fix saving faces with attributes that need filtering

* lisp/cus-edit.el (custom-face-save): The :shown-value property for
the custom-face widget is supposed to be a value suitable for the
customization widget.  (Bug#66391)
---
 lisp/cus-edit.el | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 1021707907d..706e08d5657 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4148,7 +4148,10 @@ custom-face-save
       ;; If recreating a widget that may have been edited by the user, remember
       ;; to always save the edited value into the :shown-value property, so
       ;; we use that value for the recreated widget.  (Bug#44331)
-      (widget-put widget :shown-value (custom-face-widget-to-spec widget))
+      (let ((child (car (widget-get widget :children))))
+        (if (eq (widget-type child) 'custom-face-edit)
+            (widget-put widget :shown-value `((t ,(widget-value child))))
+          (widget-put widget :shown-value (widget-value child))))
       (custom-face-edit-all widget)
       (widget-put widget :shown-value nil) ; Reset it after we used it.
       (custom-face-mark-to-save widget)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#66391: 30.0.50; Error when saving a face with :underline attribute in Customize
  2023-10-07 15:02 ` Mauro Aranda
@ 2023-10-14  7:49   ` Eli Zaretskii
  0 siblings, 0 replies; 3+ messages in thread
From: Eli Zaretskii @ 2023-10-14  7:49 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 66391-done

> Date: Sat, 7 Oct 2023 12:02:48 -0300
> From: Mauro Aranda <maurooaranda@gmail.com>
> 
> Hmm, actually, it was I that made a thinko when trying to fix Bug#44331
> that the previously cited commit introduced.
> 
> commit ecec9a259b13d88fa23dde078fba99ae78ef79c7
> Author: Mauro Aranda <maurooaranda@gmail.com>
> Date:   Sun Nov 1 10:10:08 2020 -0300
> 
>      Fix saving a face setting with Customize
> 
>      * lisp/cus-edit.el (custom-face-save): Make sure we back up into the
>      :shown-value property what the user has edited so far, if we are going
>      to recreate the custom-face widget.  (Bug#44331)

Thanks, installed on master and closing the bug.





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-10-14  7:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-07 14:24 bug#66391: 30.0.50; Error when saving a face with :underline attribute in Customize Mauro Aranda
2023-10-07 15:02 ` Mauro Aranda
2023-10-14  7:49   ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).