From 517268d943b95f0cb3bd7dfa11e02ade06d3abf4 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Wed, 21 Sep 2022 19:31:45 +0800 Subject: [PATCH] Small adjustments to precision pixel scrolling * lisp/pixel-scroll.el (pixel-scroll-precision-interpolation-factor): Adjust for increased accuracy. (pixel-scroll-precision-interpolate): Slightly decrease accuracy in exchange for consing less floats. (pixel-scroll-interpolate-down, pixel-scroll-interpolate-up): Fix usage of function. --- lisp/pixel-scroll.el | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index a04a34b01ea..10da9cb9abd 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -193,7 +193,7 @@ Nil means to not interpolate such scrolls." :type 'float :version "29.1") -(defcustom pixel-scroll-precision-interpolation-factor 4.0 +(defcustom pixel-scroll-precision-interpolation-factor 2.0 "A factor to apply to the distance of an interpolated scroll." :group 'mouse :type 'float @@ -635,18 +635,19 @@ to `pixel-scroll-precision-interpolation-factor'." (selected-window)) (redisplay t)) (sleep-for between-scroll) - (setq time-elapsed (+ time-elapsed - (- (float-time) last-time)) - percentage (/ time-elapsed total-time)) - (let* ((throw-on-input nil) - (absolute-delta (* (min 1 percentage) delta factor)) - (relative-delta (abs - (round (- absolute-delta last-delta))))) - (setq last-delta absolute-delta) - (if (< delta 0) - (pixel-scroll-precision-scroll-down relative-delta) - (pixel-scroll-precision-scroll-up relative-delta))) - (setq last-time (float-time))) + (let ((time (float-time))) + (setq time-elapsed (+ time-elapsed + (- time last-time)) + percentage (/ time-elapsed total-time)) + (let* ((throw-on-input nil) + (absolute-delta (* (min 1 percentage) delta factor)) + (relative-delta (abs + (round (- absolute-delta last-delta))))) + (setq last-delta absolute-delta) + (if (< delta 0) + (pixel-scroll-precision-scroll-down relative-delta) + (pixel-scroll-precision-scroll-up relative-delta))) + (setq last-time time))) (if (< percentage 1) (progn (set-window-parameter nil 'interpolated-scroll-remainder @@ -830,7 +831,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." ;; interpolation factor, ;; since we want exactly 1 ;; page to be scrolled. - 0) + nil 1) (cua-scroll-up))) (defun pixel-scroll-interpolate-up () @@ -838,7 +839,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." (interactive) (if pixel-scroll-precision-interpolate-page (pixel-scroll-precision-interpolate (window-text-height nil t) - 0) + nil 1) (cua-scroll-down))) ;;;###autoload -- 2.39.2