diff options
author | Po Lu <luangruo@yahoo.com> | 2021-12-09 11:40:39 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2021-12-09 11:40:39 +0800 |
commit | 52f3fe46a35df28cc7a07c0a3f551e67760455b2 (patch) | |
tree | 99a955de171b8d60252dec0dc8e7dc945fa75940 /lisp/pixel-scroll.el | |
parent | bb1252bdb33c2ccb765fd3dc4cb94e508f13a0c6 (diff) | |
download | emacs-52f3fe46a35df28cc7a07c0a3f551e67760455b2.tar.gz |
Fix jumping cursor during interpolated scrolls
* lisp/pixel-scroll.el
(pixel-scroll-precision-scroll-down-page): Go to next position
before setting start or vscroll.
Diffstat (limited to 'lisp/pixel-scroll.el')
-rw-r--r-- | lisp/pixel-scroll.el | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 2bef8ca5b0e..f21cdaed3d5 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -459,6 +459,14 @@ the height of the current window." (set-window-vscroll nil (+ (window-vscroll nil t) delta) t) + (when (and (or (< (point) next-pos)) + (let ((pos-visibility (pos-visible-in-window-p next-pos nil t))) + (and pos-visibility + (or (eq (length pos-visibility) 2) + (when-let* ((posn (posn-at-point next-pos))) + (> (cdr (posn-object-width-height posn)) + usable-height)))))) + (goto-char next-pos)) (set-window-start nil (if (zerop (window-hscroll)) desired-start (save-excursion @@ -466,15 +474,7 @@ the height of the current window." (beginning-of-visual-line) (point))) t) - (set-window-vscroll nil desired-vscroll t)) - (if (and (or (< (point) next-pos)) - (let ((pos-visibility (pos-visible-in-window-p next-pos nil t))) - (and pos-visibility - (or (eq (length pos-visibility) 2) - (when-let* ((posn (posn-at-point next-pos))) - (> (cdr (posn-object-width-height posn)) - usable-height)))))) - (goto-char next-pos)))) + (set-window-vscroll nil desired-vscroll t)))) (defun pixel-scroll-precision-scroll-down (delta) "Scroll the current window down by DELTA pixels." |