doomemacs/modules/emacs/undo/README.org
Henrik Lissner 6f40ad55f5
docs: discourage after! and use-package! use
There's little reason for users to use these macros in their private
configs over plain ol' `with-eval-after-load` and `use-package`, unless
they're writing their own modules.

It's my fault for signal boosting them in documentation and whenever I'm
asked for help, because beginners now believe they are somehow
required for Doom to work correctly (there are guides out there
telling beginners that migrating to Doom involves replacing all
instances of `with-eval-after-load` and `use-package` in their
pre-existing configs with `after!` and `use-package!` -- which was never
true).

What's more, I plan to replace `use-package`, internally, so the
`use-package!` macro won't exist for much longer.
2026-02-09 04:29:47 -05:00

2.5 KiB

:emacs undo

Description   unfold

This module augments Emacs' built-in undo system to be more intuitive and to persist across Emacs sessions.

Module flags

+tree
Uses doom-package:undo-tree instead of doom-package:undo-fu, which is a little less stable, but offers branching undo history and a visualizer for navigating it.

Hacks

  • Both undo-fu and undo-tree have been modified to use zstd to compress undo history if it is available.
  • undo-tree only

    • Text properties are stripped from undo history to shrink it.
    • Undo-tree is too chatty about saving its history files. This has be "silenced". i.e. It's visible in \*Messages\*, but won't appear in your minibuffer.
  • undo-fu only

    • Doom defines undo-fu-mode to make it easier to add hooks/mode-local keybinds.

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

This module has no external requirements.

TODO Usage

󱌣 This module has no usage documentation yet. Write some?

TODO Configuration

󱌣 This module's configuration documentation is incomplete. Complete it?

Disabling persistent undo history

  • If you are using doom-module:+tree:

    (with-eval-after-load 'undo-tree
      (setq undo-tree-auto-save-history nil))
  • If you aren't:

    (remove-hook 'undo-fu-mode-hook #'global-undo-fu-session-mode)

Troubleshooting

Report an issue?

undo-tree

  • Has been known to truncate undo history unpredictably, due to Emacs' undo cleanup imposing linear undo limits on non-linear undo tree data. Doom already sets undo-limit, undo-strong-limit, and undo-outer-limit absurdly high to mitigate this somewhat.

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module has no appendix yet. Write one?