mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
module: add :ui smooth-scroll
Normally, this would be too small to warrant its own module, but smooth scrolling is one of those things that can tip large swaths of fence-sitting beginners into Emacs' camp. I can't help but imagine how many people get their impression that Emacs is "laggy" or "slow" solely from the way it scrolls. Don't get me wrong, there *are* good reasons to call Emacs slow, but startup and scrolling speed are not it, yet they are easily overblown because it's the first thing you see. I might even consider enabling this by default, but I'll make that decision later. Fix: #8335
This commit is contained in:
1
.github/CODEOWNERS
vendored
1
.github/CODEOWNERS
vendored
@ -154,6 +154,7 @@ modules/ui/nav-flash @doomemacs/ui-nav-flash
|
|||||||
modules/ui/neotree @doomemacs/ui-neotree
|
modules/ui/neotree @doomemacs/ui-neotree
|
||||||
modules/ui/ophints @doomemacs/ui-ophints
|
modules/ui/ophints @doomemacs/ui-ophints
|
||||||
modules/ui/popup @doomemacs/ui-popup
|
modules/ui/popup @doomemacs/ui-popup
|
||||||
|
modules/ui/smooth-scroll @doomemacs/ui-smooth-scroll
|
||||||
modules/ui/tabs @doomemacs/ui-tabs
|
modules/ui/tabs @doomemacs/ui-tabs
|
||||||
modules/ui/treemacs @doomemacs/ui-treemacs
|
modules/ui/treemacs @doomemacs/ui-treemacs
|
||||||
modules/ui/unicode @doomemacs/ui-unicode
|
modules/ui/unicode @doomemacs/ui-unicode
|
||||||
|
72
modules/ui/smooth-scroll/README.org
Normal file
72
modules/ui/smooth-scroll/README.org
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#+title: :ui smooth-scroll
|
||||||
|
#+subtitle: So smooth you won't believe it's not butter
|
||||||
|
#+created: April 1, 2025
|
||||||
|
#+since: 25.05.0
|
||||||
|
|
||||||
|
* Description :unfold:
|
||||||
|
This module activates OS-independent smooth scrolling in Emacs. This primarily
|
||||||
|
benefits trackpad and scroll wheel users (not so much those that scroll via
|
||||||
|
their keyboards), by utilizing the [[https://github.com/jdtsmith/ultra-scroll][ultra-scroll]] package.
|
||||||
|
|
||||||
|
#+begin_quote
|
||||||
|
For optimal performance from this module, it's highly recommended you use
|
||||||
|
Emacs with native-compilation. MacOS users may also have a better experience
|
||||||
|
using the [[https://bitbucket.org/mituharu/emacs-mac][emacs-mac]] fork of Emacs, available via Homebrew.
|
||||||
|
#+end_quote
|
||||||
|
|
||||||
|
** Maintainers
|
||||||
|
- [[doom-user:][@hlissner]]
|
||||||
|
|
||||||
|
[[doom-contrib-maintainer:][Become a maintainer?]]
|
||||||
|
|
||||||
|
** Module flags
|
||||||
|
/This module has no flags./
|
||||||
|
|
||||||
|
** Packages
|
||||||
|
- [[doom-package:ultra-scroll]]
|
||||||
|
|
||||||
|
** Hacks
|
||||||
|
/No hacks documented for this module./
|
||||||
|
|
||||||
|
** TODO Changelog
|
||||||
|
# This section will be machine generated. Don't edit it by hand.
|
||||||
|
/This module does not have a changelog yet./
|
||||||
|
|
||||||
|
* Installation
|
||||||
|
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]
|
||||||
|
|
||||||
|
/This module has no external requirements./
|
||||||
|
|
||||||
|
* Usage
|
||||||
|
This module only needs to be activated to experience its benefits.
|
||||||
|
|
||||||
|
* TODO Configuration
|
||||||
|
#+begin_quote
|
||||||
|
This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
|
||||||
|
#+end_quote
|
||||||
|
|
||||||
|
* Troubleshooting
|
||||||
|
This module should work on any platform that provides pixel-level scrolling
|
||||||
|
information from your input hardware, but if you run into issues, here are some
|
||||||
|
things to try:
|
||||||
|
|
||||||
|
- Use ~M-x ultra-scroll-check~ to diagnose common issues. Visit [[https://github.com/jdtsmith/ultra-scroll?tab=readme-ov-file#compatibility][ultra-scroll's
|
||||||
|
documentation]] for more on interpreting and acting on its results.
|
||||||
|
- Read ultra-scroll's documentation on [[https://github.com/jdtsmith/ultra-scroll?tab=readme-ov-file#Speed][scrolling speed]]; it outlines common
|
||||||
|
factors that may impact it and how to mitigate them.
|
||||||
|
- See Doom's "[[https://discourse.doomemacs.org/t/why-is-emacs-doom-slow/83/3][Why is Emacs/Doom slow?]]" write-up, where Doom's author documents
|
||||||
|
common factors that can slow Emacs down in general (not specifically to do
|
||||||
|
with scrolling) and what to do about them.
|
||||||
|
|
||||||
|
If all else fails, let us know on [[https://discourse.doomemacs.org][Discourse]] or [[https://doomemacs.org/discord][Discord]]. Only file an issue if
|
||||||
|
you have a good idea what's causing the problem or have an explicit error to
|
||||||
|
report (performance issues, in general, tend to be the result of *many* factors
|
||||||
|
and are the greatest source of false positives on our issue tracker).
|
||||||
|
|
||||||
|
* Frequently asked questions
|
||||||
|
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]
|
||||||
|
|
||||||
|
* TODO Appendix
|
||||||
|
#+begin_quote
|
||||||
|
This module has no appendix yet. [[doom-contrib-module:][Write one?]]
|
||||||
|
#+end_quote
|
8
modules/ui/smooth-scroll/config.el
Normal file
8
modules/ui/smooth-scroll/config.el
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
;;; ui/smooth-scroll/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package! ultra-scroll
|
||||||
|
:hook (doom-first-input . ultra-scroll-mode)
|
||||||
|
:hook (doom-first-file . ultra-scroll-mode)
|
||||||
|
:init
|
||||||
|
(setq scroll-conservatively 101
|
||||||
|
scroll-margin 0))
|
6
modules/ui/smooth-scroll/packages.el
Normal file
6
modules/ui/smooth-scroll/packages.el
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; ui/smooth-scroll/packages.el
|
||||||
|
|
||||||
|
(package! ultra-scroll
|
||||||
|
:recipe (:host github :repo "jdtsmith/ultra-scroll")
|
||||||
|
:pin "b72c507f6702db18d971a6b6bdc692e260f21159")
|
@ -43,6 +43,7 @@
|
|||||||
;;neotree ; a project drawer, like NERDTree for vim
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
ophints ; highlight the region an operation acts on
|
ophints ; highlight the region an operation acts on
|
||||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;smooth-scroll ; So smooth you won't believe it's not butter
|
||||||
;;tabs ; a tab bar for Emacs
|
;;tabs ; a tab bar for Emacs
|
||||||
;;treemacs ; a project drawer, like neotree but cooler
|
;;treemacs ; a project drawer, like neotree but cooler
|
||||||
;;unicode ; extended unicode support for various languages
|
;;unicode ; extended unicode support for various languages
|
||||||
|
Reference in New Issue
Block a user