docs/faq: "Why is scrolling slow"->"Why is Emacs slow"

Expand on this question and mention Emacs 27 and gccemacs as solution.
This commit is contained in:
Henrik Lissner 2020-07-23 19:14:28 -04:00
parent 1e0cd6ddce
commit f99c3fb3a0
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -17,7 +17,7 @@
- [[#what-is-the-meaning-behind-dooms-naming-convention-in-its-source-code][What is the meaning behind Doom's naming convention in its source code?]] - [[#what-is-the-meaning-behind-dooms-naming-convention-in-its-source-code][What is the meaning behind Doom's naming convention in its source code?]]
- [[#what-version-of-doom-am-i-running][What version of Doom am I running?]] - [[#what-version-of-doom-am-i-running][What version of Doom am I running?]]
- [[#is-discord-the-only-option-for-interacting-with-your-community][Is Discord the only option for interacting with your community?]] - [[#is-discord-the-only-option-for-interacting-with-your-community][Is Discord the only option for interacting with your community?]]
- [[#why-is-scrolling-slow-in-emacsdoom][Why is scrolling slow in Emacs/Doom?]] - [[#why-is-emacsdoom-slow][Why is Emacs/Doom slow?]]
- [[#configuration][Configuration]] - [[#configuration][Configuration]]
- [[#does-doom-respect-xdg-conventions][Does Doom respect XDG conventions]] - [[#does-doom-respect-xdg-conventions][Does Doom respect XDG conventions]]
- [[#how-do-i-configure-doom-emacs][How do I configure Doom Emacs?]] - [[#how-do-i-configure-doom-emacs][How do I configure Doom Emacs?]]
@ -450,7 +450,7 @@ better suited to the task. I already have my hands full managing the one.
Email is a possible alternative, but is constantly swamped; expect a long Email is a possible alternative, but is constantly swamped; expect a long
turn-around time. turn-around time.
** Why is scrolling slow in Emacs/Doom? ** Why is Emacs/Doom slow?
This comes up often. The first thing folks fresh off the boat from other editors This comes up often. The first thing folks fresh off the boat from other editors
will notice is that Emacs has a low threshold for performance issues. It doesn't will notice is that Emacs has a low threshold for performance issues. It doesn't
take much to get it to scroll like molasses. take much to get it to scroll like molasses.
@ -462,16 +462,23 @@ that's before we factor in plugins and poorly optimized major modes.
There is an unfortunate but necessary adjustment of expectations new users must There is an unfortunate but necessary adjustment of expectations new users must
undergo, when they adopt Emacs. Doom has inherited this curse. It's raison undergo, when they adopt Emacs. Doom has inherited this curse. It's raison
d'etre is to improve the situation, but I can only go so far. You /will/ find d'etre is to improve the situation, but I can only go so far, especially if you
cases where Emacs just scrolls slowly. choose to enable all the most expensive features. You will unavoidable find
cases where Emacs *is just slow*.
What can you do about it? What can you do about it?
1. Disable some of Doom's slowest modules. The biggest offenders tend to be: 1. Upgrade to Emacs 27. This should yield a noteworthy gain in general
=:ui tabs=, =:ui indent-guides=, =:ui pretty-code=, and =:ui word-wrap=. performance, particularly for LSP users.
2. Turn off line numbers ~(setq display-line-numbers-type nil)~. It's known to 2. Try out [[http://akrl.sdf.org/gccemacs.html][gccemacs]], which promises significant strides in Emacs performance,
but can be a bit of a hassle to set up. There are packages available for
[[https://aur.archlinux.org/packages/emacs-native-comp-git/][Arch Linux]], [[https://github.com/flatwhatson/guix-channel][Guix]] and [[https://github.com/nix-community/emacs-overlay][Nix users]]. [[https://www.emacswiki.org/emacs/GccEmacs][More information available on EmacsWiki]].
3. Disable some of Doom's slowest modules. The biggest offenders tend to be:
=:ui tabs=, =:ui indent-guides=, =:ui pretty-code=, =:ui word-wrap= and =:ui
vc-gutter=.
4. Turn off line numbers ~(setq display-line-numbers-type nil)~. It's known to
slow down scrolling, in particular. slow down scrolling, in particular.
3. Org users can turn off ~org-superstar-mode~: ~(remove-hook 'org-mode-hook 5. Org users can turn off ~org-superstar-mode~: ~(remove-hook 'org-mode-hook
#'org-superstar-mode)~. It's an aesthetic plugin that offers fancier bullets. #'org-superstar-mode)~. It's an aesthetic plugin that offers fancier bullets.
Emacs seems to struggle to display those characters with some fonts. Emacs seems to struggle to display those characters with some fonts.
@ -484,15 +491,16 @@ What can you do about it?
org-hide-leading-stars nil org-hide-leading-stars nil
org-startup-indented nil)) org-startup-indented nil))
#+END_SRC #+END_SRC
4. Turn on =M-x so-long-minor-mode=. This is a minor mode that disables 6. Turn on =M-x so-long-minor-mode=. This is a minor mode that disables
non-essential functionality and can be used to temporarily view files that non-essential functionality and can be used to temporarily view files that
would be too slow otherwise. =M-x so-long-mode= is its extreme version; it would be too slow otherwise. =M-x so-long-mode= is its extreme version; it
turns off /everything/, including syntax highlighting. turns off /everything/, including syntax highlighting.
5. Try replacing the =:ui modeline= module with =:ui (modeline +light)=. There 7. Try replacing the =:ui modeline= module with =:ui (modeline +light)=. There
are aspects of the default modeline that can be unpredictably slow. are aspects of the default modeline that can be unpredictably slow.
6. Don't mash =j= (or =C-n=) to scroll. Evil users can scroll long distances 8. Don't mash =j= (or =C-n=) to scroll. Evil users can scroll long distances
with =C-d= and =C-u=, for instance, to avoid that slowness. Otherwise, use with =C-d= and =C-u=, for instance, or evil-easymotion under =gs=, to avoid
search mechanisms to move around, like isearch (=C-s=) or evil-search (=/=). that slowness. Otherwise, use search mechanisms to move around, like isearch
(=C-s=) or evil-search (=/=).
* Configuration * Configuration
** Does Doom respect XDG conventions ** Does Doom respect XDG conventions