GNU bug report logs -
#64855
30.0.50; ERC 5.6: Make scrolltobottom less erratic
Previous Next
Reported by: "J.P." <jp <at> neverwas.me>
Date: Tue, 25 Jul 2023 13:41:01 UTC
Severity: normal
Tags: patch
Found in version 30.0.50
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 64855 in the body.
You can then email your comments to 64855 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#64855
; Package
emacs
.
(Tue, 25 Jul 2023 13:41:01 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
.
(Tue, 25 Jul 2023 13:41:01 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
A minor bug fix involving the `scrolltobottom' module (and originally
lumped in with the mostly unrelated bug#63595) eventually materialized
on HEAD as [1]. While it did fix the bug, it didn't really address any
of the related foundational issues that have haunted `scrolltobottom'
since the beginning. The attached patch is meant to make the module more
predictable and consistent overall, while specifically addressing
- the effect only being applied in the selected window
- the effect not responding to changes in window size
- the gradual scrolling of point toward the centermost line when
away from the prompt (on graphical displays)
People miffed by this module's rough edges are encouraged to try these
changes and give feedback.
Thanks.
[1] commit e51e43b7046b56c58310854182a1d589ee4c770c
Author: F. Jason Park <jp <at> neverwas.me>
Date: Wed May 17 19:48:02 2023 -0700
Fix buffer-mismatch bug in erc-scroll-to-bottom
* lisp/erc/erc-goodies.el (erc-scroll-to-bottom): Only
`recenter' when the selected window's buffer is current.
Previously, the module `scrolltobottom' signaled an "Error in
`post-command-hook'" when a user clicked a channel indicator in
the mode line from a window showing another ERC buffer.
[...]
(Bug#63595)
lisp/erc/erc-goodies.el | 1 +
lisp/erc/erc-track.el | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.38, cairo version 1.17.6) of 2023-07-25 built on localhost
Repository revision: 89558533683a100ca7946c4a35bf4ef50463efef
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora Linux 37 (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 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 erc auth-source cl-seq
eieio eieio-core cl-macs 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 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 gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process emacs)
Memory information:
((conses 16 64796 9162) (symbols 48 8637 0) (strings 32 23386 1972)
(string-bytes 1 680274) (vectors 16 15042)
(vector-slots 8 207499 8948) (floats 8 24 41) (intervals 56 225 0)
(buffers 976 10))
[0001-5.6-Consider-all-windows-in-erc-scrolltobottom-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Wed, 26 Jul 2023 13:29:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
v2. Stash and restore `window-start' for all windows when inserting
messages.
[0000-v1-v2.diff (text/x-patch, attachment)]
[0001-5.6-Consider-all-windows-in-erc-scrolltobottom-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Wed, 09 Aug 2023 15:01:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
v3. Add new option to forgo forcing prompt to window's bottom. Remove
debouncing mechanism. Prefer setting window-start instead of
`recenter'ing when possible.
[0000-v2-v3.diff (text/x-patch, attachment)]
[0001-5.6-Consider-all-windows-in-erc-scrolltobottom-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Fri, 18 Aug 2023 13:51:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
v4. Fix bug involving new option `erc-scrolltobottom-relaxed'. Specify
explicit hook depths for `erc--scrolltobottom-on-pre-command{,-relaxed}'
and `erc-move-to-prompt' in `pre-command-hook'. Remove assertions.
This still needs tests and a news entry.
[0000-v3-v4.diff (text/x-patch, attachment)]
[0001-5.6-Consider-all-windows-in-erc-scrolltobottom-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Thu, 24 Aug 2023 14:12:01 GMT)
Full text and
rfc822 format available.
Message #17 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
v5. Make new behavior hinge on new option, disabled by default. Assign
some module functions explicit hook depths. Add news and tests.
[0000-v4-v5.diff (text/x-patch, attachment)]
[0001-5.6-Consider-all-windows-in-erc-scrolltobottom-mode.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Wed, 13 Sep 2023 14:07:02 GMT)
Full text and
rfc822 format available.
Message #20 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
"J.P." <jp <at> neverwas.me> writes:
> v5. Make new behavior hinge on new option, disabled by default. Assign
> some module functions explicit hook depths. Add news and tests.
I've added a version of this as
commit 617ddb808999a71c925b68f5369d77aebfcd9254
Consider all windows in erc-scrolltobottom-mode
But it comes with a few known problems.
The first can be observed during the rapid insertion of newly arriving
messages, like you get with history playback or large swaths of help
text. Basically, when point is away from the prompt and you issue a
command that changes `window-start' significantly (e.g., M-<), point
hardly moves at all, maybe half a screenful at most.
Another issue is only noticeable if you have code running that
suppresses message insertion after prompt submissions (see bug#49860's
`echo-message' for one example). Basically, if you've got
`erc-scrolltobottom-relaxed' enabled and you stare long enough, you'll
notice that the prompt drifts downward with every submitted round of
multi-line input.
Attached is a patch that attempts to address both of these issues, along
with a couple more to get at some unrelated odds and ends. I'm also sort
of thinking we ought to temporarily change the default of the new option
`erc-scrolltobottom-all' to t for a few weeks to help flush out any
other glaring bugs introduced by this feature. If anyone thinks that's a
bad idea, please say so. Thanks.
[0001-doc-misc-erc.texi-Fix-display-buffer-example.patch (text/x-patch, attachment)]
[0002-5.6-Simplify-erc-fill-module-docstring.patch (text/x-patch, attachment)]
[0003-5.6-Skip-erc-ignored-user-p-when-erc-ignore-list-is-.patch (text/x-patch, attachment)]
[0004-5.6-Run-erc-scrolltobottom-on-pre-insert-uncondition.patch (text/x-patch, attachment)]
Reply sent
to
"J.P." <jp <at> neverwas.me>
:
You have taken responsibility.
(Tue, 19 Sep 2023 13:40:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
"J.P." <jp <at> neverwas.me>
:
bug acknowledged by developer.
(Tue, 19 Sep 2023 13:40:02 GMT)
Full text and
rfc822 format available.
Message #25 received at 64855-done <at> debbugs.gnu.org (full text, mbox):
"J.P." <jp <at> neverwas.me> writes:
> But it comes with a few known problems.
>
> The first can be observed during the rapid insertion of newly arriving
> messages, like you get with history playback or large swaths of help
> text. Basically, when point is away from the prompt and you issue a
> command that changes `window-start' significantly (e.g., M-<), point
> hardly moves at all, maybe half a screenful at most.
>
> Another issue is only noticeable if you have code running that
> suppresses message insertion after prompt submissions (see bug#49860's
> `echo-message' for one example). Basically, if you've got
> `erc-scrolltobottom-relaxed' enabled and you stare long enough, you'll
> notice that the prompt drifts downward with every submitted round of
> multi-line input.
>
> Attached is a patch that attempts to address both of these issues, along
> with a couple more to get at some unrelated odds and ends. I'm also sort
> of thinking we ought to temporarily change the default of the new option
> `erc-scrolltobottom-all' to t for a few weeks to help flush out any
> other glaring bugs introduced by this feature. If anyone thinks that's a
> bad idea, please say so. Thanks.
I've installed this as
69a1546 Run erc--scrolltobottom-on-pre-insert unconditionally
along with two others from that set. However, I left out
[3/4] [5.6] Skip erc-ignored-user-p when erc-ignore-list is empty
because even a minor change like this to such a widely used feature
should probably be accompanied by tests and extra scrutiny, especially
since I myself am not really familiar with it. The optimization itself
seems simple enough, but one of those options is buffer-local and set
via the /IGNORE command, which complicates matters.
I'm thinking we may end up folding that patch into a larger initiative
aimed at moving everything related to message skipping and hiding to
another module. Indeed, there seems to be a good deal of overlap in
functionality among the lurker, hide-list, and /IGNORE features (and
also the fools stuff in erc-match). It'd be nice to get all that out of
erc.el because it can mostly be implemented using hooks, which should
help with maintenance and maybe save uninterested users some cycles.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Wed, 11 Oct 2023 02:55:01 GMT)
Full text and
rfc822 format available.
Message #28 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Due to various outstanding issues related to this feature, I've decided
to abandon almost all window twiddling in `post-command-hook' because
blacklisting and whitelisting various commands was becoming a sad game
of whack-a-mole. Rather, I think it's best if we restrict this option's
availability to Emacs 28+ and leverage `read-minibuffer-restore-windows'
to keep windows stable when executing extended commands. I also think it
makes sense to consolidate knobs and have `erc-scrolltobottom-all'
subsume the do-little `erc-scrolltobottom-relaxed' as a third value
state (boolean + the symbol `relaxed'). Please see attached changes.
Thanks.
[0001-5.6-Skip-restore-post-minibuf-read-in-erc-scrolltobo.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Sat, 14 Oct 2023 00:31:02 GMT)
Full text and
rfc822 format available.
Message #31 received at 64855 <at> debbugs.gnu.org (full text, mbox):
I've added these changes as
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=328a9856
This bug has already been closed. Thanks.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Wed, 25 Oct 2023 02:17:01 GMT)
Full text and
rfc822 format available.
Message #34 received at 64855 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
"J.P." <jp <at> neverwas.me> writes:
> I've added these changes as
>
> https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=328a9856
>
> This bug has already been closed. Thanks.
But wait, there's more! (There's always more.)
It seems I went a little overboard in reigning in the frequency of
scroll attempts. This has been walked back slightly in the attached
changes.
There's also a subtle quirk that's come to light involving `point-max'
and (recenter -1) where Emacs calculates point as having drifted off
screen. We could try tackling this with something kludgey, like
decrementing point temporarily during `recenter' attempts. But that
fails if the current input ends in a newline. I've instead decided to
address this by taking a page from other Emacs libraries and setting
`scroll-step' locally to 1 if a user hasn't customized
`scroll-conservatively'. See attached.
[0001-5.6-Be-slightly-more-aggressive-in-erc-scrolltobotto.patch (text/x-patch, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#64855
; Package
emacs
.
(Mon, 30 Oct 2023 13:48:02 GMT)
Full text and
rfc822 format available.
Message #37 received at 64855 <at> debbugs.gnu.org (full text, mbox):
"J.P." <jp <at> neverwas.me> writes:
> It seems I went a little overboard in reigning in the frequency of
> scroll attempts. This has been walked back slightly in the attached
> changes.
>
> There's also a subtle quirk that's come to light involving `point-max'
> and (recenter -1) where Emacs calculates point as having drifted off
> screen. We could try tackling this with something kludgey, like
> decrementing point temporarily during `recenter' attempts. But that
> fails if the current input ends in a newline. I've instead decided to
> address this by taking a page from other Emacs libraries and setting
> `scroll-step' locally to 1 if a user hasn't customized
> `scroll-conservatively'. See attached.
This followup was installed as
e9205323e15 * Be slightly more aggressive with erc-scrolltobottom-all
The bug is already closed.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 28 Nov 2023 12:24:06 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 165 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.