
          ZapSpell, a module interfacing Zap to spell checkers
          ====================================================

Features
~~~~~~~~
The module provides an interface between Zap and the 'Impress'n Spell'
spell-checking module.  It provides spell-checking of entire files and 
selections.  It offers an interface using throwback of misspelled words in
conjunction with a more next/previous misspelled word dialogue.

Operation
~~~~~~~~~
Words with lengths greater than twenty characters or less than three, are not
checked.  Non alphabetic characters, including numbers and the underscore
character (but excepting the single quote) are treated as delimiters.

The front end may be activated by the SPELL command.  This brings up a window
near the top-right hand corner of the window from which it was brought up.
This has a large number of action buttons on it.

"Previous" and "Next" locate the previous and next misspelled words in the
file (relative to the cursor position).  If there is no word that fits into
this category a beep is generated.

"Current" highlights the word nearest to the cursor and brings up a list of
alternative words based around this.

"Replace" snips the current selection, and replaces this by the contents of
the writable icon.  If there is no selection then a beep is generated.

"Add" adds the current word to the current Impression Spell user dictionary.

"Find" opens the dictionary at the nearest word to that in the writable icon.

"Cancel" closes the dialogue box.

"Check selection" feeds the entire current selection to the spell-checker and
generates throwback based on the results.

"Check buffer" feeds the entire zap buffer to the spell-checker and generates
throwback based on the results.

Clicking on dictionary entries copy the word into the writable icon.

The up and down arrows browse through the dictionary 1, 8 and 100 words at a
time.

With the cursor in the main writable icon, typing words dynamically looks
them up in the dictionary.  Cursor up/down and page up/down navigate the
dictionary, and pressing "Insert" inserts the first visible word in the
dictionary into the main icon.  Pressing "Tab" actually performs an
insertion in the document. "Return" finds the word in the dictionary.

The "Ignore" button doesn't work yet...

Impression Spell
~~~~~~~~~~~~~~~~
The 'Impress'n Spell' module is copyright (C) Computer Concepts.  The author
has asked for permission to distribute it with ZapSpell, but permission has
not currently been granted.  Consequently the module is not being supplied
with ZapSpell at the moment.

It is, however, freely available on the internet as part of the Impression
Junior package.  This is usually downloadable from Computer Concepts' web
site at http://www.cconcepts.co.uk.

The module was also made available on an 'Archimedes World' cover CD-ROM a
couple of years ago.  It's path on the CD is:

CDFS::AWCD1.$.FREESOFT.IMPRESSION.!JUNIOR.RMSTORE.!SPELLMOD;

...it was also on the second Acorn User CD ROM as:

CDFS::ACORN_U2.$.DEMOS.CCONCEPTS.JUNIOR.!JUNIOR.RMSTORE.!SPELLMOD;

...and, for good measure, the third one as:

CDFS::AUCD3.$.ADSTUDIO.DTP.IMPJUNIOR.JUNIOR.!Junior.RMStore.!SpellMod.

The version included with Impression Junior reports itself as being:

	"Impress'n Spell	1.24 (17 Dec 1992)"

...there are more recent versions of the module than this; version 1.27 is
the latest known about but the author hasn't performed any testing using
anything except version 1.24.  Version 1.27 however is reported to work with
ZapSpell.

ZapSpell has not been tested with Computer Concepts' 'Spell Master' module,
(a precursor to Impression Spell?) and probably won't work with it.

Installation
~~~~~~~~~~~~
Copy the !ZapSpell application into the !Zap.Modules directory, then restart Zap.


Commands
~~~~~~~~
Details of the commands provided may be found in the HelpData file.
Most of the functionality can be accessed through the front end provided by
the 'SPELL' command.

Clients
~~~~~~~
Zap colouring modes can interact with ZapSpell to help check words - for
example, ZapEmail allows only the sections of the email which aren't in the
header/signature or in quoted sections of the text to be checked.

For more information, it is recommended that you look in the respective
mode's !Help file.

Technical
~~~~~~~~~
ZapSpell uses a new reason code with e_init to confirm spelling queries with
the owning mode. These are described in the E-Entry file.

Plans
~~~~~
Interfaces with other spell-checkers are under consideration.  Be advised
that an interface with ISpell looks completely unappealing, for technical
reasons associated with ISpell's external interface.

Problems
~~~~~~~~
ZapSpell cannot 'detokenise' files before it checks them (like Zap's search
routines can).  At the moment, this mainly affects spelling of tokenised
BASIC files (where the effect is beneficial in some respects).

At the moment the list of 'suggested' words consists of an alphabetic list
of dictionary entries starting at the alphabetically nearest spelling; I'm
hoping to get hold of some documentation for Impression Spell before trying
to improve this situation.

I have contacted Computer Concepts in the hope of obtaining some
documentation for Impression Spell, but they do not appear to have addressed
my requests.

Only 'simple' user dictionaries are supported.

Interactive help messages are not yet processed by ZapSpell.

There appear to be some historical problems with the Impression Spell module.
The dictionary is not alphabetic - plurals ending in 's' are generally
stored immediately following their singular equivalents for example.
There are some strange 'words' in the dictionary.
The user dictionary format seems a trifle unusual.

Disclaimer
~~~~~~~~~~
Although the author welcomes correspondence concerning this mode (especially
about any spelling mistakes in this file), he makes no claim that it is bug
free and, it is not guaranteed to perform any particular function.  It is to
be used entirely at one's own risk.

Legal status
~~~~~~~~~~~~
This program is distributed as Freeware; it may be distributed freely
provided that all the associated files remain intact.

History
~~~~~~~
v0.19 - (28-Mar-2000) [SJA]
      * SPELL_CLOSE implemented. In addition, a spelling keymap has been
      	added that supplies movement/selection commands plus commands to
      	drive the front-end, which currently doesn't respond to its own
      	keypresses (but, arguably, having the focus on the text window
      	is better anyway).

v0.18 - (25-Oct-1999) [SJA]
      * Throwback calls modified to use the new colouring system.

v0.17 - (07-Oct-1999) [SJA]
      * Internationalised.
      * Removed debugging beeps. Actually, I've removed _all_ beeps, so we
        may have lost some we wanted ...
      * Uses Zap's message tokens to make colouring work better.
      * Gives a name to its throwback windows.

v0.16 - (12-Dec-1998)
      * Worked around a problem which sometimes fired when the 'Replace' icon
        was clicked on.
        
v0.15 - (11-Jan-1998)
      * Crude ability to load default dictionaries provided, by providing a
        system variable which executes an arbitrary Zap command whenever the
        !SpellMod is loaded.
        
v0.14 - (17-Oct-1997)
      * SPELL_REPLACE command updated to allow spell-as-you-type spelling
        completion...

v0.13 - (14-Sep-1997)
      * Spell-as-you-type interface created.

v0.12 - (14-Jul-1997)
      * Saving user dictionaries now supported.  No DragASprite support yet,
        and no RAM transfer protocol implemented so saving data to other
        applications may not work as expected.
      * A path is now used to specify the location of Impression Spell in the
        !Setup file.

v0.11 - (12-Jul-1997)
      * Menu added and the interface to modes extended slightly.

v0.10 - (11-Jul-1997)
      * Back end for manipulating user dictionaries constructed.  Loading
        dictionaries, and "Add" and "Delete" now work, but much more work
        needs to be done before it's usable.

v0.09 - (04-Jul-1997)
      * The writable icon has been made 'hot' so that typing into it
        instantly looks up the word in the dictionary.
      * Some problems with the location of the dictionary's end resolved.
        
v0.08 - (30-Jun-1997)
      * Cured another severe problem affecting the stability of the module.
      * Made the redraw of the window into the dictionary multi-task - the
        redraw will look slightly slower, but will allow smoother operation,
        and allow for a bigger window if needed.
        
v0.07 - (29-Jun-1997)
      * Cured a severe problem affecting the stability of the module when
        most of the commands were used.  This may not solve all the stability
        difficulties people have been experiencing, but hopefully it will.
      * Added support for various internal protocols designed mainly to
        provide support for ZapEmail.
      * Elliot Hughes' spelling commands from ZapENH included.  Many thanks
        are due to Elliot for providing me with the source code to this.
        
v0.06 - (28-Jun-1997)
      * Improvements to the caret handling code - if the caret is is the
        writable, then it now stays there when forward/next are pressed.

v0.05 - (27-Jun-1997)
      * Various bug fixes: IMPRESSIONSPELL_PREV improved; ESCAPEing improved.

v0.04 - (26-Jun-1997)
      * Options to choose between possible alternative words made available.

v0.03 - (25-Jun-1997)
      * Now reports queries using logical line numbers rather than using
        offsets in the throwback.
      * No longer goes into an infinite loop if IMPRESSIONSPELL_BUF is
        applied to an empty buffer.
      * Front end made semi-functional.
      * IMPRESSIONSPELL_CURRENT command added.

v0.02 - (23-Jun-1997)
      * The ESCAPE key is now being checked during throwback generation.

v0.01 - (19-Jun-1997)
      * Throwback and next/previous features with "Impress'n Spell" only.



Contact
~~~~~~~

 Bug reports should be sent to 

		bugs@zap.tartarus.org

  Feature requests should be directed towards

		zap-features@zap.tartarus.org


There are a also a number of mailing lists you can subscribe to - see
Zap's web pages for details:

		http://zap.tartarus.org/
