GNU bug report logs - #60935
30.0.50; ERC >5.5: Improve ERC's treatment of customization groups

Previous Next

Package: emacs;

Reported by: "J.P." <jp <at> neverwas.me>

Date: Wed, 18 Jan 2023 14:51:02 UTC

Severity: normal

Tags: patch

Found in version 30.0.50

Fixed in version 30.1

Done: "J.P." <jp <at> neverwas.me>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 60935 in the body.
You can then email your comments to 60935 AT debbugs.gnu.org in the normal way.

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

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


Report forwarded to emacs-erc <at> gnu.org, bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Wed, 18 Jan 2023 14:51:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "J.P." <jp <at> neverwas.me>:
New bug report received and forwarded. Copy sent to emacs-erc <at> gnu.org, bug-gnu-emacs <at> gnu.org. (Wed, 18 Jan 2023 14:51:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; ERC >5.5: Improve ERC's treatment of customization groups
Date: Wed, 18 Jan 2023 06:50:15 -0800
[Message part 1 (text/plain, inline)]
Tags: patch

While ERC could certainly play nicer with the Customize interface in
general, a couple particularly annoying pain points may deserve more
immediate attention:

 1. ERC's disregard of nonexistent customization groups

    It's well known that ERC struggles when relating module names to
    minor modes and library features. Partly responsible is the
    many-to-one arrangement of multiple modules being housed in a
    singular library. (Third-party packages are, thankfully, denied this
    freedom.) Complicating this is the intertwining of module aliases
    with the various preferred-name migrations that have occurred over
    the years, never mind the twin mode toggles and recent local vs.
    global scoping.

    With all this chaos afoot, it's no wonder customization-group
    mappings have always taken a back seat. The first patch in the
    attached series attempts to address this in a defensive way, mainly
    using heuristics and testing rather than, say, opening
    `define-erc-module' up to arbitrary `defcustom' keyword arguments
    (which is too drastic, IMO).

 2. ERC's presentation of minor-mode variables in Custom-mode buffers

    A (global) module's minor-mode variable appears in its group's
    customization buffer by design. But its presence there is a constant
    source of confusion, even for longtime casual users (as I've
    recently learned). If you'll recall, the only meaningful factor
    affecting automatic module activation is a module's membership in
    `erc-modules'. Thus, to ensure its survival across sessions, a
    module's minor-mode toggle happily mutates `erc-modules', currently
    without informing Customize (or users).

    While this happens to work, the fact that a module's activation
    state only reflects changes after they've been made is apparently
    nonobvious to some. Alas, such users have come to regard minor-mode
    variables as magically declarative, ostensibly prompted by their
    presence in ERC's Custom buffers. But before writing off these folks
    as hopeless, consider the overly convoluted state of affairs here.
    As instructed by many an article on the Emacs Wiki (not to mention
    the Commentary section of at least one built-in module), a good many
    people never deal with `erc-modules' directly and instead simply
    call a series of activation toggles in their init file.

    The second patch in this series aims to address (some of) this by
    taking a slightly circuitous route. Rather than removing the
    minor-mode variable's widget entirely, it opts to confront the
    problem by explaining the situation and offering a modified toggle
    button that, when clicked, opens yet another customize buffer (for
    `erc-modules') and ticks or unticks the item in question, as
    appropriate. The idea is to hopefully force people to confront the
    reality of `erc-modules' being the single source of truth when it
    comes to module activation. For use in lisp-code, the patch also
    changes the custom-set function shared by these minor-mode variables
    so that it updates `erc-modules' via the Customize library API.

The above descriptions are pretty inadequate, in part due to the
UX-centric nature of this bug set. Please try them out for a clearer
picture of what's being proposed. Thanks.


In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version
 3.24.35, cairo version 1.17.6) of 2023-01-17 built on localhost
Repository revision: 281f48f19ecad706a639d57cb937afb0b97eded7
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 36 (Workstation Edition)

Configured using:
 'configure --enable-check-lisp-object-type --enable-checking=yes,glyphs
 'CFLAGS=-O0 -g3'
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/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 WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

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

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  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
  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:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs 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 erc iso8601 time-date
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map thingatpt pp format-spec cl-loaddefs cl-lib erc-backend erc-goodies
erc-networks byte-opt gv bytecomp byte-compile erc-common erc-compat
erc-loaddefs 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 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 move-toolbar gtk x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 64390 6319)
 (symbols 48 8639 0)
 (strings 32 23673 1623)
 (string-bytes 1 685926)
 (vectors 16 15259)
 (vector-slots 8 209777 7692)
 (floats 8 24 35)
 (intervals 56 232 0)
 (buffers 976 10))
[0001-5.6-Don-t-associate-ERC-modules-with-undefined-group.patch (text/x-patch, attachment)]
[0002-5.6-Warn-when-setting-minor-mode-vars-for-ERC-module.patch (text/x-patch, attachment)]
[0003-5.6-Fill-doc-strings-for-ERC-modules.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Tue, 07 Feb 2023 15:24:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Tue, 07 Feb 2023 07:23:04 -0800
[Message part 1 (text/plain, inline)]
v2. Use autoloads for resolving groups in corner cases. Don't change
decades-old preferred module name.

[0000-v1-v2.diff (text/x-patch, attachment)]
[0001-5.6-Don-t-associate-ERC-modules-with-undefined-group.patch (text/x-patch, attachment)]
[0002-5.6-Warn-when-setting-minor-mode-vars-for-ERC-module.patch (text/x-patch, attachment)]
[0003-5.6-Fill-doc-strings-for-ERC-modules.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Sun, 19 Feb 2023 15:04:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Sun, 19 Feb 2023 07:03:18 -0800
[Message part 1 (text/plain, inline)]
v3. Run custom :set function inside toggles. (Now depends on bug#60954.)

[0000-v2-v3.diff (text/x-patch, attachment)]
[0001-5.6-Don-t-associate-ERC-modules-with-undefined-group.patch (text/x-patch, attachment)]
[0002-5.6-Warn-when-setting-minor-mode-vars-for-ERC-module.patch (text/x-patch, attachment)]
[0003-5.6-Fill-doc-strings-for-ERC-modules.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Tue, 14 Mar 2023 13:50:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Tue, 14 Mar 2023 06:43:15 -0700
[Message part 1 (text/plain, inline)]
v4. Use `custom-set-variables' instead of `customize-set-variable'.
Munge `standard-value' of deprecated `erc-foo-mode' variables when
called by `erc-update-modules' (but not interactively).

[0000-v3-v4.diff (text/x-patch, attachment)]
[0001-5.6-Don-t-associate-ERC-modules-with-undefined-group.patch (text/x-patch, attachment)]
[0002-5.6-Warn-when-setting-minor-mode-vars-for-ERC-module.patch (text/x-patch, attachment)]
[0003-5.6-Fill-doc-strings-for-ERC-modules.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Wed, 15 Mar 2023 14:06:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Wed, 15 Mar 2023 07:05:06 -0700
[Message part 1 (text/plain, inline)]
v5. Be more responsible with custom var states. Allow CHANGED for
`erc-modules' but use getter to spoof STANDARD for deprecated mode vars
so widgets stay collapsed.

[0000-v4-v5.diff (text/x-patch, attachment)]
[0001-5.6-Don-t-associate-ERC-modules-with-undefined-group.patch (text/x-patch, attachment)]
[0002-5.6-Warn-when-setting-minor-mode-vars-for-ERC-module.patch (text/x-patch, attachment)]
[0003-5.6-Fill-doc-strings-for-ERC-modules.patch (text/x-patch, attachment)]

bug marked as fixed in version 30.1, send any further explanations to 60935 <at> debbugs.gnu.org and "J.P." <jp <at> neverwas.me> Request was from "J.P." <jp <at> neverwas.me> to control <at> debbugs.gnu.org. (Sat, 08 Apr 2023 23:09:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Fri, 14 Apr 2023 14:04:02 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Fri, 14 Apr 2023 07:03:06 -0700
[Message part 1 (text/plain, inline)]
Seems I was under the mistaken impression that all customizations with a
"CHANGED" state get saved when hitting C-x C-s (`Custom-save'), which is
obviously not the case. Thus, I think it's best not to mislead users by
spoofing the modification state because the only benefit of doing so now
is that carats aren't automatically thrown open on module-var widgets,
which is a comparatively minor annoyance. The attached patch reverts
this spoofing nonsense and also restores a working toggle button so
users again have the option of dismissing the warning.

[0001-5.6-Restore-module-var-toggles-in-ERC-s-Custom-buffe.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60935; Package emacs. (Sat, 06 May 2023 00:55:01 GMT) Full text and rfc822 format available.

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

From: "J.P." <jp <at> neverwas.me>
To: 60935 <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#60935: 30.0.50; ERC >5.5: Improve ERC's treatment of
 customization groups
Date: Fri, 05 May 2023 17:54:18 -0700
"J.P." <jp <at> neverwas.me> writes:

> The attached patch reverts this spoofing nonsense and also restores a
> working toggle button so users again have the option of dismissing the
> warning.

This correction has been added as:

  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=b0d761be

Thanks.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 03 Jun 2023 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 326 days ago.

Previous Next


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