Editing the script of an interactive session on-line can replace or enhance common interaction techniques and help to separate the user interface from the computation. We describe a text editor that executes scripts incrementally, co-operating with application programs to undo and redo script parts. The user edits the input part of a transcript, and the editor updates the output part. The transcript becomes a clear and reusable document. The applications choose the backtracking steps, and can thus evolve gradually. Extensions to non-linear dialogues are in progress.
KEY WORDS User interfaces History mechanisms Editors Incremental computationUndo/redo
INTERACTION AND EDITINGInteractive computing can often be understood as the computer-aided construction of an object, such as a file of data, a graphical diagram, a procedure to solve a problem, or next week's calendar. A program implementing such an application can be decomposed into an editing part that lets the user construct and modify the object, and a processing part that interactively analyses the construction and derives the desired results (the output) from it. The constructed object gives permanence to the user's work and permits later checking and reusing. The object and the results can have various concrete forms. Traditional textual forms are being replaced by graphical representations. Though graphic forms have advantages in many cases, we feel that text (or more generally symbol sequences) still has a role to play, for the following reasons. A user interface defines two sets of functions: those available to the user, and those used by the application program. Modern graphical user interface management systems (UIMSs) tend to have large function sets. However, the more functions a user is given, the harder they may be to learn, and applications are more likely to use different subsets of functions, making the transfer of learning harder. Further, the more functions are provided for the program, the harder it is to find a standard set of functions for portable and durable programming.Text input and output matches the left to right, read/write functions of standard programming languages, and is still used by many important programs. Text is easy to store permanently and to transport across networks (though both are becoming