.TH hunspell 1 "2011-01-21"
.LO 1
.SH NAME
hunspell \- spell checker, stemmer and morphological analyzer
.SH SYNOPSIS
hunspell [\-1aDGHhLlmnrstvw] [\-\-check\-url] [\-d dict[,dict2,...]] [\-\-help] [\-i enc] [\-p dict] [\-vv\] [\-\-version] [file(s)]
.SH DESCRIPTION
.I Hunspell
is fashioned after the
.I Ispell
program.  The most common usage is "hunspell" or "hunspell filename". 
Without filename parameter, hunspell checks the standard input.
Typing "cat" and "exsample" in two input lines, we got an asterisk
(it means "cat" is a correct word) and a line with corrections:
.PP
.RS
.nf
$ hunspell -d en_US
Hunspell 1.2.3
*
& exsample 4 0: example, examples, ex sample, ex-sample
.fi
.RE
.PP
Correct words signed with an '*', '+' or '-', unrecognized
words signed with '#' or '&' in output lines (see later).
(Close the standard input with Ctrl-d on Unix/Linux and
Ctrl-Z Enter or Ctrl-C on Windows.)
.PP
With filename parameters,
.I hunspell
will display each word of the files which does not appear in the dictionary at the
top of the screen and allow you to change it.  If there are "near
misses" in the dictionary, then they are
also displayed on following lines.
Finally, the line containing the
word and the previous line
are printed at the bottom of the screen.  If your terminal can
display in reverse video, the word itself is highlighted.  You have the
option of replacing the word completely, or choosing one of the
suggested words. Commands are single characters as follows
(case is ignored):
.PP
.RS
.IP R
Replace the misspelled word completely.
.IP Space
Accept the word this time only.
.IP A
Accept the word for the rest of this
.I hunspell
session.
.IP I
Accept the word, capitalized as it is in the
file, and update private dictionary.
.IP U
Accept the word, and add an uncapitalized (actually, all lower-case)
version to the private dictionary.
.IP S
Ask a stem and a model word and store them in the private dictionary.
The stem will be accepted also with the affixes of the model word.
.IP 0-\fIn\fR
Replace with one of the suggested words.
.IP X
Write the rest of this file, ignoring misspellings, and start next file.
.IP Q
Exit immediately and leave the file unchanged.
.IP ^Z
Suspend hunspell.
.IP ?
Give help screen.
.RE
.SH OPTIONS
.IP \fB\-1\fR
Check only first field in lines (delimiter = tabulator).
.IP \fB\-a\fR
The
.B \-a
option
is intended to be used from other programs through a pipe.  In this
mode,
.I hunspell
prints a one-line version identification message, and then begins
reading lines of input.  For each input line,
a single line is written to the standard output for each word
checked for spelling on the line.  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 affix removal,
then the line contains a '+', a space, and the root word. 
If the word was found through compound formation (concatenation of two
words, then the line contains only a '\-'.
.IP ""
If the word
is not in the dictionary, but there are near misses, then the line
contains an '&', a space, the misspelled word, a space, the number of
near misses,
the number of
characters between the beginning of the line and the
beginning of the misspelled word, a colon, another space,
and a list of the near
misses separated by
commas and spaces.
.IP ""
Also, each near miss or guess is capitalized the same as the input
word unless such capitalization is illegal;
in the latter case each near miss is capitalized correctly
according to the dictionary.
.IP ""
Finally, if the word does not appear in the dictionary, and
there are no near misses, then the line contains a '#', a space,
the misspelled word, a space,
and the character offset from the beginning of the line.
Each sentence of text input is terminated
with an additional blank line, indicating that
.I hunspell
has completed processing the input line.
.IP ""
These output lines can be summarized as follows:
.RS
.IP OK:
*
.IP Root:
+ <root>
.IP Compound:
\-
.IP Miss:
& <original> <count> <offset>: <miss>, <miss>, ...
.IP None:
# <original> <offset>
.RE
.IP ""
For example, a dummy dictionary containing the words "fray", "Frey",
"fry", and "refried" might produce the following response to the
command "echo 'frqy refries | hunspell \-a":
.RS
.nf
(#) Hunspell 0.4.1 (beta), 2005-05-26
& frqy 3 0: fray, Frey, fry
& refries 1 5: refried
.fi
.RE
.IP ""
This mode
is also suitable for interactive use when you want to figure out the
spelling of a single word (but this is the default behavior of hunspell
without -a, too).
.IP ""
When in the
.B \-a
mode,
.I hunspell
will also accept lines of single words prefixed with any
of '*', '&', '@', '+', '\-', '~', '#', '!', '%', '`', or '^'.
A line starting with '*' tells
.I hunspell
to insert the word into the user's dictionary (similar to the I command).
A line starting with '&' tells
.I hunspell
to insert an all-lowercase version of the word into the user's
dictionary (similar to the U command).
A line starting with '@' causes
.I hunspell
to accept this word in the future (similar to the A command).
A line starting with '+', followed immediately by
.B tex
or
.B nroff
will cause
.I hunspell
to parse future input according the syntax of that formatter.
A line consisting solely of a '+' will place
.I hunspell
in TeX/LaTeX mode (similar to the
.B \-t
option) and '\-' returns
.I hunspell
to nroff/troff mode (but these commands are obsolete).
However, the string character type is
.I not
changed;
the '~' command must be used to do this.
A line starting with '~' causes
.I hunspell
to set internal parameters (in particular, the default string
character type) based on the filename given in the rest of the line.
(A file suffix is sufficient, but the period must be included.
Instead of a file name or suffix, a unique name, as listed in the language
affix file, may be specified.)
However, the formatter parsing is
.I not
changed;  the '+' command must be used to change the formatter.
A line prefixed with '#' will cause the
personal dictionary to be saved.
A line prefixed with '!' will turn on
.I terse
mode (see below), and a line prefixed with '%' will return
.I hunspell
to normal (non-terse) mode.
A line prefixed with '`' will turn on verbose-correction mode (see below);
this mode can only be disabled by turning on terse mode with '%'.
.IP ""
Any input following the prefix
characters '+', '\-', '#', '!', '%', or '`' is ignored, as is any input
following the filename on a '~' line.
To allow spell-checking of lines beginning with these characters, a
line starting with '^' has that character removed before it is passed
to the spell-checking code.
It is recommended that programmatic interfaces prefix every data line
with an uparrow to protect themselves against future changes in
.IR hunspell .
.IP ""
To summarize these:
.IP ""
.RS
.IP *
Add to personal dictionary
.IP @
Accept word, but leave out of dictionary
.IP #
Save current personal dictionary
.IP ~
Set parameters based on filename
.IP +
Enter TeX mode
.IP \-
Exit TeX mode
.IP !
Enter terse mode
.IP %
Exit terse mode
.IP "`"
Enter verbose-correction mode
.IP ^
Spell-check rest of line
.fi
.RE
.IP ""
In
.I terse
mode,
.I hunspell
will not print lines beginning with '*', '+', or '\-', all of which
indicate correct words.
This significantly improves running speed when the driving program is
going to ignore correct words anyway.
.IP ""
In
.I verbose-correction
mode,
.I hunspell
includes the original word immediately after the indicator character
in output lines beginning with '*', '+', and '\-', which simplifies
interaction for some programs.

.IP \fB\-\-check\-url\fR
Check URLs, e-mail addresses and directory paths.

.IP \fB\-D\fR
Show detected path of the loaded dictionary, and list of the
search path and the available dictionaries.

.IP \fB\-d\ dict,dict2,...\fR
Set dictionaries by their base names with or without paths.
Example of the syntax:
.PP          
\-d en_US,en_geo,en_med,de_DE,de_med
.PP          
en_US and de_DE are base dictionaries, they consist of
aff and dic file pairs: en_US.aff, en_US.dic and de_DE.aff, de_DE.dic.
En_geo, en_med, de_med are special dictionaries: dictionaries 
without affix file. Special dictionaries are optional extension
of the base dictionaries usually with special (medical, law etc.)
terms. There is no naming convention for special dictionaries,
only the ".dic" extension: dictionaries without affix file will
be an extension of the preceding base dictionary (right
order of the parameter list needs for good suggestions). First
item of \-d parameter list must be a base dictionary.

.IP \fB\-G\fR
Print only correct words or lines.

.IP \fB\-H\fR
The input file is in SGML/HTML format.

.IP \fB\-h,\ \-\-help\fR
Short help.

.IP \fB\-i\ enc\fR
Set input encoding.

.IP \fB\-L\fR
Print lines with misspelled words.

.IP \fB\-l\fR
The "list" option
is used to produce a list of misspelled words from the standard input.

.IP \fB\-m\fR
Analyze the words of the input text (see also hunspell(4) about
morphological analysis). Without dictionary morphological data,
signs the flags of the affixes of the word forms for dictionary
developers.

.IP \fB\-n\fR
The input file is in nroff/troff format.

.IP \fB\-P\ password\fR
Set password for encrypted dictionaries.

.IP \fB\-p\ dict\fR
Set path of personal dictionary.
The default dictionary depends on the locale settings. The
following environment variables are searched: LC_ALL,
LC_MESSAGES, and LANG. If none are set then the default personal
dictionary is $HOME/.hunspell_default.

Setting
.I \-d
or  the
.I DICTIONARY
environmental variable, personal dictionary will be
.BR $HOME/.hunspell_dicname

.IP \fB\-r\fR
Warn of the rare words, wich are also potential spelling mistakes.

.IP \fB\-s\fR
Stem the words of the input text (see also hunspell(4) about
stemming). It depends from the dictionary data.

.IP \fB\-t\fR
The input file is in TeX or LaTeX format.

.IP \fB\-v,\ \-\-version\fR
Print version number.

.IP \fB\-vv\fR
Print ispell(1) compatible version number.

.IP \fB\-w\fR
Print misspelled words (= lines) from one word/line input.

.SH EXAMPLES
.TP
.B hunspell \-d en_US english.html
.TP
.B hunspell \-d en_US,en_US_med medical.txt
.TP
.B hunspell \-d ~/openoffice.org2.4/share/dict/ooo/de_DE
.TP
.B hunspell *.html
.TP
.B hunspell \-l text.html
.SH ENVIRONMENT
.TP
.B DICTIONARY
Similar to 
.I \-d. 
.TP
.B DICPATH
Dictionary path.
.TP
.B WORDLIST
Equivalent to 
.I \-p.
.SH FILES
The default dictionary depends on the locale settings. The
following environment variables are searched: LC_ALL,
LC_MESSAGES, and LANG. If none are set then the following
fallbacks are used:

.BI /usr/share/myspell/default.aff
Path of default affix file. See hunspell(4).
.PP
.BI /usr/share/myspell/default.dic
Path of default dictionary file.
See hunspell(4).
.PP
.BI $HOME/.hunspell_default.
Default path to personal dictionary.
.SH SEE ALSO
.B hunspell (3), hunspell(4)
.SH AUTHOR
Author of Hunspell executable is László Németh. For Hunspell library,
see hunspell(3).
.PP
This manual based on Ispell's manual. See ispell(1).
.SH BUGS
There are some layout problems with long lines.
