[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#70928: 30.0.50; ERC 5.6: Reuse query buffers for round-trip nick cha
From: |
J.P. |
Subject: |
bug#70928: 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 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
>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
Description: Text Data
0002-5.6-Reuse-old-query-buffers-for-round-trip-renicks-i.patch
Description: Text Data
- bug#70928: 30.0.50; ERC 5.6: Reuse query buffers for round-trip nick changes in ERC,
J.P. <=