Next: Predicate Specifiers, Previous: Daemons, Up: Various

### 9.11 Undo

It is very useful to be able to undo actions one has done. In normal Emacs buffers, it's easy enough—you just push the `undo` button. In Gnus buffers, however, it isn't that simple.

The things Gnus displays in its buffer is of no value whatsoever to Gnus—it's all just data designed to look nice to the user. Killing a group in the group buffer with `C-k` makes the line disappear, but that's just a side-effect of the real action—the removal of the group in question from the internal Gnus structures. Undoing something like that can't be done by the normal Emacs `undo` function.

Gnus tries to remedy this somewhat by keeping track of what the user does and coming up with actions that would reverse the actions the user takes. When the user then presses the `undo` key, Gnus will run the code to reverse the previous action, or the previous actions. However, not all actions are easily reversible, so Gnus currently offers a few key functions to be undoable. These include killing groups, yanking groups, and changing the list of read articles of groups. That's it, really. More functions may be added in the future, but each added function means an increase in data to be stored, so Gnus will never be totally undoable.

The undoability is provided by the `gnus-undo-mode` minor mode. It is used if `gnus-use-undo` is non-`nil`, which is the default. The `C-M-_` key performs the `gnus-undo` command, which should feel kinda like the normal Emacs `undo` command.