Emacs’s undo system allows you to recover any past state of a buffer.

While this can be useful, it complicates navigating the undo-history, especially in situations where a simple undo/redo commands are sufficient.

This package uses Emacs built-in undo, avoiding any incompatibility or complications that can arise when manipulating undo history, adding commands for more typical undo/redo functionality.


By default the commands undo-fu-only-undo & undo-fu-only-redo perform undo and redo as you would expect in a word-processor for example.

This allows you to hold the undo-key to reach an earlier part of the document, then hold the redo-key to go back to the state where undo was initiated.

However, unlike undo in most editors, a single edit after undoing doesn’t remove all edits.

The full undo history is still accessible using “Unconstrained” undo/redo, accessed by pressing Ctrl-G before undo or redo which behave much the same as the default ‘undo’ command.


This is available as a package “undo-fu” on Melpa, for the main repository, see: