1 | This is ispell version 3.1, an interactive spelling checker. |
---|
2 | |
---|
3 | Contents 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 | |
---|
19 | What 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 | |
---|
27 | What'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 | |
---|
49 | Where 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 | |
---|
72 | OK, 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 | |
---|
169 | Who 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 | |
---|
180 | Where 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 | |
---|
194 | How 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 | |
---|
208 | Where 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 | |
---|
227 | How 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 | |
---|
257 | Special 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 | |
---|
376 | What 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. |
---|