We have motivated the design of Emacspeak with the help of the calendar example. However, Emacspeak is much more than a simple talking calendar; it extends all of GNU Emacs to provide full spoken feedback. The author uses Emacspeak on his Alpha AXP[+] workstation running Digital UNIX, and on his laptop running Linux. Emacspeak has been made available on the Internet[+] and is currently being used by an increasing number of Digital's customers.
This paper will not go into implementation details -our purpose is to highlight the novel interface provided by Emacspeak. For the sake of completeness, here is a brief sketch of how the system is implemented.
Emacspeak consists of a core speech module that provides basic speech services to the rest of the system, e.g., functions that speak characters, words and lines. The advice facility of Emacs Lisp is used to integrate the speech feedback provided by these functions into Emacs. This facility allows us to specify program fragments that are to be run either before, after, or around any function. Since the user interface level of GNU Emacs is implemented entirely in Emacs Lisp, the functions making up this interface can be advised to speak. The primary advantage of this approach is that we have been able to speech-enable all of GNU Emacs -a large system- without modifying a single line of source code from the original Emacs distribution.
We conclude this sketch with an example. Function next-line implements movement of the editing cursor to the next line in GNU Emacs. Emacspeak provides the following advice to this function:
(defadvice next-line (after emacspeak ) "Speak the line you moved to." (when (interactive-p) (emacspeak-speak-line )))
This advice specifies that if function next-line is called interactively (As the result of the user pressing a key.) then function emacspeak-speak-line should be called after next-line has done its work.
The next section gives examples of the spoken interaction provided by Emacspeak when performing several day-to-day computing tasks. All of the facilities described are implemented using the model described above.