feat(ui): define custom siren-pixel-scroll-mode

This makes it easy to toggle all per-pixel scrolling related settings on
and off.
This commit is contained in:
2022-04-22 22:44:22 +01:00
parent 758e8f4602
commit be595062e6

View File

@@ -12,17 +12,36 @@
:straight (:type built-in)
:if window-system
:custom
;; Only affects keyboard-based scrolling when pixel scrolling is enabled.
(scroll-preserve-screen-position 'always)
(scroll-margin 0)
(pixel-scroll-precision-interpolate-page t)
(pixel-scroll-precision-large-scroll-height 40.0)
(pixel-scroll-precision-interpolation-factor 30)
(pixel-scroll-precision-use-momentum (not (eq system-type 'darwin)))
:preface
(defvar siren-pixel-scroll--original-scroll-margin scroll-margin)
(defvar siren-pixel-scroll--original-scroll-preserve-screen-position
scroll-preserve-screen-position)
(define-minor-mode siren-pixel-scroll-mode
"enable pixel-scroll-precision-mode with other tweaks."
:global t
(if siren-pixel-scroll-mode
(progn
(setq pixel-scroll-precision-interpolate-page t)
(setq pixel-scroll-precision-large-scroll-height 40.0)
(setq pixel-scroll-precision-interpolation-factor 30)
(setq pixel-scroll-precision-use-momentum
(not (eq system-type 'darwin)))
(setq siren-pixel-scroll--original-scroll-margin scroll-margin)
(setq scroll-margin 0)
(setq siren-pixel-scroll--original-scroll-preserve-screen-position
scroll-preserve-screen-position)
(setq scroll-preserve-screen-position 'always)
(pixel-scroll-precision-mode +1))
(progn
(pixel-scroll-precision-mode -1)
(setq scroll-margin siren-pixel-scroll--original-scroll-margin)
(setq scroll-preserve-screen-position
siren-pixel-scroll--original-scroll-preserve-screen-position))))
:config
(pixel-scroll-precision-mode +1)))
(siren-pixel-scroll +1)))
(provide 'siren-pixel-scroll)
;;; siren-pixel-scroll.el ends here