This is a spelling correction program for the Explorer. It implements two ZWEI commands: M-X Correct Spelling and M-$ (correct region or word spelling). To run the program, load the defsystem and do a make-system on 'speller. Both of the correction commands will be available in ZWEI. Spelling correction is quite fast --- instantaneous if the word is correct, a few seconds if SPELLER has to search for possible replacements. M-$ will correct either a region or the word at the point if no region is defined. For a single word, it will display "OK" in the mini-buffer if the word is correct. If not, a menu will pop up. The bold menu entries are replacement suggestions. Click on one of those to replace the word in the buffer with the suggestion. The italic entries are commands to SPELLER. "Skip" will cause the speller to not correct this word. "Type-in" will let you type in a replacement word (which will not be checked). "Abort" ends spelling correction. "Accept" tells SPELLER to assume this word is correct in all further occurrences in the document. The speller can also prompt you for the same commands in the minibuffer. People who like to keep their hands on the keyboard will prefer this. It is also somewhat faster than popping up a menu. Just set SPELLER:*PROMPT-IN-MINIBUFFER* to t. M-X Correct Spelling will correct the spelling of the entire document. It starts at the beginning of the document looking for words in error. When one is found, it is highlighted with reverse video and the menu described above is displayed. Unless aborted, it will continue this until the end of the document. The point is restored to the same location it had when the Correct Spelling command was entered. M-$ behaves like M-X Correct Spelling when correcting a region. As of right now, there are no provisions for either user dictionaries or document specific dictionaries. (The Accept command is specific to the editor buffer and thus fairly temporary.) There is also no provision for modifying the main dictionary. Useful extensions would include document specific and user specific dictionaries with the ability to edit them. If anyone would care to write such extensions, send them to me and I will include them in future distributions. The dictionary is based on the Ackerman/Mattson/Gorin/Adler dictionary that was used on some CPM systems. While a little bit lightweight by today's standards, it is about 40,000 words long and fairly heavy on technical words. It contains some place names (states and a few cities) and some personal names. Where there are two acceptable variants for a word, e.g. "labelled" and "labeled", only one is represented in the dictionary. The theory is that consistency is more important than artistic license. When the make-system is done, a process is spun off to load the main dictionary. This takes a couple of minutes, so if you try to use one of correction commands immediately, you will get a message "Loading main dictionary..." and will wait until the load completes. If the process loading the dictionary gets an error, it will quietly die and the speller will retry the load when a spelling command is first used. Any errors on that load will be visible and correctable by you. This code is made available with the usual hacker restrictions: It is not to sold nor included in any package that is sold. Otherwise, it may be copied freely. I would appreciate it if any modifications would be sent to me for inclusion in the package. I would also like to hear of any bugs, although fixes are neither promised nor likely. I can be reached at JOHNSON@TI-CSL.CSNET-RELAY or Douglas Johnson MS 238 Texas Instruments P.O. Box 226015 Dallas, Texas 75226 -- Doug