GNU bug report logs -
#60935
30.0.50; ERC >5.5: Improve ERC's treatment of customization groups
Previous Next
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.
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):
[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):
[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):
[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):
[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):
[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):
[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):
"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 1 year and 343 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.