Changes since 0.06:
~~~~~~~~~~~~~~~~~~
(1) Can check word at caret, provided that system text is used
(2) Can do anagrams, and also fuzzy spell checking
(3) Browser window opens if a word cannot be found
(4) Tidied up menu structure
(5) Should accept accented words
(6) Unavailable entries greyed out



                        Help file for !Spell
                        ~~~~~~~~~~~~~~~~~~~~

                            USER GUIDE
                            ~~~~~~~~~~

Installation
~~~~~~~~~~~~
PtrUtils must be copied into your system directory (ie into
!System.Modules).


Introduction
~~~~~~~~~~~~
!Spell provides a RISC-OS environment for the SpellMaster relocatable module
from Computer Concepts. Entering 'Help SpellMaster' will list the command
line options that the module provides: !Spell uses SpellMaster's SWI
interface.

!Spell is a fast, versatile, spelling checker. It can check a document at
about a page per second.

!Spell has a built in dictionary, which cannot be modified, and the ability
to load, create, and update user dictionaries. This release of !Spell
includes an example dictionary aimed at GCal users.


To check the spelling in a file
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Either drag the file's icon in the filer onto the !Spell icon, or drag the
icon from the 'Save' dialogue box within Edit.

If the file contains spelling errors these will be listed in an Edit window,
together with the relevant line number.


To check the spelling of a single word
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: This only works for system text, eg in Edit.

Position the caret somewhere on the word to be checked, then click Select on
the Spell icon.


Browse
~~~~~~
This is the fastest way of checking a word's spelling. Browse can be
selected by choosing 'Browse' from the icon bar menu. Alternatively, if
there is no input focus, you can click Select on the icon.

Keys are:

  A-Z or a-z or ' (quote): Will build up browse word and scroll
  appropriately

  <Delete> or <Back Space>: Delete last letter from browse word

  <Esc> or <Ctrl>+U: Delete browse word completely

Note, however, that Computer Concept's spell module does not keep words in
strict alphabetical order, so you may have to complete a word's spelling
before you can be certain that it is spelled incorrectly, or is not in a
loaded dictionary.


Spelling algorithms
~~~~~~~~~~~~~~~~~~~
The spelling algorithm can be chosen from the icon bar menu:
  'Typo'     Looks for one or two misplaced letters. This is the default
             algorithm
  'Fuzzy'    Uses a more phonetic algorithm
  'Anagram'  Looks for anagrams of the word
  

Make dictionary
~~~~~~~~~~~~~~~
To make a dictionary select Dictionaries->Make dictionary. Then create a
dictionary by dragging a text file onto the icon.

The text file should contain a list of words, separated by a space, line
feed or carriage return. The list does not have to be in alphabetical order.
Only new words will actually be added.

If the dictionary exists already on disc, it will be overwritten. If a
dictionary of the same name is currently loaded, the new dictionary will
not be created and a warning will be given. 


Load dictionary
~~~~~~~~~~~~~~~
Dictionaries are kept in <SDicts$Dir>. This is set to !Spell.Dicts in the
!Run file. Selecting 'Load dictionary' will display this directory: Double
click on a dictionary to load it. Once a dictionary has been loaded it will
be used with other loaded dictionaries and the built in dictionary when
searching for words.


List dictionary
~~~~~~~~~~~~~~~
This lists the contents of the selected dictionary in an Edit window. Once
in Edit the list can be manipulated, added to, saved, etc.


Remove dictionary
~~~~~~~~~~~~~~~~~
Remove a dictionary from memory.


Info
~~~~
Gives program information.


Add word and Delete word
~~~~~~~~~~~~~~~~~~~~~~~~
'Add word' and 'Delete word' menu choices are used to add or delete a word
to or from a specified dictionary. A dictionary can be saved to disc
automatically after it has been modified if the 'Save' option is on. By
default 'Save' is selected.

If you have a large number of words to add to a dictionary it is more
efficient to list the dictionary (using the 'List dictionary' option), add
the new words to the end of it, select 'Make dictionary', then drag or save
this modified dictionary to the !Spell icon.


Check word
~~~~~~~~~~
Use this to check the spelling of a word, according to the selected
spelling algorithm (typo, fuzzy, or anagram). 


Notes
~~~~~
Currently !Spell ignores one or two lettered words (ie it assumes they are
spelt correctly) - this can be changed if needed.




                 SPELLMASTER/IMPRESSION SPELL ANNOYANCES
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(this list may be out of date!)

System dictionary not accessible.

SWI Spell_SpellOp returns the carry flag: should return a register value.

SWI Spell_FileToUser hangs if dictionary already exists.

System dictionary contains some ridiculous words: ADFS, baa, David, Fred,
Alice. Also two versions of same word: caramelising/caramelizing,
realise/realize. This is very bad.

SWI calls do not appear to return errors.

Dictionary names must be less than 10 characters: this conflicts with
RISC-OS. Also forced to upper case.

All strings (including file leaf names) handed to the SWI calls must be in
upper case - this is not documented.

Added words do not appear in alphabetical order.

SWI Spell_CreateUser hangs if the dictionary is already loaded. 

Spell master cannot handle prefixed quotes. eg try adding 'abit to a
dictioanary.


Things to do and concerns
~~~~~~~~~~~~~~~~~~~~~~~~~
Add warning to indicate that a dictionary has been modified

Case sensitivity to be added: word prefixed by 'xx', followed by three or
four characters which define the UC/LC case pattern of the word, followed by
the word itself. Decode() and Encode() routines needed.

Bugs
~~~~
1  Listing a dictionary when the dictionary contains no words fails with
   'can't find wimp$scrap'

2  Trying to delete a non existent word from a dictionary blows up

3  If I load a dictionary by double clicking on it, then update it with
   'save' on, it creates a new dictionary in the place pointed to by
   Spell$DictDir, not where the file came from!

4  Improve reporting boxes and make them static

5  Delete Wimp$Scrap file



                                CHANGES
                                ~~~~~~~
0.02      First released version
13 Jul 89 

0.03      Use of SpellMaster error numbers to remove 'Internal error 5' bug
27 Jul 89 and duplication of typo list when no match found in 'CheckWord'.

          'List Dictionary' now lists words separated by LFs, not CRs.

0.03a     'Spelled' changed to 'spelt'!
11 Aug 89
          Sprite modified slightly.

          SpellMod 1.12 added.

0.03b     Check made when requesting memory prevent 'Internal Fatal 5' error
18 Aug 89 message.

0.04      SpellMod 1.14 added, which meant that the assembler module could
10 Sep 89 be deleted.

          Messages added.

0.05      F12 can now be pressed, and clicking left button on icon will
13 Nov 89 bring browser window to the front.
        
          Messages file added.

          Interactive help added.

          Desk top saving implemented. This also remembers which
          dictionaries were loaded.

          Relinked with RStub + RLib. !Run suitably modified.

0.06      CTRL U deletes browser word
22 Feb 90
RELEASED

1.01      PointerUtils added to allow a word at the caret to be checked.
18 Nov 93
RELEASED  Spell check options added to allow anagrams to be found, or
          'fuzzy' checking to be performed.

          If a word cannot be found the Browser window opens with the
          nearest word showing.

          Tidied up main menu

1.03      Run file changed to load PointerUtils 0.03, not 0.02

          Minor internal code changes to check_word()

          Problem with PointerUtils not loading sorted out (hopefully)

1.05      Should accept accented words

1.08      F12 now not trapped (again!)
