diff options
| author | Po Lu | 2022-09-21 19:31:45 +0800 |
|---|---|---|
| committer | Po Lu | 2022-09-21 19:32:52 +0800 |
| commit | 517268d943b95f0cb3bd7dfa11e02ade06d3abf4 (patch) | |
| tree | fe0c1fa09b5232b4c3588ec41ecce496cc4d32e8 | |
| parent | 61e4964a8ad2e911928136c1f1667eb5ff55149e (diff) | |
| download | emacs-517268d943b95f0cb3bd7dfa11e02ade06d3abf4.tar.gz emacs-517268d943b95f0cb3bd7dfa11e02ade06d3abf4.zip | |
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.
| -rw-r--r-- | lisp/pixel-scroll.el | 31 |
1 files 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." | |||
| 193 | :type 'float | 193 | :type 'float |
| 194 | :version "29.1") | 194 | :version "29.1") |
| 195 | 195 | ||
| 196 | (defcustom pixel-scroll-precision-interpolation-factor 4.0 | 196 | (defcustom pixel-scroll-precision-interpolation-factor 2.0 |
| 197 | "A factor to apply to the distance of an interpolated scroll." | 197 | "A factor to apply to the distance of an interpolated scroll." |
| 198 | :group 'mouse | 198 | :group 'mouse |
| 199 | :type 'float | 199 | :type 'float |
| @@ -635,18 +635,19 @@ to `pixel-scroll-precision-interpolation-factor'." | |||
| 635 | (selected-window)) | 635 | (selected-window)) |
| 636 | (redisplay t)) | 636 | (redisplay t)) |
| 637 | (sleep-for between-scroll) | 637 | (sleep-for between-scroll) |
| 638 | (setq time-elapsed (+ time-elapsed | 638 | (let ((time (float-time))) |
| 639 | (- (float-time) last-time)) | 639 | (setq time-elapsed (+ time-elapsed |
| 640 | percentage (/ time-elapsed total-time)) | 640 | (- time last-time)) |
| 641 | (let* ((throw-on-input nil) | 641 | percentage (/ time-elapsed total-time)) |
| 642 | (absolute-delta (* (min 1 percentage) delta factor)) | 642 | (let* ((throw-on-input nil) |
| 643 | (relative-delta (abs | 643 | (absolute-delta (* (min 1 percentage) delta factor)) |
| 644 | (round (- absolute-delta last-delta))))) | 644 | (relative-delta (abs |
| 645 | (setq last-delta absolute-delta) | 645 | (round (- absolute-delta last-delta))))) |
| 646 | (if (< delta 0) | 646 | (setq last-delta absolute-delta) |
| 647 | (pixel-scroll-precision-scroll-down relative-delta) | 647 | (if (< delta 0) |
| 648 | (pixel-scroll-precision-scroll-up relative-delta))) | 648 | (pixel-scroll-precision-scroll-down relative-delta) |
| 649 | (setq last-time (float-time))) | 649 | (pixel-scroll-precision-scroll-up relative-delta))) |
| 650 | (setq last-time time))) | ||
| 650 | (if (< percentage 1) | 651 | (if (< percentage 1) |
| 651 | (progn | 652 | (progn |
| 652 | (set-window-parameter nil 'interpolated-scroll-remainder | 653 | (set-window-parameter nil 'interpolated-scroll-remainder |
| @@ -830,7 +831,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." | |||
| 830 | ;; interpolation factor, | 831 | ;; interpolation factor, |
| 831 | ;; since we want exactly 1 | 832 | ;; since we want exactly 1 |
| 832 | ;; page to be scrolled. | 833 | ;; page to be scrolled. |
| 833 | 0) | 834 | nil 1) |
| 834 | (cua-scroll-up))) | 835 | (cua-scroll-up))) |
| 835 | 836 | ||
| 836 | (defun pixel-scroll-interpolate-up () | 837 | (defun pixel-scroll-interpolate-up () |
| @@ -838,7 +839,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." | |||
| 838 | (interactive) | 839 | (interactive) |
| 839 | (if pixel-scroll-precision-interpolate-page | 840 | (if pixel-scroll-precision-interpolate-page |
| 840 | (pixel-scroll-precision-interpolate (window-text-height nil t) | 841 | (pixel-scroll-precision-interpolate (window-text-height nil t) |
| 841 | 0) | 842 | nil 1) |
| 842 | (cua-scroll-down))) | 843 | (cua-scroll-down))) |
| 843 | 844 | ||
| 844 | ;;;###autoload | 845 | ;;;###autoload |