- Undo
Undo is a command in many computer programs. It erases the last change done to the document reverting it to an older state. In some more advanced programs such as graphic processing, undo will negate the last command done to the file being edited.
The opposite of undo is redo. The redo command reverses the undo or advances the buffer to a more current state.
In most Windows applications, the Undo command is activated by pressing Ctrl-Z or Alt-Backspace. In most
Macintosh applications, the Undo command is activated by pressing Command-Z. The common command for Redo on Microsoft Windows systems is Ctrl-Y or Ctrl-Shift-Z. The common command for Redo on Apple Macintosh systems is Command-Shift-Z.Undo models
Undo models can be categorized according to two criteria: linear vs non-linear, and single-user vs multi-user. Linear undo requires the user to revert the latest action before undoing earlier ones. With
non-linear undo , the action to be reverted can be freely picked from the action history list.Non-linear undo can be further subcategorized into direct selective undo vs. script interpretation undo vs. cascading undo.
When multiple users can edit the same document simultaneously, a multi-user undo is needed. "Global" multi-user undo reverts the latest action made to the document, regardless of who performed the edit. "Local" multi-user undo only reverts actions done by the local user. Local multi-user undo usually requires a non-linear undo implementation.
The number of previous actions that can be undone varies by program. For example, the stack size ranges from twenty in
Photoshop to three edits inMS Paint . Simplistic, single-edit undo features sometimes do away with "redo" by treating the undo command itself as an action that can be undone. This is known as the flip undo model, because the user can flip between two program states using the undo command.Undo implementation
The
Command pattern is a software design pattern which can be used to implement Multi-level Undo. TheMemento pattern is useful for capturing the state of the program before user actions. This can be used for state reversal needed in some undo implementations.External links
* [http://www.chronicallyunemployed.com/main_stuff/tech/undo.htm Gradual Undo] - an attempt to improve upon traditional undo functionality.
* [http://e-texteditor.com/blog/2006/making-undo-usable A Modern Undo - Making undo usable beyond the last few changes] - remarkable enhancements to traditional undo, including safe "what if" branching.
* [https://dip.felk.cvut.cz/browse/pdfcache/vratij1_2008bach.pdf Cascading undo control] - a paper focused on what is cascading undo and how it might be presented to users* [http://www.youtube.com/watch?v=E7naCU8X2cU Cascading undo prototype: Fisheye-detail] - prototype of proposed visualizations
* [http://www.youtube.com/watch?v=nMiSbVOrKmQ Cascading undo prototype: Fisheye-scrollbar] - prototype of proposed visualizations
Wikimedia Foundation. 2010.