Mercurial > hg > xemacs-beta
diff man/ispell.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | ee648375d8d6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/man/ispell.texi Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,422 @@ +\input texinfo @c -*-texinfo-*- +@comment %**start of header (This is for running Texinfo on a region.) +@setfilename ../info/ispell.info +@settitle ISPELL V3.1 +@comment %**end of header (This is for running Texinfo on a region.) + +@iftex +@finalout +@end iftex + +@ifinfo +This file documents ISPELL, an interactive spelling corrector. + +Copyright 1988, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). + +@end ignore +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end ifinfo + +@setchapternewpage odd +@titlepage +@sp 11 +@center @titlefont{ISPELL} +@sp 2 +@center by Pace Willisson and Geoff Kuenning +@sp 2 +@center Version 3.1 +@sp 2 +@center December 1993 + +@comment Include the Distribution inside the titlepage environment so +@c that headings are turned off. + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1988, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. + +Published by Geoffrey H. Kuenning @* +12840 Winthrop Ave., @* +Granada Hills, CA 91344-1221 USA +@vskip 0pt plus 1filll + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. + +@end titlepage +@menu +* Emacs:: Using ispell from emacs +* Old Emacs:: Old Emacs +* Private:: Your private dictionary +* Command summary:: All commands in emacs mode +* Near misses:: Definition of a near miss +* History:: Where it came from + + --- The Detailed Node Listing --- + +Using ispell from emacs + +* Word:: Checking a single word +* Buffer:: Checking a whole buffer +* Region:: Checking a region +* Multiple Dictionaries:: Using Multiple Dictionaries +@end menu + +@node Top, Emacs, (dir), (dir) + +@iftex +@chapter ISPELL +@code{Ispell} is a program that helps you to correct spelling and +typographical errors in a file. When presented with a word that is not +in the dictionary, @code{ispell} attempts to find @dfn{near misses} that +might include the word you meant. + +This manual describes how to use @code{ispell} from within @code{emacs}. +Other information about @code{ispell} is available from the @code{Unix} +manual pages. +@end iftex + +@ifinfo + +@code{Ispell} is a program that helps you to correct spelling errors in +a file, and to find the correct spelling of words. When presented with +a word that is not in the dictionary, @code{ispell} attempts to find +@dfn{near misses} that might include the word you meant. + +This manual describes how to use ispell, as well as a little about +its implementation. + +@end ifinfo + +@menu +* Emacs:: Using ispell from emacs +* Old Emacs:: Old Emacs +* Private:: Your private dictionary +* Command summary:: All commands in emacs mode +* Near misses:: Definition of a near miss +* History:: Where it came from + +@end menu + +@node Emacs, Old Emacs, Top, Top +@section Using ispell from emacs + +@menu +* Word:: Checking a single word +* Buffer:: Checking a whole buffer +* Region:: Checking a region +* Multiple Dictionaries:: Using Multiple Dictionaries +@end menu + +@node Word, Buffer, Emacs, Emacs +@subsection Checking a single word + +The simplest emacs command for calling ispell is 'M-$' (meta-dollar. On +some terminals, you must type ESC-$.) This checks the spelling of the +word under the cursor. If the word is found in the dictionary, then a +message is printed in the echo area. Otherwise, ISPELL attempts to +generate near misses. + +If any near misses are found, they are displayed in a separate window, +each preceded by a digit or character. If one of these is the word you +wanted, just type its digit or character, and it will replace the +original word in your buffer. + +If no near miss is right, or if none are displayed, you have five +choices: + +@table @kbd +@item I + +Insert the word in your private dictionary. Use this if you know that +the word is spelled correctly. + +@item A + +Accept the word for the duration of this editing session, but do not put +it in your private dictionary. Use this if you are not sure about the +spelling of the word, but you do not want to look it up immediately, or +for terms that appear in your document but are not truly words. The +next time you start ispell, it will have forgotten any accepted words. + +@item SPC + +Leave the word alone, and consider it misspelled if it is checked again. + +@item R + +Replace the word. This command prompts you for a string in the +minibuffer. You may type more than one word, and each word you type +is checked again, possibly finding other near misses. This command +provides a handy way to close in on a word that you have no idea how +to spell. You can keep trying different spellings until you find one +that is close enough to get a near miss. + +@item L + +Lookup. Display words from the dictionary that contain a +specified substring. The substring is a regular expression, +which means it can contain special characters to be more +selective about which words get displayed. +@xref{Regexps, Regexps, Regexps, emacs, emacs}. @refill + +If the only special character in the regular expression is a leading +@code{^}, then a very fast binary search will be used, instead of +scanning the whole file. + +Only a few matching words can be displayed in the ISPELL window. +If you want to see more, use the @code{look} program directly from +the shell. +@end table + +Of course, you can also type @kbd{@ctrl{G}} to stop the command without +changing anything. + +If you make a change that you don't like, just use emacs' normal undo +feature @xref{undo, undo, undo, emacs, emacs}. + +@node Buffer, Region, Word, Emacs +@subsection Checking a whole buffer + +If you want to check the spelling of all the words in a buffer, type +the command @kbd{M-x ispell-buffer}. This command scans the file, and makes +a list of all the misspelled words. When it is done, it moves the +cursor to the first word on the list, and acts like you just typed M-$ +@xref{Word}. + +When you finish with one word, the cursor is automatically moved to the +next. If you want to stop in the middle of the list type @kbd{X} or +@kbd{@ctrl{G}}. + +@node Region, Multiple Dictionaries, Buffer, Emacs +@subsection Checking a region + +You may check the words in the region with the command @kbd{M-x ispell-region}. +See @xref{mark, mark, mark, emacs, emacs}. + +The commands available are the same as for checking a whole buffer. + +@node Multiple Dictionaries, , Region, Emacs +@subsection Using Multiple Dictionaries + +Your site may have multiple dictionaries installed: a default one +(usually @file{english.hash}), and several others for different +languages (e.g. @file{deutsch.hash}) or variations on a language (such as +British spelling for English). + +@table @code + +@item ispell-change-dictionary +@findex ispell-change-dictionary + +This is the command to change the dictionary. It prompts for a new +dictionary name, with completion on the elements of @code{ispell-dictionary}. + +It changes @code{ispell-dictionary} and kills the old ispell process, if +one was running. A new one will be started as soon as necessary. + +By just answering @kbd{RET} you can find out what the current dictionary +is. + +@item ispell-dictionary +@vindex ispell-dictionary + +If non-nil, a dictionary to use instead of the default one. +This is passed to the ispell process using the @code{-d} switch and is +used as key in @code{ispell-dictionary-alist}. + +You should set this variable before your first call to ispell (e.g. in +your @file{.emacs}), or use the @kbd{M-x ispell-change-dictionary} +command to change it, as changing this variable only takes effect in a +newly started ispell process. + +@item ispell-dictionary-alist +@vindex ispell-dictionary-alist + +An alist of dictionaries and their associated parameters. + +Each element of this list is also a list: + +@example +(@var{dictionary-name} + @var{casechars} @var{not-casechars} @var{otherchars} @var{many-otherchars-p} + @var{ispell-args}) +@end example + +@var{dictionary-name} is a possible value of variable +@code{ispell-dictionary}, @code{nil} means the default dictionary. + +@var{casechars} is a regular expression of valid characters that +comprise a word. + +@var{not-casechars} is the opposite regexp of @var{casechars}. + +@var{otherchars} is a regular expression of other characters that are +valid in word constructs. Otherchars cannot be adjacent to each other +in a word, nor can they begin or end a word. This implies we can't +check @samp{Stevens'} as a correct possessive and other correct +formations. + +Hint: regexp syntax requires the hyphen to be declared first here. + +@var{many-otherchars-p} is non-nil if many otherchars are to be allowed +in a word instead of only one. + +@var{ispell-args} is a list of additional arguments passed to the ispell +subprocess. + +Note that the @var{casechars} and @var{otherchars} slots of the alist should +contain the same character set as casechars and otherchars in the +@var{language}@file{.aff} file (e.g., @file{english.aff}). + +@end table + +@node Old Emacs, Private, Emacs, Top +@section Old Emacs + +Until ispell becomes part of the standard emacs distribution, you will +have to explicitly request that it be loaded. Put the following lines +in your emacs init file @xref{init file,, init file, emacs, emacs}. + +@example +(autoload 'ispell-word "ispell" "Check the spelling of word in buffer." t) +(autoload 'ispell-region "ispell" "Check the spelling of region." t) +(autoload 'ispell-buffer "ispell" "Check the spelling of buffer." t) +(global-set-key "\e$" 'ispell-word) +@end example + +(It will do no harm to have these lines in your init file even after +ispell is installed by default.) + +@node Private, Command summary, Old Emacs, Top +@section Your private dictionary + +Whenever ispell is started the file @file{.ispell_words} is read from +your home directory (if it exists). This file contains a list of words, +one per line. The order of the words is not important, but the case is. +Ispell will consider all of the words good, and will use them as +possible near misses. + +The @kbd{I} command adds words to @file{.ispell_words}, so normally you +don't have to worry about the file. You may want to check it from +time to time to make sure you have not accidentally inserted a +misspelled word. + +@node Command summary, Near misses, Private, Top +@section All commands in emacs mode + +@table @kbd +@item DIGIT +Select a near miss +@item I +Insert into private dictionary +@item A +Accept for this session +@item SPC +Skip this time +@item R +Replace with one or more words +@item L +Lookup: search the dictionary using a regular expression +@item M-$ +Check word +@item M-x ispell-buffer +Check buffer +@item M-x ispell-region +Check region +@item M-x ispell-change-dictionary +Select different dictionary. +@end table + +@node Near misses, History, Command summary, Top +@section Definition of a near miss + +Two words are near each other if they can be made identical with one +of the following changes to one of the words: + +@example +Insert a blank space +Interchange two adjacent letters. +Change one letter. +Delete one letter. +Add one letter. +@end example + +Someday, perhaps ispell will be extended so that words that sound +alike would also be considered near misses. If you would like to +implement this, see Knuth, Volume 3, page 392 for a description of the +Soundex algorithm which might apply. + +@node History, , Near misses, Top +@section Where it came from + +Ispell has a long and convoluted history. Originally called SPELL, it +was written by Ralph E. Gorin in 1971. That version was written in +assembly language for the DEC PDP-10 to run under the WAITS operating +system at the Stanford Artificial Intelligence Laboratory. Subsequent +versions, also in PDP-10 assembly language, were developed for the BBN +TENEX, MIT ITS, and DEC TOPS-10 and TOPS-20 operating systems. It was +later revised by W. E. Matson (1974), and W. B. Ackerman (1978), +changing its name to ISPELL in the process. + +In 1983, Pace Willisson (pace@@ai.mit.edu) converted this version to +the C language and modified it to work under Unix. + +In 1987, Walt Buehring revised and enhanced ispell, and posted it to the +Usenet along with a dictionary. In addition, Walt wrote the first version +of "ispell.el", the emacs interface. + +Geoff Kuenning (geoff@@ITcorp.com, that's me, and by the way I pronounce +it "Kenning") picked up this version, fixed many bugs, and added further +enhancements. In 1988 I got ambitious and rewrote major portions of the +code, resulting in the table-driven multi-lingual version. Ken Stevens +(stevens@@hplabs.hp.com) made overwhelming contributions to the elisp +support to produce the version you are using now. + +Due to a misunderstanding involving the Free Software Foundation, it +later became necessary to rename this version to ispell to avoid +confusion on the part of users. + +Many other enhancements and bug fixes were provided by other people. +Although I omit mention here due to space, many of these people have +also made significant contributions to the version of ispell you see +here. For a full list of people who have contributed to ispell, refer +to the file @file{Contributors} which is distributed with the ispell +sources. + +@noindent +Geoff Kuenning @* +geoff@@ITcorp.com @* + +@contents + +@bye