10.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.