GNU bug report logs - #70928
30.0.50; ERC 5.6: Reuse query buffers for round-trip nick changes in ERC

Previous Next

Package: emacs;

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

Date: Tue, 14 May 2024 01:06:01 UTC

Severity: normal

Found in version 30.0.50

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

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: "J.P." <jp <at> neverwas.me>
Subject: bug#70928: closed (Re: bug#70928: 30.0.50; ERC 5.6: Reuse query
 buffers for round-trip nick changes in ERC)
Date: Tue, 28 May 2024 13:38:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#70928: 30.0.50; ERC 5.6: Reuse query buffers for round-trip nick changes in ERC

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 70928 <at> debbugs.gnu.org.

-- 
70928: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70928
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: "J.P." <jp <at> neverwas.me>
To: 70928-done <at> debbugs.gnu.org
Cc: emacs-erc <at> gnu.org
Subject: Re: bug#70928: 30.0.50; ERC 5.6: Reuse query buffers for round-trip
 nick changes in ERC
Date: Tue, 28 May 2024 06:37:37 -0700
"J.P." <jp <at> neverwas.me> writes:

> Here's how I imagine things working in a saner ERC:
>
>   - A user's presence in a channel will dictate whether they exist in
>     the server buffer's `erc-server-users' table.
>
>   - Issuing a /query will create a user entry in the query buffer's
>     `erc-channel-members' table if they exist in the server-wide table
>     (meaning they're present in some channel).
>
>   - Users parting or being kicked from a channel will see their data
>     removed from all query tables (and the server table) if they're no
>     longer joined to any other channels.
>
>   - Insertion hooks running in query buffers can always expect to see a
>     speaker's user's in its `erc-channel-members' table. If they're
>     absent, a temporary user will be created for the duration of
>     response handling.
>
>   - A new, optional module will be added to mimic the effect of the
>     Monitor extension and to serve as a fallback after ERC adds support
>     (see bug#49860). When it's active, users in queries who aren't also
>     in a channel will be periodically polled for and kept up to date.
>
>   - A client's own user for its current nick will be absent in all query
>     tables but present, once discovered, in the server-wide table for
>     the remainder of the session.
>
> The attached patches attempt to implement the proposed changes. Comments
> welcome.

I've installed these changes as

  75aefe65148 * Reuse old query buffers for reassumed nicks in ERC
  04477cf97be * Tether query rolls to channel membership in ERC
  5f84213c980 * Retain client's own user in erc-server-users
  6888bbbe832 * Add ERC module querypoll as monitor placeholder

Thanks and closing (for now).

[Message part 3 (message/rfc822, inline)]
From: "J.P." <jp <at> neverwas.me>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; ERC 5.6: Reuse query buffers for round-trip nick changes
 in ERC
Date: Mon, 13 May 2024 18:00:11 -0700
[Message part 4 (text/plain, inline)]
From emacs -Q

  1. Start a new session, connecting as nick A
  2. Start another session, connecting as nick B
  3. As nick B, open a query with A, say something, and quit
  4. Start another session, connecting as nick C
  5. As nick C, open a query with A, say something, then issue a /nick B
  6. As B, open a query with A, say something
  7. In A's session, notice B's new query buffer is named B<2>

To put it another way: someone you have a query with disconnects and
reconnects under a new nick, perhaps due to their client appending a
backtick or an underscore. They then engage you in another query before
renicking to their original nick. Weechat and others deal with this by
reusing existing query buffers, but ERC has always added a uniquifying
suffix of the form A<2> to the new, renicked query buffer [1].

While it's true we can't technically be certain revived queries are
being piloted by the same individuals (at least not until ERC becomes
account aware), enough folks have complained about this over the years
that I think it's legitimate to disregard that uncertainty by default.
And though we're not obliged to address this for this release in
particular, I do think it's worth doing so soonish, especially given
that bug#48598 (ERC 5.5) was supposed to do away with these buffer
association issues. The second of the attached patches attempts to get
us closer to making good on that.

Thanks.

[1] Note that in the scenario above, attempting to "merge" buffers B and
    C, like ERC does after changing its own nick, may seem desirable,
    but it's tricky business because timelines may be interleaved rather
    than simply overlap at a single boundary interval. This is one of
    the many things a "backing store" or "replay" module could help
    solve, at least in cases brought about by unwanted backtick
    suffixing. A suitable back end would allow us to perform the merge
    in-store, perhaps ephemerally, and re-ingest it as clean, simulated
    input.


In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, GTK+ Version
 3.24.41, cairo version 1.18.0) of 2024-05-08 built on localhost
Repository revision: 36c68e7e34df996bbde4cc82c04ea1619349b64a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12302004
System Description: Fedora Linux 39 (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
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
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
  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:
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 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 compile text-property-search comint
ansi-osc ansi-color ring comp-run comp-common rx erc auth-source cl-seq
eieio eieio-core cl-macs icons password-cache json subr-x map
format-spec cl-loaddefs cl-lib erc-backend erc-networks byte-opt gv
bytecomp byte-compile erc-common erc-compat 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 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 native-compile emacs)

Memory information:
((conses 16 91614 10878) (symbols 48 9861 0) (strings 32 26671 5011)
 (string-bytes 1 770713) (vectors 16 17713)
 (vector-slots 8 189327 10467) (floats 8 26 13) (intervals 56 323 0)
 (buffers 984 11))

[0001-5.6-Reconcile-erc-stamp-date-stamps-when-merging-buf.patch (text/x-patch, attachment)]
[0002-5.6-Reuse-old-query-buffers-for-round-trip-renicks-i.patch (text/x-patch, attachment)]

This bug report was last modified 357 days ago.

Previous Next


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