Files
.emacs.d/modules/ui/siren-pixel-scroll.el

45 lines
1.7 KiB
EmacsLisp

;;; siren-pixel-scroll.el --- jimeh's Emacs Siren: pixel-scroll. -*- lexical-binding: nil; -*-
;;; Commentary:
;; Enable and configure pixel-scroll-precision-mode on Emacs 29.x and later when
;; running in a window system.
;;; Code:
(when (fboundp 'pixel-scroll-precision-mode)
(use-package pixel-scroll
:ensure nil
:if window-system
: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))))))
(provide 'siren-pixel-scroll)
;;; siren-pixel-scroll.el ends here