GNU bug report logs - #72156
31.0.50; defcustom set issue

Previous Next

Package: emacs;

Reported by: Ergus <spacibba <at> aol.com>

Date: Wed, 17 Jul 2024 12:10:01 UTC

Severity: normal

Merged with 72404

Found in versions 30.0.60, 31.0.50

To reply to this bug, email your comments to 72156 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#72156; Package emacs. (Wed, 17 Jul 2024 12:10:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ergus <spacibba <at> aol.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 17 Jul 2024 12:10:01 GMT) Full text and rfc822 format available.

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

From: Ergus <spacibba <at> aol.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; defcustom set issue
Date: Wed, 17 Jul 2024 14:08:59 +0200

Hi:

I have this defcustom:

```
(defcustom gtags-mode-features '(control meta)
  "HELLO WORLD"
  :type '(set (const control)
              (const meta)
              (const shift)
              (const hyper)
              (const super)
              (const alt)))
```

When I try the customize-variable I get this:

```
Hide Gtags Mode Features:
Set:
[X] control
[X] meta
[ ] shift
[ ] hyper
[ ] super
[ ] alt
   [ State ]: EDITED, shown value does not take effect until you set or save it.
   HELLO WORLD
Groups: [Gtags Mode]
```

But, if I do the next change and save


```
Hide Gtags Mode Features:
Set:
[X] control
[X] meta
[X] shift
[ ] hyper
[ ] super
[ ] alt
   [ State ]: EDITED, shown value does not take effect until you set or save it.
   HELLO WORLD
Groups: [Gtags Mode]
```

The customize variable value saved is:

'(gtags-mode-features3 '(shift))

it only saved the "new" value and ignores the previous
existing ones.

When I restart and check the variable's value I get as expected '(shift)
and lost the control and meta.

Going to customize-variable again I get:

```
Hide Gtags Mode Features:
Set:
[ ] control
[ ] meta
[X] shift
[ ] hyper
[ ] super
[ ] alt
   [ State ]: EDITED, shown value does not take effect until you set or save it.
   HELLO WORLD
Groups: [Gtags Mode]
```

Consistent with the variable value, but inconsistent with what was
actually saved before.

IF instead of selecting a new value I un-select some, then variable
saves nil and will be nil.





In GNU Emacs 31.0.50 (build 13, x86_64-pc-linux-gnu, GTK+ Version
 3.24.43, cairo version 1.18.0) of 2024-07-17 built on RTX
Repository revision: 438a7da5530a32d20de769e3450e4fc3a74e9236
Repository branch: project
System Description: Arch Linux

Configured using:
 'configure --prefix=/home/ergo/.local/ --with-mailutils --with-pgtk
 --with-modules --with-cairo --with-harfbuzz
 --with-native-compilation=aot
 '--program-transform-name=s/^ctags$/ctags.emacs/''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM GTK3 ZLIB

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

Major mode: Custom

Minor modes in effect:
  fancy-compilation-mode: t
  global-auto-revert-mode: t
  diff-hl-margin-mode: t
  corfu-terminal-mode: t
  global-corfu-mode: t
  corfu-mode: t
  project-multi-mode: t
  gtags-mode: t
  repeat-mode: t
  xterm-mouse-mode: t
  xclip-mode: t
  override-global-mode: t
  winner-mode: t
  save-place-mode: t
  delete-selection-mode: t
  savehist-mode: t
  global-display-fill-column-indicator-mode: t
  display-fill-column-indicator-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  which-key-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  size-indication-mode: t
  column-number-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:
/mnt/casa/gits/emacs_clones/cuda-mode/cuda-mode hides /home/ergo/.config/emacs/elpa/cuda-mode-20240716.1936/cuda-mode
/mnt/casa/gits/emacs_clones/gtags-mode/gtags-mode hides /home/ergo/.config/emacs/elpa/gtags-mode-1.8/gtags-mode
/home/ergo/.config/emacs/elpa/transient-20240713.2102/transient hides /home/ergo/.local/share/emacs/31.0.50/lisp/transient

Features:
(shadow sort fancy-compilation compile comint ansi-osc ansi-color
comp-run comp-common mail-extr emacsbug message mailcap yank-media puny
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils time-date tabify help-fns radix-tree
cus-edit pp cus-start cus-load wid-edit find-func autorevert filenotify
ffap thingatpt url-parse auth-source eieio eieio-core icons
password-cache json map url-vars vc-git elec-pair whitespace
flyspell-correct flyspell ispell completion-preview diff-hl-margin
diff-hl-dired citre-lang-fileref citre-tags citre-ctags citre-readtags
citre-readtags-tables citre-backend-interface citre-common-tag rx
citre-common-util dired-x dired dired-loaddefs diff-hl log-view
pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode track-changes
corfu-terminal popon corfu project-multi-mode gtags-mode cl-macs subr-x
files-x xref project term/tmux term/xterm xterm init repeat cape compat
use-package-ensure use-package-diminish xt-mouse xclip edmacro kmacro
byte-opt gv use-package-bind-key bind-key cl-extra help-mode
simple-16-theme winner ring saveplace delsel savehist easy-mmode
display-fill-column-indicator display-line-numbers diminish which-key
cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile
disp-table info ac-emoji-autoloads ac-haskell-process-autoloads
ac-html-autoloads arduino-cli-mode-autoloads auctex-autoloads tex-site
auto-complete-autoloads avy-zap-autoloads avy-autoloads
better-shell-autoloads caml-autoloads cape-autoloads citre-autoloads
clang-format-autoloads cobol-mode-autoloads compile-multi-autoloads
corfu-terminal-autoloads corfu-autoloads crdt-autoloads
csv-mode-autoloads cuda-mode-autoloads d-mode-autoloads
deadgrep-autoloads debbugs-autoloads diff-hl-autoloads
diminish-autoloads dired-sidebar-autoloads dired-subtree-autoloads
dired-hacks-utils-autoloads dumb-jump-autoloads e2ansi-autoloads
emamux-autoloads esup-autoloads evil-collection-autoloads
annalist-autoloads evil-leader-autoloads evil-autoloads
face-explorer-autoloads fancy-compilation-autoloads flx-autoloads
flycheck-julia-autoloads flycheck-rust-autoloads flycheck-autoloads
flymake-nasm-autoloads flymake-quickdef-autoloads
flyspell-correct-autoloads git-modes-autoloads git-timemachine-autoloads
gnuplot-autoloads google-c-style-autoloads goto-chg-autoloads
groovy-mode-autoloads gtags-mode-autoloads haskell-mode-autoloads
highlight-indent-guides-autoloads i3wm-config-mode-autoloads
ibuffer-sidebar-autoloads iedit-autoloads imenu-list-autoloads
julia-ts-mode-autoloads julia-mode-autoloads languagetool-autoloads
lice-autoloads lorem-ipsum-autoloads lua-mode-autoloads magit-autoloads
git-commit-autoloads magit-section-autoloads markdown-mode-autoloads
modern-cpp-font-lock-autoloads move-dup-autoloads
multiple-cursors-autoloads mutt-mode-autoloads nasm-mode-autoloads
neotree-autoloads nftables-mode-autoloads nginx-mode-autoloads
notmuch-autoloads objed-autoloads opencl-mode-autoloads
paradox-autoloads phi-search-autoloads pkg-info-autoloads epl-autoloads
pkgbuild-mode-autoloads platformio-mode-autoloads async-autoloads
popon-autoloads popup-autoloads projectile-autoloads
projection-autoloads protobuf-mode-autoloads protobuf-ts-mode-autoloads
ptemplate-templates-autoloads ptemplate-autoloads scopeline-autoloads
shell-command+-autoloads slime-autoloads macrostep-autoloads
sphinx-mode-autoloads f-autoloads dash-autoloads s-autoloads
spinner-autoloads ssh-config-mode-autoloads string-inflection-autoloads
sudo-edit-autoloads systemd-autoloads tmux-mode-autoloads
transient-autoloads tsc-autoloads urgrep-autoloads vdiff-autoloads
hydra-autoloads lv-autoloads vterm-toggle-autoloads vterm-autoloads
vundo-autoloads with-editor-autoloads xclip-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads early-init rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win touch-screen pgtk-dnd 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
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 218529 26550) (symbols 48 17046 3) (strings 32 56773 7397)
 (string-bytes 1 1882457) (vectors 16 20651)
 (vector-slots 8 239085 7886) (floats 8 102 151) (intervals 56 1573 0)
 (buffers 992 18))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72156; Package emacs. (Sat, 20 Jul 2024 08:51:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Ergus <spacibba <at> aol.com>, Mauro Aranda <maurooaranda <at> gmail.com>
Cc: 72156 <at> debbugs.gnu.org
Subject: Re: bug#72156: 31.0.50; defcustom set issue
Date: Sat, 20 Jul 2024 11:50:47 +0300
> Date: Wed, 17 Jul 2024 14:08:59 +0200
> From:  Ergus via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> I have this defcustom:
> 
> ```
> (defcustom gtags-mode-features '(control meta)
>   "HELLO WORLD"
>   :type '(set (const control)
>               (const meta)
>               (const shift)
>               (const hyper)
>               (const super)
>               (const alt)))
> ```
> 
> When I try the customize-variable I get this:
> 
> ```
> Hide Gtags Mode Features:
> Set:
> [X] control
> [X] meta
> [ ] shift
> [ ] hyper
> [ ] super
> [ ] alt
>    [ State ]: EDITED, shown value does not take effect until you set or save it.
>    HELLO WORLD
> Groups: [Gtags Mode]
> ```
> 
> But, if I do the next change and save
> 
> 
> ```
> Hide Gtags Mode Features:
> Set:
> [X] control
> [X] meta
> [X] shift
> [ ] hyper
> [ ] super
> [ ] alt
>    [ State ]: EDITED, shown value does not take effect until you set or save it.
>    HELLO WORLD
> Groups: [Gtags Mode]
> ```
> 
> The customize variable value saved is:
> 
> '(gtags-mode-features3 '(shift))
> 
> it only saved the "new" value and ignores the previous
> existing ones.
> 
> When I restart and check the variable's value I get as expected '(shift)
> and lost the control and meta.
> 
> Going to customize-variable again I get:
> 
> ```
> Hide Gtags Mode Features:
> Set:
> [ ] control
> [ ] meta
> [X] shift
> [ ] hyper
> [ ] super
> [ ] alt
>    [ State ]: EDITED, shown value does not take effect until you set or save it.
>    HELLO WORLD
> Groups: [Gtags Mode]
> ```
> 
> Consistent with the variable value, but inconsistent with what was
> actually saved before.
> 
> IF instead of selecting a new value I un-select some, then variable
> saves nil and will be nil.

This seems to be some bug in handling the 'set' type of defcustoms.  I
see the same problem when customizing completions-merging-modes from
completion.el.  Perhaps Mauro (CC'ed) could chime in and suggest how
to solve this.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#72156; Package emacs. (Sun, 04 Aug 2024 07:40:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: spacibba <at> aol.com, maurooaranda <at> gmail.com
Cc: 72156 <at> debbugs.gnu.org, Stephen Berman <stephen.berman <at> gmx.net>
Subject: Re: bug#72156: 31.0.50; defcustom set issue
Date: Sun, 04 Aug 2024 10:38:42 +0300
merge 72156 72404
thanks

> Cc: 72156 <at> debbugs.gnu.org
> Date: Sat, 20 Jul 2024 11:50:47 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > Date: Wed, 17 Jul 2024 14:08:59 +0200
> > From:  Ergus via "Bug reports for GNU Emacs,
> >  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> > 
> > I have this defcustom:
> > 
> > ```
> > (defcustom gtags-mode-features '(control meta)
> >   "HELLO WORLD"
> >   :type '(set (const control)
> >               (const meta)
> >               (const shift)
> >               (const hyper)
> >               (const super)
> >               (const alt)))
> > ```
> > 
> > When I try the customize-variable I get this:
> > 
> > ```
> > Hide Gtags Mode Features:
> > Set:
> > [X] control
> > [X] meta
> > [ ] shift
> > [ ] hyper
> > [ ] super
> > [ ] alt
> >    [ State ]: EDITED, shown value does not take effect until you set or save it.
> >    HELLO WORLD
> > Groups: [Gtags Mode]
> > ```
> > 
> > But, if I do the next change and save
> > 
> > 
> > ```
> > Hide Gtags Mode Features:
> > Set:
> > [X] control
> > [X] meta
> > [X] shift
> > [ ] hyper
> > [ ] super
> > [ ] alt
> >    [ State ]: EDITED, shown value does not take effect until you set or save it.
> >    HELLO WORLD
> > Groups: [Gtags Mode]
> > ```
> > 
> > The customize variable value saved is:
> > 
> > '(gtags-mode-features3 '(shift))
> > 
> > it only saved the "new" value and ignores the previous
> > existing ones.
> > 
> > When I restart and check the variable's value I get as expected '(shift)
> > and lost the control and meta.
> > 
> > Going to customize-variable again I get:
> > 
> > ```
> > Hide Gtags Mode Features:
> > Set:
> > [ ] control
> > [ ] meta
> > [X] shift
> > [ ] hyper
> > [ ] super
> > [ ] alt
> >    [ State ]: EDITED, shown value does not take effect until you set or save it.
> >    HELLO WORLD
> > Groups: [Gtags Mode]
> > ```
> > 
> > Consistent with the variable value, but inconsistent with what was
> > actually saved before.
> > 
> > IF instead of selecting a new value I un-select some, then variable
> > saves nil and will be nil.
> 
> This seems to be some bug in handling the 'set' type of defcustoms.  I
> see the same problem when customizing completions-merging-modes from
> completion.el.  Perhaps Mauro (CC'ed) could chime in and suggest how
> to solve this.

This actually seems to be the same problem as bug#72404, since the fix
proposed by Stephen there fixes this one as well.  So I'm merging them.




Merged 72156 72404. Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Sun, 04 Aug 2024 07:40:02 GMT) Full text and rfc822 format available.

This bug report was last modified 74 days ago.

Previous Next


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