]> git.eshelyaron.com Git - emacs.git/commitdiff
Small adjustments to precision pixel scrolling
authorPo Lu <luangruo@yahoo.com>
Wed, 21 Sep 2022 11:31:45 +0000 (19:31 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 21 Sep 2022 11:32:52 +0000 (19:32 +0800)
* 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

index a04a34b01ea8290cdc61b03a46e352ac04688984..10da9cb9abd05c952a7a17fbefa876d9091f095b 100644 (file)
@@ -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