#+TITLE:   emacs/undo
#+DATE:    April 13, 2020
#+SINCE:   v3.0.0
#+STARTUP: inlineimages nofold

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#maintainers][Maintainers]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
  - [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
  - [[#disabling-persistent-undo-history][Disabling persistent undo history]]
- [[#troubleshooting][Troubleshooting]]

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

** Maintainers
This module has no dedicated maintainers.

** Module Flags
+ =+tree= Uses ~undo-tree~ instead of ~undo-fu~, which is a little less stable,
  but offers branching undo history and a visualizer for navigating it.

** Plugins
+ [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]]
+ [[https://gitlab.com/ideasman42/emacs-undo-fu-session][undo-fu-session]]
+ [[https://github.com/emacsmirror/undo-tree][undo-tree]] (=+tree=)

** 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.
+ unfo-fu only
  + Doom defines =undo-fu-mode= to make it easier to add hooks/mode-local
    keybinds.

* Prerequisites
This module has no prerequisites.

* TODO Features
# An in-depth list of features, how to use them, and their dependencies.

* Configuration
** Disabling persistent undo history
+ If you are using =+tree=:

  #+BEGIN_SRC elisp
  (after! undo-tree
    (setq undo-tree-auto-save-history nil))
  #+END_SRC

+ If you aren't:

  #+BEGIN_SRC elisp
  (remove-hook 'undo-fu-mode-hook #'global-undo-fu-session-mode)
  #+END_SRC

* TODO Troubleshooting
# Common issues and their solution, or places to look for help.
