GNU bug report logs -
#67333
pixel-scroll-precision: scroll-up-page gets trapped by invisible characters
Previous Next
To reply to this bug, email your comments to 67333 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#67333
; Package
emacs
.
(Tue, 21 Nov 2023 16:26:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
JD Smith <jdtsmith <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Tue, 21 Nov 2023 16:26: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)]
`pixel-scroll-precision-mode' is quite amazing, running 20-50x faster than other comparable pixel scrolling event callbacks. I’ve found just a few issues with it.
One issue is well-known and mentioned in the pixel-scroll.el commentary:
;; This works well almost all of the time, but is impossible to get right with images larger than
;; the window they're displayed in. A feature that will allow
;; redisplay to skip recentering is in the works, and will completely
;; resolve this problem.
When attempting to pixel-precise-scroll past an image that overfills the window height, automatic recentering causes “jump back”, and you cannot get past it. Is the mentioned “skip recentering feature” slated for Emacs 30? Would be glad to test it.
Here’s the small bug: when scrolling from the bottom up to the top of the buffer, pixel-scroll-precision-scroll-up-page gets trapped if it encounters a wrapped invisible character in the first column. By this I mean the line and cursor are pinned to the center of the window, only jiggling up and down with further scrolling in either direction. Note that this only happens when scrolling from the bottom of the buffer up to the top. Scrolling from top to bottom works fine. So there’s an asymmetry there.
A simple reproducer:
Create a new fundamental mode buffer.
Enable `pixel-scroll-precision-mode’.
Be sure you have lorem-ipsum installed, and M-100 M-x lorem-ipsum-insert-paragraphs, to insert lots of text.
M-x visual-line-mode (not required to trigger the bug, but makes it more likely).
From the beginning of buffer, run the following (via M-:) to make the 1st character of every 11th word invisible:
(cl-loop for cnt from 1 while (forward-word) for p = (point)
if (= (% cnt 11) 0) do (set-text-properties (1+ p) (+ 2 p) '(invisible t)))
Now from the bottom of the buffer, start scrolling up to the top. As point moves, it will eventually encounter an invisible character at column 0, jump immediately to the window’s center, and get stuck there, jiggling around. Scrolling neither up nor down escapes the trap.
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#67333
; Package
emacs
.
(Fri, 24 Nov 2023 21:26:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 67333 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
I can confirm the problem is exclusively related to automatic point moves which happen during scrolling, landing on an invisible character at the start of a line. This seems to happen due to automatic redisplay point repositioning, and not line-move, for example.
I tested Po Lu’s new updates in master to pixel-scroll-precision (of Aug, 2023). With the new version, the behavior w.r.t. invisible chars has changed: when point moves to an invisible character as you scroll point towards the window's bottom, that line jumps back up to the middle of the window, but is not “trapped”: scroll can continue, and you can get past the line. As before, scrolling the other direction, from top of buffer to bottom does not place point on invisible characters and so is unaffected.
So some improvement, but still not correct.
[Message part 2 (text/html, inline)]
This bug report was last modified 1 year and 3 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.