@c $Id$ @node Emacs Packages @chapter Emacs Packages. Emacs -- The extensible, self-documenting editor, derives its functionality from its powerful extension mechanism. This extension mechanism is used to implement many user-level applications such as mail readers, WWW browsers, software development environments and so on. This chapter gives directions on how to locate the right Emacs package for addressing specific tasks. The chapter is organized into logical sections that each pertain to a specific class of tasks; in individual subsections within a section give a brief overview of particular Emacs packages that have been speech-enabled. @menu * Document Authoring:: Document Authoring * Structured Editing:: Structured Editing * Browsing Structure:: Browsing Structure * Web Browsing:: Web Browsing * Messaging:: Messaging * Editting Program Source:: Editting Program Source * Development Environment:: Development Environment * Desktop Management:: Desktop Management * Personal Information Management:: Personal Information Management * Desktop Applications:: Desktop Applications @end menu @include documents.texi @include structure.texi @node Browsing Structure @section Browsing Structured Information This section describes packages that allow you to browse structured information --these are distinct from the tools described in @ref{Structured Editing}, in that they are typically used for working with content that is read-only e.g., online documentation. @unnumberedsec Related Packages @menu * Web Browsing:: Web Browsing * emacspeak-w3:: emacspeak-w3 * emacspeak-w3m:: emacspeak-w3m * emacspeak-info:: emacspeak-info * emacspeak-man:: emacspeak-man * emacspeak-table-ui:: emacspeak-table-ui * emacspeak-tabulate:: emacspeak-tabulate * emacspeak-view:: emacspeak-view @end menu @include web-browsing.texi @node Messaging @section Electronic Messaging Applications Working with messaging applications involves both authoring and browsing content. Emacspeak provides a rich set of speech-enabled messaging tools. Further, all of the tools described in the previous sections integrate smoothly with the messaging applications described here; this means that you do not need to re-learn a new set of work habits when dealing with content in your messaging application. @unnumberedsec Related Packages @menu * emacspeak-bbdb:: emacspeak-bbdb * emacspeak-gnus:: emacspeak-gnus * emacspeak-message:: emacspeak-message * emacspeak-rmail:: emacspeak-rmail * emacspeak-vm:: emacspeak-vm * emacspeak-supercite:: emacspeak-supercite * emacspeak-mspools:: emacspeak-mspools @end menu @node Editting Program Source @section Editting Program Source Code Files containing program source code form a very specific class of @b{structured} documents. Unlike documents meant for human consumption that are often only loosely structured, program source (as a concession to the computer's intolerance of lack of structure) are per force well-structured and adhere to a fairly stringent syntax. The Emacs environment provides editting modes that are specific to creating and maintaining software written in most popular programming languages. Many of these editting modes are speech-enabled by Emacspeak. Speech-enabling these modes includes providing a rich set of navigational commands that allow you to move through the source efficiently. In addition, Emacspeak's core @b{voice-lock} facilities are used to produce audio formatted output --this helps you spot errors quickly. @unnumberedsec Related Packages @menu * emacspeak-c:: emacspeak-c * emacspeak-perl:: emacspeak-perl * emacspeak-tcl:: emacspeak-tcl * emacspeak-python:: emacspeak-python * emacspeak-jde:: emacspeak-jde * emacspeak-make-mode:: emacspeak-make-mode * emacspeak-sql:: emacspeak-sql @end menu @node Development Environment @section Software Development Environment In addition to providing specialized editting modes for creating and maintaining program source, Emacs provides a rich set of software development tools that can be combined to create powerful Integrated Development Environments (IDE). These IDEs are speech-enabled by Emacspeak to provide a versatile and powerful environment for eyes-free software development. @unnumberedsec Related Packages @menu * emacspeak-compile:: emacspeak-compile * emacspeak-ediff:: emacspeak-ediff * emacspeak-gud:: emacspeak-gud * emacspeak-jde:: emacspeak-jde * emacspeak-speedbar:: emacspeak-speedbar * emacspeak-imenu:: emacspeak-imenu @end menu @node Desktop Management @section Desktop Management Emacs provides an integrated environment for performing all of ones day-to-day computing tasks ranging from electronic messaging to software development. The environment derives its power from the fact that this integration allows for content to be handled across different tasks in a seamless manner. In order to work effectively with large Emacs sessions with many documents and applications open at the same time, the Emacspeak desktop provides a powerful collection of desktop management tools designed to help the user easily locate objects that pertain to a given task. @unnumberedsec Related Packages @menu * emacspeak-buff-menu.el:: emacspeak-buff-menu.el * emacspeak-dired.el:: emacspeak-dired.el * emacspeak-view-process.el:: emacspeak-view-process.el * emacspeak-tar.el:: emacspeak-tar.el * emacspeak-arc.el:: emacspeak-arc.el * emacspeak-bookmark.el:: emacspeak-bookmark.el * emacspeak-custom.el:: emacspeak-custom.el * emacspeak-winring.el:: emacspeak-winring.el * emacspeak-finder.el:: emacspeak-finder.el @end menu @node Personal Information Management @section Personal Information Management This section describes speech-enabled tools designed to aid in personal information management such as maintaining a daily calendar. @unnumberedsec Related Packages @menu * emacspeak-calendar:: emacspeak-calendar * emacspeak-bbdb:: emacspeak-bbdb * emacspeak-bookmark:: emacspeak-bookmark @end menu @node Desktop Applications @section Desktop Applications @subsection Spread Sheets Spreadsheet applications present a two dimensional view of structured data where the field values are (possibly) mutually dependent. On the Emacspeak desktop, a speech-enabled spreadsheet application can be used to manipulate such data-driven documents% ranging from simple cheque books and expense reports to complex investment portfolios. Where the traditional visual interface to spreadsheets is typically independent of the semantics of the data stored in the spreadsheet, the speech-enabled interface is derived from the @emph{ meaning} of the various fields making up the data. When presenting such information on a visual display, implicit visual layout can be used to cue the user to the meaning of different data fields. On the other hand, in the case of an actively scrolling auditory display, the spoken output needs to explicitly convey both the value and interpretation of the different data items. In addition, the interface needs to enable an active dialogue between user and application where the user is able to query the system about the possible meaning of a particular item of data. Finally, the aural interface needs to enable @emph{ multiple} views of the display. In the visual interface, such @emph{ multiple} views are automatically enabled by the two dimensional layout combined with the eye's ability to move rapidly around the layout structure. Thus, while viewing any particular row of a portfolio, one can immediately see the current total value as well as the net gain or loss. The Emacs spread-sheet package @code{dismal} can be retrieved from @code{ftp://cs.nyu.edu/pub/local/fox/dismal}. @subsection Forms Mode @emph{ Forms} mode an Emacs mode designed to edit structured data records like the line shown from file @code{ /etc/passwd} presents a user-friendly visual interface that displays the field name along with the field value. The user can edit the field value and save the file, at which point the data is written out using the underlying @code{ :} delimited representation. Mode @emph{ forms} provides a flexible interface to associating meaning to the fields of such structured data files. For details on it use, see the forms-mode section of the online Emacs info documentation. @subsection OCR --Reading Print Documents Module @code{emacspeak-ocr} implements an OCR front-end for the Emacspeak desktop. Page image is acquired using tools from package @code{SANE} (Scanner Access Now Easy). The acquired image is run through the OCR engine if one is available, and the results placed in a buffer that is suitable for browsing the results. This buffer is placed in mode @code{emacspeak-ocr-mode} a specialized mode for reading and scanning documents. @subsubsection Emacspeak OCR Mode Emacspeak OCR mode is a special major mode for document scanning and OCR. Pre-requisites: @itemize @bullet @item A working scanner back-end like SANE on Linux. @item An OCR engine. @end itemize Make sure your scanner back-end works, and that you have the utilities to scan a document and acquire an image as a tiff file. Then set variable @var{emacspeak-ocr-scan-image-program} to point at this utility. By default, this is set to `scanimage' which is the image scanning utility provided by SANE. By default, this front-end attempts to compress the acquired tiff image; make sure you have a utility like @code{tiffcp}. Variable @var{emacspeak-ocr-compress-image} is set to `tiffcp' by default; if you use something else, you should customize this variable. Next, make sure you have an OCR engine installed and working. By default this front-end assumes that OCR is available as @code{/usr/bin/ocr}. Once you have ensured that acquiring an image and applying OCR to it work independently of Emacs, you can use this Emacspeak front-end to enable easy OCR access from within Emacspeak. The Emacspeak OCR front-end is launched by command @dfn{emacspeak-ocr} bound to @kbd{C-e C-o}. This command switches to a special buffer that has OCR commands bounds to single keystrokes-- see the key-binding list at the end of this description. Use Emacs online help facility to look up help on these commands. Mode @dfn{emacspeak-ocr-mode} provides the necessary functionality to scan, OCR, read and save documents. By default, scanned images and the resulting text are saved under directory @code{~/ocr}; see variable @var{emacspeak-ocr-working-directory}. Invoking command @dfn{emacspeak-ocr-open-working-directory} bound to @kbd{d} will open this directory. By default, the document being scanned is named `untitled'. You can name the document by using command @dfn{emacspeak-ocr-name-document} bound to @kbd{n}. The document name is used in constructing the name of the image and text files. Here is a list of all emacspeak OCR commands along with their key-bindings and a brief description: @table @kbd @item @kbd{digit} @dfn{emacspeak-ocr-page} Jumps to specified page in the OCR output. @item @kbd{c} @dfn{emacspeak-ocr-set-compress-image-options} Interactively update image compression options. Prompts with current setting in the minibuffer. Setting persists for current Emacs session. @item @kbd{i} @dfn{emacspeak-ocr-set-scan-image-options} Interactively update scan image options. Prompts with current setting in the minibuffer. Setting persists for current Emacs session. @item @kbd{spc} @dfn{emacspeak-ocr-read-current-page} Speaks current page. @item @kbd{s} @dfn{emacspeak-ocr-save-current-page} Saves current page as a text file. @item @kbd{p} @dfn{emacspeak-ocr-page} Prompts for a page number and moves to the specified page. @item @kbd{]} @dfn{emacspeak-ocr-forward-page} Move forward to the next page. @item @kbd{[} @dfn{emacspeak-ocr-backward-page} Move back to the previous page. @item @kbd{d} @dfn{emacspeak-ocr-open-working-directory} Open directory containing the results of OCR. @item @kbd{n} @dfn{emacspeak-ocr-name-document} Name current document. @item @kbd{o} @dfn{emacspeak-ocr-recognize-image} Launch OCR engine on a scanned image. @item @kbd{i} @dfn{emacspeak-ocr-scan-image} Acquire an image using @code{scanimage}. @item @kbd{RET} @dfn{emacspeak-ocr-scan-and-recognize} Scan and recognize a page. @item @kbd{w} @dfn{emacspeak-ocr-write-document} Write all pages of current document to a text file. @item @kbd{q} @dfn{bury-buffer} Bury the OCR buffer. @item @kbd{c} @dfn{emacspeak-ocr-customize} Customize Emacspeak OCR settings. @item @kbd{?} @dfn{describe-mode} Describe OCR mode. @end table @unnumberedsec Related Packages @menu * emacspeak-calc:: emacspeak-calc * emacspeak-dismal:: emacspeak-dismal * emacspeak-remote:: emacspeak-remote * emacspeak-entertain:: emacspeak-entertain @end menu