source: trunk/third/ispell/README @ 10334

Revision 10334, 18.3 KB checked in by ghudson, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10333, which included commits to RCS files with non-trunk default branches.
Line 
1    This is ispell version 3.1, an interactive spelling checker.
2
3Contents of this README file:
4
5    What Is Ispell and Why Do I Want It?
6    What's New in This Version?
7    Where Can I Get Ispell?
8    OK, How Do I Install It?
9    Who Wrote Ispell?
10    Where Do I Send Bug Reports?
11    How Do I Reference Ispell in Scholarly Papers?
12    Where Do I Get Dictionaries?
13    How Long Does It Take to Make Dictionaries?
14    Special Installation Notes for Certain Machines:
15    What About Ispell for MS-DOS?
16
17------------------------------------------------------------------------
18
19What Is Ispell and Why Do I Want It?
20
21    Ispell is a fast screen-oriented spelling checker that shows you
22    your errors in the context of the original file, and suggests possible
23    corrections when it can figure them out.  Compared to UNIX spell, it
24    is faster and much easier to use.  Ispell can also handle languages
25    other than English.
26   
27What's New in This Version?
28
29    Compared to ispell versions 2 and 4.0 (the latter was the
30    short-lived Gnu version), ispell 3.1 contains many new features,
31    notably TeX support, international language support, and handling
32    of prefixes as well as suffixes.  Compared to ispell version 3.0,
33    ispell 3.1 has many bug fixes, a number of minor improvements, and
34    vastly improved support for multiple languages.
35
36    The only truly important difference between 3.0 and 3.1 is in the
37    format of the "defstringtype" and "altstringtype" statements,
38    which now require a deformatter argument.  Existing affix files
39    will have to be converted.  See ispell.4 for documentation, or
40    deutsch.aff for an extended example.  The conversion is very easy
41    to do.  All affix files distributed with ispell have already been
42    converted.
43
44    The complete list of bug fixes and improvements is too long to
45    include here (and besides, I'm too overworked to create it).
46    However, users of ispell 2.0 and ispell 4.0 should note that the
47    "x" and "q" commands have been interchanged.
48
49Where Can I Get Ispell?
50
51    If you have a Web browser, visit the ispell home page:
52
53        http://www.cs.ucla.edu/ficus-members/geoff/ispell.html
54
55    The current version of ispell is available for anonymous ftp from
56    ftp.cs.ucla.edu (131.179.240.10) or ftp.math.orst.edu
57    (128.193.80.161), in the pub/ispell-3.1 directory.  The latest
58    version is always named "ispell-3.1.xx.tar.gz", where "xx" is
59    the patch level.  There are also sometimes files named
60    "README-patchxx" which contain notes specific to a given version.
61    Announcements of patches to ispell will be posted to comp.text.tex,
62    gnu.announce, and gnu.emacs.help.
63
64    A number of ftp mirror sites also store ispell.  Check Archie for
65    "ispell-3.1" to find a site near you.
66   
67    Ispell comes with English dictionaries.  For other languages,
68    check the "Where" and "README" files in the "languages"
69    subdirectory for hints on where to find dictionaries and how to
70    install them.
71
72OK, How Do I Install It?
73
74    Ispell is quite portable (thanks to many people).  If you speak
75    American English and have a BSD-like system, you may be able to
76    get away with simply typing "make all" to finish unpacking
77    the kit and make ispell and a dictionary, all configured to be
78    installed in /usr/local/*.  If you have a USG (System V) system,
79    you will at least have to copy "local.h.samp" to "local.h", then
80    add "#define USG" to local.h before compiling.  Be sure you have
81    at least 10 MB of free space in /tmp, or set your TMPDIR
82    environment variable to point somewhere with that much space.
83
84    For more complex installations, you will have to create a fancier
85    local.h file.  All customization of ispell 3.1, even for the
86    Makefile, is done by creating or editing the file "local.h" to
87    override the default definitions of certain variables.  The most
88    common changes will be to the LANGUAGES variable (to set the
89    languages; see also the Makefiles in the various language
90    subdirectories), CC (to choose gcc), and BINDIR through MAN4DIR
91    (to control where ispell is installed).  There are many other
92    configuration parameters; see config.X for the complete list and
93    further instructions.  *DO NOT* make changes to config.X or to any
94    of the Makefiles.  Anything you define in "local.h" will override
95    definitions in those files.
96
97    The English-language dictionary comes in four sizes: small,
98    medium, large, and extra-large.  I recommend using the medium
99    dictionary unless you are very short on space.  The small and
100    medium dictionaries have been hand-checked against a paper
101    dictionary to improve their accuracy.  This is not true of the two
102    larger ones.  The large and extra-large dictionaries contain
103    less-frequently-used words, and most sites will not want to pay
104    the price of storing them, especially because they may contain
105    errors.  Also, a large dictionary can hide misspellings of short
106    words because there is some similar word that nobody uses.  (For
107    example, the crossword-puzzle favorite "ort" can hide misspellings
108    of "or".)
109
110    For each dictionary size, you can also choose to make a "plus"
111    version, named by adding a plus sign to the size indication.
112    These versions are created by incorporating a dictionary file of
113    your own, usually /usr/dict/words.  (I can't distribute a
114    dictionary based on that file because it's copyrighted.)  Making a
115    plus version requires extra time and disk space, but will give you
116    some computer and technical terms that aren't in the basic ispell
117    word list.  That's why the default dictionary is
118    "americanmed+.hash".
119
120    After all edits, you are ready to compile ispell.  Make sure you
121    have set your TMPDIR environment variable, and then type
122    "make all".  This will compile all the programs, put the
123    dictionaries together, and build the hash file.  If you get errors
124    while compiling term.c, change the setting of "#define USG" in
125    your local.h file and try again.
126
127    If you chose a "+" version of the dictionary (the LANGUAGES macro
128    in config.X), expect this first make to run for quite a while
129    (usually about half an hour, but as much as 24 hours on a very
130    limited machine) because of the munchlist step.  If you chose a
131    non-plus version, the make will not take long.  The munchlist step
132    will also take a *lot* of disk space (see the table below for more
133    information), so be sure to set TMPDIR in your environment to
134    point to someplace with lots of room.
135
136    After your first make completes, you are ready to install ispell.
137    The standard "make install" will install ispell, the auxiliary
138    programs and scripts, the manual page, and the dictionary hash
139    file, all in the directories you have chosen for them.  This
140    usually has to be done as root, and on some systems you will not
141    be able to redirect the output to a file.  (If you're the careful
142    sort, you'll check the output of "make -n install" first to be
143    sure there are no hidden surprises.)  If you don't want to install
144    the dictionary-building tools, you can type "make partial-install"
145    to install just the files needed to use ispell itself.
146
147    If you have emacs, note that the installation process does not
148    modify the top-level Info menu to include ispell; you must do this
149    by hand if you want ispell to appear in the top-level menu.  The
150    installation process may clobber emacs-related files from ispell
151    4.0.  If you don't consider this a feature, you should preserve
152    them first.  Also, if you have emacs you can ignore the warnings
153    issued when ispell.el is byte-compiled.  Finally, ispell.el
154    contains some platform-dependent stuff, such as path names and
155    egrep switches.  This is a bug that will be cleaned up someday.
156
157    As well as the standard "make clean" and "make realclean" targets,
158    there is also a "make dictclean" target which will get rid of
159    constructed dictionary files such as "english.med+".  This is a
160    separate target because of the time it takes to build
161    dictionaries.
162
163    Finally, there is a directory named "addons", which contains shar
164    kits for ispell helper programs that were generously written by
165    other people.  These are not copyrighted or supported by the
166    ispell maintainer.  Contact the original authors (listed in README
167    files in the kits) for more information.
168
169Who Wrote Ispell?
170
171    Ispell is a very old program.  The original was written in PDP-10
172    assembly in 1971, by R. E. Gorin.  The C version was written by
173    Pace Willisson of MIT.  Walt Buehring of Texas Instruments added
174    the emacs interface and posted it to the net.  Geoff Kuenning
175    added the international support and created the current release.
176    Many, many other people contributed to the current version; a
177    complete list (with a much more detailed history) can be found in
178    the file "Contributors".
179
180Where Do I Send Bug Reports?
181
182    Most ispell bug reports, except bugs related to the emacs-lisp
183    interface, should be sent to "ispell-bugs@itcorp.com".  Bugs in
184    the emacs interface (ispell.el) should be sent to
185    "ispell-el-bugs@itcorp.com".  If you're not sure which address to
186    use, send your report to "ispell-bugs@itcorp.com" and I'll sort it
187    out from there.
188
189    Bugs in add-on packages (found in the "addons" subdirectory)
190    should not be sent to itcorp.com.  Instead, send reports to the
191    developers of those packages (see the README file for the package
192    you are using).
193
194How Do I Reference Ispell in Scholarly Papers?
195
196    There is no published paper on ispell, so if you make use of
197    ispell in a fashion that requires a reference (e.g., using the
198    dictionary as a word list in a research project), you are limited
199    to an Internet reference.  The full proper title is printed by
200    "ispell -v": "International Ispell Version x.y.z".  Please include
201    the full version number in your reference so that people can
202    discover the exact variant that you used; sometimes it's
203    important.  If you're feeling really nice, you can also credit me,
204    Geoffrey H. Kuenning, as the author.  Usually, you should also
205    include a mention of the master ftp site, ftp.cs.ucla.edu, so that
206    readers of your paper can locate a copy if they wish.
207
208Where Do I Get Dictionaries?
209
210    Ispell comes with American and British dictionaries. American-style
211    spellings are the default.  To get British spellings, copy the
212    LANGUAGES and MASTERHASH definitions from config.X into your
213    local.h, and then globally replace "american" with "british".
214
215    For other languages, consult the file "languages/Where", which
216    lists everything I know about.  You can also check the ispell home
217    page:
218
219        http://www.cs.ucla.edu/ficus-members/geoff/ispell.html
220
221    which contains pointers to all known dictionaries.
222
223    If you create a dictionary of your own and make it available for
224    ftp, please send a notification to ispell-bugs@itcorp.com so that
225    I can add your dictionary to the ftp list.
226
227How Long Does It Take to Make Dictionaries?
228
229    The following tables give approximate timings and peak disk usage
230    for making each of the three augmented English dictionaries (the
231    so-called "plus" versions).  The timings were collected on an
232    unloaded 68040.  Your mileage may vary.
233
234    Using EXTRADICT=/usr/dict/words:
235
236                        Time to build   Peak temp space Final size
237
238        english.sml+    30 minutes      7.1M            306K
239        english.med+    35 minutes      8.8M            359K
240        english.lrg+    60 minutes      10.7M           680K
241
242    Using EXTRADICT=/usr/dict/words and /usr/dict/web2:
243
244                        Time to build   Peak temp space Final size
245
246        english.sml+    2-1/2 hours     19.5M           2243K
247        english.med+    2-1/2 hours     19.6M           2265K
248        english.lrg+    3 hours         20.7M           2347K
249
250    The peak disk usage occurs fairly early in the munching process.
251    When creating english.lrg+ with /usr/dict/web2, the peak was
252    reached within 30 minutes.  When web2 was omitted, the peak was
253    always reached within 1/4 of the total running time of munchlist.
254    Again, remember that these times will vary depending on your load
255    and your machine's power.
256
257Special Installation Notes for Certain Machines:
258
259    Although I have tried to avoid putting in specific machine
260    dependencies as a general rule, some machine-specific #defines
261    will be found at the end of config.X.
262
263    If you get lots of warnings when compiling term.c, check to be
264    sure that you have correctly defined SIGNAL_TYPE in your local.h.
265
266    Some versions of ISC Unix have TIOCGWINSZ defined even though it's
267    not supported and the necessary structures are not present.  The
268    solution is to add "#undef TIOCGWINSZ" in your local.h.
269
270    Under ISC (Solaris) Unix System V.3, you may have to add includes
271    of <sys/stream.h> and <sys/ptem.h> to your local.h to get around
272    compilation problems in term.c.
273
274    Some versions of SCO Unix define "struct winsize" conditionally.
275    The solution is to add "#define _IBCS2" in your local.h.
276
277    Some versions of SCO Unix define "struct winsize" in a weird
278    place.  Add #includes of <sys/stream.h> and <sys/ptem.h> to your
279    local.h to get around this.
280
281    Suns running 4.1.1 also have a bug in sort which causes core dumps
282    when running munchlist.  Sun users who have the System 5 option
283    can work around this bug by making sure that /usr/5bin precedes
284    /usr/bin in their path, so that /usr/5bin/sort is used by
285    munchlist.
286
287    It is reported that some older versions of gnu sort do not
288    recognize the -T option.  (However, as of textutils 1.9 it does.)
289    Define SORTTMP and MAKE_SORTTMP as the null string ("") if you use
290    gnu sort, or change your path to use the manufacturer's sort
291    command (but watch out for Sun's sort bug, above!).
292
293    Some versions of gcc for the Sparc have an optimizer bug that
294    causes problems for languages that use 8-bit characters.  The
295    solution is to turn off optimization when compiling at least
296    makedent.c, or for all of ispell.  The bug is known to exist in
297    gcc 2.4.5, and is known to have been fixed in gcc 2.5.8.
298
299    There is a report that on Solaris 2.3 for the sparc, buildhash may
300    core dump.  The cure is to use "bison -y" instead of yacc.
301
302    On SunOS 4.1.3 using Sun's SPARCompiler C2.0.1, you may have to
303    select static linking (-Bstatic option in CFLAGS).
304
305    The AIX RS6000 should use -lcurses for TERMLIB, rather than -ltermcap.
306
307    Amiga users will need to #define fork vfork.  Other than this,
308    ispell should compile using gcc on the Amiga.
309
310    There have been reports that some BSD releases don't properly
311    declare "extern int errno" in errno.h.  If you suffer from this
312    problem, you'll have to add your own declaration in your local.h.
313
314    There are known problems on Ultrix with the interaction between
315    ispell and some versions of elm on Ultrix.  You may be able to fix
316    this by making sure USG is undefined, or you may have to make more
317    extensive changes to term.c to cause it to use the "termios"
318    interface instead of the "termio" one.
319
320    The DEC Alpha and Cray have 64-bit longs.  Make sure you define
321    MASKTYPE_WIDTH as 64 for these machines.
322
323    Some versions of the DEC Alpha compiler may compile ispell
324    incorrectly.  The cure is to turn optimization off and compile
325    with the -g switch.  The symptoms are segmentation faults and
326    garbage characters in the ~/.ispell_english file.  If you get this
327    symptom, be sure to clean out the garbage before you rerun ispell
328    or recompiling won't help.
329
330    Some versions of "uniq" on the DEC Alpha, OSF/1 2.x, generate
331    garbage output if given null input, causing munchlist to loop
332    forever.  This can by checked by running "uniq < /dev/null | wc
333    -c", which ought print zero.  If it does not, you'll have to use
334    GNU uniq (from textutils/1.11) instead, or upgrade to OSF/1 3.0
335    which does not have the bug.
336
337    DEC OSF/1 keeps the extra dictionary in a wierd place.  Set
338    EXTRADICT to /usr/share/dict/words.
339
340    HP systems will need C compiler patch PHSS_3015 to compile ispell
341    correctly, bringing the revision to A.09.34 or higher.  The
342    symptom of the wrong compiler is incorrect highlighting of
343    misspelled words.  Gcc will also compile ispell correctly on HP
344    systems.
345   
346    I have a report that on HP systems 300-400, you must use either
347    gcc or the non-ansi CCFLAG ("cc +o2"), at least for the ispell.c
348    source.  However, it is possible that this problem has been
349    corrected by a bug fix to term.c.  I'd be interested in hearing
350    whether the report is still true.
351
352    Some "internationalized" Unixes (HP, for instance) vary the
353    behavior of sort(1) based on an environment variable such as LANG
354    or LOCALE.  The symptom is that munchlist does not produce an
355    optimal dictionary.  Munchlist tries to protect against this by
356    setting LANG and LOCALE to "C", but if your system uses different
357    environment variables, you may have to do this by hand.
358
359    If you get core dumps from the sort command (reported on HP
360    systems building large German dictionaries), try adding the "-y"
361    flag to the appropriate invocation of sort in the Makefile or in
362    munchlist.  This flag is only available on some systems.
363
364    SGI Irix systems store /usr/dict/words in /usr/lib/dict or
365    /usr/share/lib/dict.  You may have to install the normal "spell"
366    and associated files from cd-rom before it will exist.  If you get
367    errors compiling with Irix 4.0.5 or others, try defining __STDC__
368    in local.h, to get around problems caused by the fact that the
369    compiler accepts prototypes but doesn't define __STDC__.
370
371    Some BSDI systems have a screwy sort command that uses
372    -T to specify the record (as opposed to field) delimiter.  You'll
373    have to disable SORTTMP and enable MAKE_SORTTMP.  You'll also have
374    to be sure that /usr/tmp has lots and lots of free space.
375
376What About Ispell for MS-DOS?
377
378    Although ispell is not officially supported on MS-DOS, there are a
379    couple of #defines that you might find useful if you want to do
380    such a thing.  Check the end of config.X.  Several people have
381    reported success building DOS versions using emx/gcc.  Others have
382    used the djgpp package, with bison replacing yacc.  Some places to
383    look for a DOS ispell if you have an x86:
384
385        ftp.cdrom.com:pub/os2/unix/isp3009b.zip.
386        or
387        ftp-os2.cdrom.com:pub/os2/2_x/unix/
388
389    There is also a program named jspell, which is an ispell
390    lookalike.  Look on ftp.tex.ac.uk, in the directory
391    pub/archive/support/jspell.
Note: See TracBrowser for help on using the repository browser.