home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
495a.lha
/
ISpell_v3.1ljr
/
README.pp
/
README
Wrap
Text File
|
1991-04-06
|
14KB
|
319 lines
This is the README file for the distribution of
ISpell Version 3.1ljr with ARexx Server Mode!
Fri Feb 8 11:47:01 1991
by Loren J. Rittle
IMPORTANT NOTE:
Additions and modifications copyright (C) 1990, 1991 Loren J. Rittle.
Special thanks to Tom Rokicki of Radical Eye Software for the MinRexx code.
Thanks to all who hacked on ISpell before me.
Original version of ISpell copyright (C) 1983 Pace Willisson.
Permission for non-profit use is hereby granted.
All other rights reserved.
ANOTHER *REAL* IMPORTANT NOTE:
This is the first distribution of ISpell (that I know of, at least)
that has been compiled with SAS/C v5.10 instead of Aztec C v3.6A.
Because SAS/C and Aztec C use different bit field ordering, all
old hashed dictionaries need to be regenerated from source (dict.2 or
dict.191, etc) via the buildhash command. Hopefully, people with
smaller machines will be able to obtain the new ispell.hash file
from the same place you got this distribution.
FINAL IMPORTANT NOTE:
Currently, the Amiga version of ISpell is my pet project. You get source,
but if you make any neat (or useful) enhancements it would probably be best
if you were to send them to me for inclusion in the next major release.
Your input will be plainly acknowledged in the README file and greatly
appreciated by myself and users of the Amiga version of ISpell everywhere.
I will take anything: new or improved front ends, new features,
improvements in WorkBench support (currently nil:).
I, Loren J. Rittle, claim that I am the current keeper of ISpell for the
Amiga.
To install ISpell from binary:
a) Unlharc this archive (you most likely did this if you are
reading this).
b) Acquire the appropriate hashed dictionary file, ispell.hash
(you should be able to get a hashed dictionary file from the
place that you received this distribution). There are
different hashed dictionary files. You must pick one of them
based upon how much ram you have to spare, see below. Be sure
to read the above note entitled `ANOTHER *REAL* IMPORTANT NOTE.'
If you already have ISpell installed, you may have to acquire
the new hashed dictionary file or rebuild it from source with
the buildhash command.
c) copy ispell.hash s:
-or- copy ispell.smallhash s:ispell.hash (if memory is tight)
d) copy c/ispell c:
e) make sure that the t: logical assign exists.
f) copy rexx rexx: (if you want to take advantage of Rexx Server
Mode, see below)
g) Read notes below.
To install ISpell from source:
(Please note this only compiles under SAS/C v5.10
at this time. --- LJR)
(You need ARexx includes and rexxglue.asm to make ISpell with
ARexx Server Mode from source. These come with ARexx, just copy
rexxglue.asm to lc:/source and put includes in your standard
include: tree. --- LJR)
a) Unlharc this archive (you most likely did this if you are
reading this).
b) Acquire a dictionary file, either dict.191 or dict.2
(you should be able to get a dictionary file from the place
that you received this distribution). There are different
dictionary files. You must pick one of them based upon how much
ram you have to spare, see below. Place this acquired source
dictionary in the src directory.
c) cd src
d) edit the makefile and select
1) dictionary directory, and
2) dictionary of choice. You must set DDICT,
BIG_DICT and HSIZE appropriately.
e) make (lmk)
f) copy ispell <c directory>
g) copy ispell.hash <dictionary directory>
h) make sure that the t: logical assign exists.
i) copy rexx rexx: (if you want to take advantage of Rexx Server
Mode, see below)
j) Read notes below.
Notes by Luis Soltero (Modified by LJR slightly to bring it up to date):
The ISpell dictionary comes in several flavors. The big dictionary
distribution requires an amiga w/ LOTS of ram. To compile the dict.2
version you will need 1.4 megs of ram. To run this version you need
750k. This dictionary supports Capitalization mode.
The small dictionary distribution also requires lots of ram.
700k to compile and 450k to run. dict.191 does not support Capitalization.
I have tried to keep the UNIX code intact. This version of ISpell
should run fine under UNIX. To compile on a UNIX machine, but you will
need the Makefile.unix file from a past distribution of ISpell, then
copy Makefile.unix makefile
follow normal UNIX installation procedures.
(Well, this is *not* the case anymore! Sorry, but most UNIX compilers
don't handle ANSI C as well as SAS/C does. When I converted the
source over to it, I decided that it should be clean ANSI C.
Good luck getting any of this to compiler under UNIX. --- LJR
Note: I'm not sorry I did this, as ISpell seems to be quite a
bit more stable now.)
The dictionary management stuff does run on the amiga. If you take
a closer look you will note that its all bourne, sed and awk scripts.
All of these scripts are not included, again see past distribution.
Maybe some other day....
One enhancement I (Luis) have made to ISpell is the addition of regex
searching for words. The original code passed the regular expression to
egrep. Egrep was expected to search for words in /usr/dict/web2. I
uploaded a version of regex.c from j.cc.purdue.edu and added code to do the
searching in the ram resident hash table. I have not tested this code
under UNIX but expect it to work fine (famous last words).
<End of notes by Luis.>
<Start of new notes by Loren.>
Notes on the ARexx Server Mode of ISpell:
Quick Overview of Servers
Servers are a big deal in the UNIX world. I like the way things work under
UNIX most of the time, the way servers work under UNIX is no exception. A
server is a program that stays in core waiting for requests from other
programs. In general, when a server receives a request for service, it
performs a given action or a sequence of actions and then replies to the
requester. The requests to the server can come from a number of sources:
front-end client programs running on the local host (with any type of
message passing scheme, e.g. EXEC's or ARexx's message passing facility)
or a remote host (with the appropriate networking software, e.g. TCP/IP),
and directly from the user via some form of command line (e.g. via ARexx).
Some advantages to usings servers instead of classic approaches are as
follows,
1. The client and the server can be run on different machines with the
appropriate networking software.
2. User can customize the front-end (client) software without having
to know how the server works internally. User must only know
the client-server interface.
3. Servers can sometimes perform a given operation much faster than
the standard load, run, terminate cycle. For example, if one wants
to spell check even one word with ISpell about 700KB of information
must be loaded into memory. Later, if another single word must be
checked, then the entire 700KB of data must be reloaded into memory.
With ISpell's new server mode, small client programs can connect
up with the running ISpell server to spell check words or documents,
while avoiding the reload time.
Overview of the ARexx Server Mode of ISpell
By no surprise, currently under the AmigaOS client-server relations are
most easily implemented with ARexx. Requests and replies take the form
of ARexx messages. The only limitation of using ARexx in order to
implement client-server relations is that the client and the server must
run on the same Amiga. Hopefully, this restriction will be lifted with
the advent of support on the Amiga for real networking protocols (TCP/IP
and others).
ISpell can be started up in server mode with one of the following command.
If you have runback and the NULL: device then the preferred method for
starting the ISpell server is,
runback ispell -r >null: <null:
because it disconnects completely from the console window that it is
started from. The following method will work alright on any Amiga, with
the small problem that it keeps a lock on the console window, thus you can
not close the window until ISpell is terminated.
run ispell -r >nil: <nil:
Once the server has been started, it is a good idea to wait for the ISpell
ARexx port to show up before trying to use it. The ISpell's ARexx port
name is IRexxSpell and the easiest way to wait for it's arrival is with the
following command,
waitforport 'IRexxSpell'
For thoses of you who excited to see the ISpell ARexx server work type,
"options results;address 'IRexxSpell' check ites;say result"
at a WShell prompt (What! Not using the WShell yet! OK, if you promise to
buy it soon, I'll tell you how to get this to work without the WShell for
now --- add 'rx' in front of the rest of the command line. If you don't
have ARexx, then none of this will work at all, sorry!)
You should see the computer respond with,
& BITES CITES ICES IRES ITEM ITEMS ITS KITES RITES SITES TIES
Or, if you have installed the ARexx front-end scripts into your REXX:
directory then try typing,
spell ites
Poor souls san WShell should add the 'rx' in front of the command line.
Even poorer souls without ARexx should, at this point, stop reading this
and buy ARexx and WShell, and then come back to this after installing said
software. You can't spend $60 for Amiga software in any better way, in my
opinion. More than enough said. The computer should respond with,
The word 'ites' is not found. Try these words: bites cites ices
ires item items its kites rites sites ties
There are also CygnusEd Professional macros to spell check a word and a
buffer included with this package. See rexx/ced for CED macros. See
s/RexxCommands for function key bindings for CED macros. Load these with
the Load Dos/ARexx commands... menu item in CED. Or, if you have already
assigned some function keys, use the Install Dos/ARexx commands... menu
item repeatedly to customize your own setup. If you don't have the
(currently) newest versions of CygnusEd (Release 2.12) and ARexx (version
1.15) you may need to hack the macros up a bit or try to use the old
versions given in rexx/ced/old.
Mike (My Watch Has Windows) Meyer has been kind enough to provide ARexx
macros that interface the mg editor to ISpell. See the README file in
the mgStuff directory. I have not used any of this, because I don't
have/use mg. This is officially unsupported, but knowing Mike, you
shouldn't have any problems. He also submitted an ISpell WishList at the
same time. I will look into the ideas. Thanks Mike!
Feel free to write your own front-ends or modify the ones that I have
supplied. Below are the ARexx commands that ISpell knows how to respond
to. See my examples in the rexx directory for exact usage. Have fun and
please give the improved or new front-ends to ISpell away for all to see
and play with. I would like to see a nice CanDo front-end to ISpell.
Commands that the ISpell Server Will Respond To
ADD <word> --- Adds a word to the `global personal dictionary'
and immediately save the personal dictionary
to disk.
QUICKADD <word> --- Adds a word as above, without saving changes
to the file on disk. An ADD command will
record any QUICKADD's since the last ADD.
If the server is shut down (or the Amiga's
power is lost), then all QUICKADD'ed words
are lost if no ADD was performed.
CHECK <word> --- The ISpell server checks the stated word in its
dictionary and returns a string that describes
if the word was found or, if not, replacements.
This return string is documented in man/ispell.1,
it is the same as if words were piped in via
standard in. See rexx/spell.rexx and
rexx/ced/WordSpell.ced for how to parse the
returned string in ARexx.
Excerpt taken from man/ispell.1:
If the word was found in the main dictionary, or your personal dictionary,
then the line contains only a '*'. If the word was found through suffix
removal, then the line contains a '+', a space, and the root word. If the
word is not in the dictionary, but there are near misses, then the line
contains an '&', a space, and a list of the near misses separated by
spaces.
Also, each near miss is capitalized the same as the input word if unless
such capitalization is illegal; in the latter case each near miss is
capitalized correctly according to the dictionary. Finally, if the word
neither appears in the dictionary, and there are no near misses, then the
line contains only a '#'. This mode is also suitable for interactive use
when you want to figure out the spelling of a single word.
QUICKCHECK <word> --- As above, but only checks to see if the
word is in the dictionary. Does not try
to find close matches, etc. See
rexx/ced/QuickWordSpell.ced for Usage.
Will return the string 'ok' or 'bad'
depending on if the word is found or not.
LOOKUP <word> --- Looks up word (really a grep pattern).
See rexx/lookup.rexx for usage. `.*' is
the match anything wild-card :-). `.' is
the match one character wild-card, see a
manual on grep or src/regex.c for more
information.
FILECHECK <filename> --- The ISpell server checks the named file, returns
the filename of a temporary file that contains
a list of words not found in the dictionary.
The client is required to delete the temporary
file when done with it. Be sure to include the
complete path in the filename as there are no
good ways to know the current directory of the
ISpell server. See rexx/spellfile.rexx and
rexx/ced/Spell.ced for usage.
VERSION --- The ISpell server replies with its version string
and a line of the currently compiled in ARexx
commands that it will response to.
EXIT --- Causes the ISpell server to terminate after
replying to the request.
BUGS: This program does not take to running out of ram gracefully.
(I have no idea if this is still the case. --- LJR)
Please direct comments and bug reports to
Loren J. Rittle
1008 Landing Rd.
Naperville, IL 60540
(708)420-7942
Internet E-Mail Address:
lrg7030@uxa.cso.uiuc.edu