Undo

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

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 the Ctrl+Z or Alt+Backspace keybindings. In all 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.

History

The Xerox PARC Bravo text editor had an Undo command in 1974.[1] Behavioral Issues in the Use of Interactive Systems, a 1976 research report by Lance A. Miller and John C. Thomas of IBM, noted that "It would be quite useful to permit users to 'take back' at least the immediately preceding command (by issuing some special 'undo' command)."[2] The programmers at the Xerox PARC research center assigned the keyboard shortcut Ctrl-Z to the undo command, which became a crucial feature of text editors and word processors in the personal computer era.[3]

Multi-level undo commands were introduced in the 1980s, allowing the users to take back a series of actions, not just the most recent one.[3] AtariWriter, a word-processing application introduced in 1982, featured undo. NewWord, another word-processing program released by NewStar in 1984, had an unerase command.[3] IBM's VisiWord also had an undelete command.

Undo models

Undo models can be categorized as linear or non-linear:

  • Linear undo requires the user to revert the latest action before undoing earlier ones.
  • With non-linear undo, the action to be reversed can be freely picked from the action history list. Non-linear undo can be further subcategorized into direct selective undo, script interpretation undo, and cascading undo.[citation needed]

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, which 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 (customizable) to three edits in earlier versions of MS 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. This was the standard model prior to the widespread adoption of multiple-level undo in the early 1990s.

Redo models

Redo reverts the effects of the undo action. The simplest form of redo is flip-undo, in which using undo after undoing redoes the undone action. In this case, the program flips back and forth between two states when the undo button is pressed.[4]

In a more typical redo model, there are separate undo and redo buttons. The redo can be used for each undo action performed. Making a new edit usually clears the redo list. If a branching redo model is used, the new edit branches the action history.

Undo implementation

The Command pattern is a software design pattern which can be used to implement Multi-level Undo. The Memento 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.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. 3.0 3.1 3.2 Lua error in package.lua at line 80: module 'strict' not found.
  4. Roberta Mancini, Alan Dix and Stefano Levialdi. 2006. "Reflections on Undo"

External links