feat(smooth-scroll): add +interpolate flag

Adds optional scroll interpolation/animation in #8335 via the
good-scroll package. Command support is light right now, but I plan to
expand on it later, and I welcome PRs to do so in the meantime.

Ref: #8335
This commit is contained in:
Henrik Lissner
2025-04-03 17:26:48 -04:00
parent 46742977b1
commit 318e630037
3 changed files with 43 additions and 7 deletions

View File

@@ -11,3 +11,23 @@
(add-hook 'ultra-scroll-hide-functions #'hl-todo-mode)
(add-hook 'ultra-scroll-hide-functions #'diff-hl-flydiff-mode)
(add-hook 'ultra-scroll-hide-functions #'jit-lock-mode))
(use-package good-scroll
:when (modulep! +interpolate)
:hook (doom-first-input . good-scroll-mode)
:config
(defun good-scroll--convert-line-to-step (line)
(cond ((integerp line) (* line (line-pixel-height)))
((or (null line) (memq '- line))
(- (good-scroll--window-usable-height)
(* next-screen-context-lines (line-pixel-height))))
((line-pixel-height))))
(defadvice! good-scroll--scroll-up (&optional arg)
:override #'scroll-up
(good-scroll-move (good-scroll--convert-line-to-step arg)))
(defadvice! good-scroll--scroll-down (&optional arg)
:override #'scroll-down
(good-scroll-move (- (good-scroll--convert-line-to-step arg)))))