blob: 8e86ec79fb5fd0075d233c2f9c4021629c10a1eb [file] [log] [blame]
Bram Moolenaarf3bd51a2005-06-14 22:11:18 +00001*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 14
Bram Moolenaar217ad922005-03-20 22:37:15 +00002
3
4 VIM REFERENCE MANUAL by Bram Moolenaar
5
6
7Spell checking *spell*
8
91. Quick start |spell-quickstart|
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000102. Generating a spell file |spell-mkspell|
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000113. Spell file format |spell-file-format|
Bram Moolenaar217ad922005-03-20 22:37:15 +000012
13{Vi does not have any of these commands}
14
15Spell checking is not available when the |+syntax| feature has been disabled
16at compile time.
17
18==============================================================================
191. Quick start *spell-quickstart*
20
21This command switches on spell checking: >
22
23 :setlocal spell spelllang=en_us
24
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000025This switches on the 'spell' option and specifies to check for US English.
Bram Moolenaar217ad922005-03-20 22:37:15 +000026
27The words that are not recognized are highlighted with one of these:
28 SpellBad word not recognized
29 SpellRare rare word
30 SpellLocal wrong spelling for selected region
31
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000032Vim only checks words for spelling, there is no grammar check.
33
34To search for the next misspelled word:
35
36 *]s* *E756*
37]s Move to next misspelled word after the cursor.
Bram Moolenaar9d0ec2e2005-04-20 19:45:58 +000038 A count before the command can be used to repeat.
39 This uses the @Spell and @NoSpell clusters from syntax
40 highlighting, see |spell-syntax|.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000041
42 *[s*
Bram Moolenaar9d0ec2e2005-04-20 19:45:58 +000043[s Like "]s" but search backwards, find the misspelled
44 word before the cursor.
45
46 *]S*
47]S Like "]s" but only stop at bad words, not at rare
48 words or words for another region.
49
50 *[S*
51[S Like "]S" but search backwards.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000052
Bram Moolenaar217ad922005-03-20 22:37:15 +000053
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +000054To add words to your own word list: *E764*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +000055
56 *zg*
57zg Add word under the cursor as a good word to
58 'spellfile'. In Visual mode the selected characters
59 are added as a word (including white space!).
60
61 *zw*
62zw Add word under the cursor as a wrong (bad) word to
63 'spellfile'. In Visual mode the selected characters
64 are added as a word (including white space!).
65
66 *:spellg* *:spellgood*
67:spellg[ood] {word} Add [word} as a good word to 'spellfile'.
68
69:spellw[rong] {word} Add [word} as a wrong (bad) word to 'spellfile'.
70
71After adding a word to 'spellfile' its associated ".spl" file will
Bram Moolenaar3638c682005-06-08 22:05:14 +000072automatically be updated. More details about the 'spellfile' format below
73|spell-wordlist-format|.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +000074
75
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +000076Finding suggestions for bad words:
77
78 *z?*
79z? For the badly spelled word under the cursor suggest
80 the correctly spelled word.
81 When there is no badly spelled word under the cursor
82 use the one after the cursor, in the same line.
83 The results are sorted on similarity to the badly
84 spelled word.
85 This may take a long time. Hit CTRL-C when you are
86 bored.
87 You can enter the number of your choice or press
88 <Enter> if you don't want to replace.
Bram Moolenaarf3bd51a2005-06-14 22:11:18 +000089 If 'verbose' is non-zero a score will be displayed to
90 indicate the likeliness to the badly spelled word (the
91 higher the score the more different).
92 The score may be slightly wrong for words with
93 multi-byte characters.
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +000094
95
Bram Moolenaar6bb68362005-03-22 23:03:44 +000096PERFORMANCE
97
Bram Moolenaar3638c682005-06-08 22:05:14 +000098Note that Vim does on-the-fly spell checking. To make this work fast the
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000099word list is loaded in memory. Thus this uses a lot of memory (1 Mbyte or
Bram Moolenaar3638c682005-06-08 22:05:14 +0000100more). There might also be a noticeable delay when the word list is loaded,
101which happens when 'spelllang' or 'spell' is set. Each word list is only
102loaded once, they are not deleted when 'spelllang' is made empty or 'spell' is
103reset. When 'encoding' is set the word lists are reloaded, thus you may
104notice a delay then too.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000105
106
Bram Moolenaar217ad922005-03-20 22:37:15 +0000107REGIONS
108
109A word may be spelled differently in various regions. For example, English
110comes in (at least) these variants:
111
112 en all regions
Bram Moolenaar5c5474b2005-04-19 21:40:26 +0000113 en_au Australia
Bram Moolenaar217ad922005-03-20 22:37:15 +0000114 en_ca Canada
Bram Moolenaar5c5474b2005-04-19 21:40:26 +0000115 en_gb Great Britain
116 en_nz New Zealand
117 en_us USA
Bram Moolenaar217ad922005-03-20 22:37:15 +0000118
119Words that are not used in one region but are used in another region are
Bram Moolenaar3638c682005-06-08 22:05:14 +0000120highlighted with |SpellLocal|.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000121
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000122Always use lowercase letters for the language and region names.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000123
Bram Moolenaar3638c682005-06-08 22:05:14 +0000124When adding a word with |zg| or another command it's always added for all
125regions. You can change that by manually editing the 'spellfile'. See
126|spell-wordlist-format|.
127
Bram Moolenaar217ad922005-03-20 22:37:15 +0000128
129SPELL FILES
130
131Vim searches for spell files in the "spell" subdirectory of the directories in
Bram Moolenaar3638c682005-06-08 22:05:14 +0000132'runtimepath'. The name is: LL.EEE.spl, where:
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000133 LL the language name
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000134 EEE the value of 'encoding'
Bram Moolenaar217ad922005-03-20 22:37:15 +0000135
Bram Moolenaar3638c682005-06-08 22:05:14 +0000136Only the first file is loaded, the one that is first in 'runtimepath'. If
137this succeeds then additionally files with the name LL.EEE.add.spl are loaded.
138All the ones that are found are used.
139
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000140Exceptions:
141- Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign doesn't
142 matter for spelling.
143- When no spell file for 'encoding' is found "ascii" is tried. This only
144 works for languages where nearly all words are ASCII, such as English. It
145 helps when 'encoding' is not "latin1", such as iso-8859-2, and English text
Bram Moolenaar3638c682005-06-08 22:05:14 +0000146 is being edited. For the ".add" files the same name as the found main
147 spell file is used.
148
149For example, with these values:
150 'runtimepath' is "~/.vim,/usr/share/vim70,~/.vim/after"
151 'encoding' is "iso-8859-2"
152 'spelllang' is "pl"
153
154Vim will look for:
1551. ~/.vim/spell/pl.iso-8859-2.spl
1562. /usr/share/vim70/spell/pl.iso-8859-2.spl
1573. ~/.vim/spell/pl.iso-8859-2.add.spl
1584. /usr/share/vim70/spell/pl.iso-8859-2.add.spl
1595. ~/.vim/after/spell/pl.iso-8859-2.add.spl
160
161This assumes 1. is not found and 2. is found.
162
163If 'encoding' is "latin1" Vim will look for:
1641. ~/.vim/spell/pl.latin1.spl
1652. /usr/share/vim70/spell/pl.latin1.spl
1663. ~/.vim/after/spell/pl.latin1.spl
1674. ~/.vim/spell/pl.ascii.spl
1685. /usr/share/vim70/spell/pl.ascii.spl
1696. ~/.vim/after/spell/pl.ascii.spl
170
171This assumes none of them are found (Polish doesn't make sense when leaving
172out the non-ASCII characters).
Bram Moolenaar217ad922005-03-20 22:37:15 +0000173
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000174Spelling for EBCDIC is currently not supported.
175
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000176A spell file might not be available in the current 'encoding'. See
177|spell-mkspell| about how to create a spell file. Converting a spell file
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000178with "iconv" will NOT work!
Bram Moolenaar217ad922005-03-20 22:37:15 +0000179
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000180 *E758* *E759*
181When loading a spell file Vim checks that it is properly formatted. If you
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000182get an error the file may be truncated, modified or intended for another Vim
183version.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000184
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000185
186WORDS
187
188Vim uses a fixed method to recognize a word. This is independent of
189'iskeyword', so that it also works in help files and for languages that
190include characters like '-' in 'iskeyword'. The word characters do depend on
191'encoding'.
192
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000193The table with word characters is stored in the main .spl file. Therefore it
194matters what the current locale is when generating it! A .add.spl file does
195not contain a word table.
196
Bram Moolenaar3638c682005-06-08 22:05:14 +0000197A word that starts with a digit is always ignored. That includes hex numbers
198in the form 0xff and 0XFF.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000199
200
Bram Moolenaar9d0ec2e2005-04-20 19:45:58 +0000201SYNTAX HIGHLIGHTING *spell-syntax*
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000202
203Files that use syntax highlighting can specify where spell checking should be
204done:
205
Bram Moolenaar3638c682005-06-08 22:05:14 +00002061. everywhere default
2072. in specific items use "contains=@Spell"
2083. everywhere but specific items use "contains=@NoSpell"
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000209
Bram Moolenaar3638c682005-06-08 22:05:14 +0000210For the second method adding the @NoSpell cluster will disable spell checking
211again. This can be used, for example, to add @Spell to the comments of a
212program, and add @NoSpell for items that shouldn't be checked.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000213
Bram Moolenaar217ad922005-03-20 22:37:15 +0000214==============================================================================
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00002152. Generating a spell file *spell-mkspell*
Bram Moolenaar217ad922005-03-20 22:37:15 +0000216
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000217Vim uses a binary file format for spelling. This greatly speeds up loading
218the word list and keeps it small.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000219
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000220You can create a Vim spell file from the .aff and .dic files that Myspell
221uses. Myspell is used by OpenOffice.org and Mozilla. You should be able to
222find them here:
223 http://lingucomponent.openoffice.org/spell_dic.html
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000224You can also use a plain word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000225
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000226:mksp[ell] [-ascii] {outname} {inname} ... *:mksp* *:mkspell*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000227 Generate a Vim spell file word lists. Example: >
228 :mkspell nl nl_NL.words
229<
230 When {outname} ends in ".spl" it is used as the output
231 file name. Otherwise it should be a language name,
232 such as "en". The file written will be
233 {outname}.{encoding}.spl. {encoding} is the value of
234 the 'encoding' option.
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000235
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000236 When the [-ascii] argument is present, words with
237 non-ascii characters are skipped. The resulting file
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000238 ends in "ascii.spl".
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000239
240 The input can be the Myspell format files {inname}.aff
241 and {inname}.dic. If {inname}.aff does not exist then
242 {inname} is used as the file name of a plain word
243 list.
244
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000245 Multiple {inname} arguments can be given to combine
246 regions into one Vim spell file. Example: >
247 :mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU
248< This combines the English word lists for US, CA and AU
249 into one en.spl file.
250 Up to eight regions can be combined. *E754* *755*
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000251 The REP and SAL items of the first .aff file where
252 they appear are used. |spell-affix-REP|
253 |spell-affix-SAL|
Bram Moolenaar217ad922005-03-20 22:37:15 +0000254
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000255 When the spell file was written all currently used
256 spell files will be reloaded.
257
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000258:mksp[ell] [-ascii] {add-name}
259 Like ":mkspell" above, using {add-name} as the input
260 file and producing an output file that has ".spl"
261 appended.
262
263Since you might want to change a Myspell word list for use with Vim the
264following procedure is recommended:
Bram Moolenaar217ad922005-03-20 22:37:15 +0000265
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00002661. Obtain the xx_YY.aff and xx_YY.dic files from Myspell.
2672. Make a copy of these files to xx_YY.orig.aff and xx_YY.orig.dic.
2683. Change the xx_YY.aff and xx_YY.dic files to remove bad words, add missing
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000269 words, define word characters with FOL/LOW/UPP, etc. The distributed
270 "src/spell/*.diff" files can be used.
2714. Set 'encoding' to the desired encoding and use |:mkspell| to generate the
272 Vim spell file.
2735. Try out the spell file with ":set spell spelllang=xx_YY".
Bram Moolenaar217ad922005-03-20 22:37:15 +0000274
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000275When the Myspell files are updated you can merge the differences:
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002761. Obtain the new Myspell files as xx_YY.new.aff and xx_UU.new.dic.
2772. Use Vimdiff to see what changed: >
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000278 vimdiff xx_YY.orig.dic xx_YY.new.dic
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002793. Take over the changes you like in xx_YY.dic.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000280 You may also need to change xx_YY.aff.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002814. Rename xx_YY.new.dic to xx_YY.orig.dic and xx_YY.new.aff to xx_YY.new.aff.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000282
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000283==============================================================================
2849. Spell file format *spell-file-format*
Bram Moolenaar217ad922005-03-20 22:37:15 +0000285
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000286This is the format of the files that are used by the person who creates and
287maintains a word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000288
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000289Note that we avoid the word "dictionary" here. That is because the goal of
290spell checking differs from writing a dictionary (as in the book). For
291spelling we need a list of words that are OK, thus need not to be highlighted.
292Names will not appear in a dictionary, but do appear in a word list. And
293some old words are rarely used and are common misspellings. These do appear
294in a dictionary but not in a word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000295
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000296There are two formats: one with affix compression and one without. The files
297with affix compression are used by Myspell (Mozilla and OpenOffice.org). This
298requires two files, one with .aff and one with .dic extension. The second
299format is a list of words.
300
301
Bram Moolenaar3638c682005-06-08 22:05:14 +0000302FORMAT OF WORD LIST *spell-wordlist-format*
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000303
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000304The words must appear one per line. That is all that is required.
305Additionally the following items are recognized:
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000306- Empty and blank lines are ignored.
307- Lines starting with a # are ignored (comment lines).
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000308- A line starting with "/encoding=", before any word, specifies the encoding
309 of the file. After the second '=' comes an encoding name. This tells Vim
310 to setup conversion from the specified encoding to 'encoding'.
Bram Moolenaar3638c682005-06-08 22:05:14 +0000311- A line starting with "/regions=" specifies the region names that are
312 supported. Each region name must be two ASCII letters. The first one is
313 region 1. Thus "/regions=usca" has region 1 "us" and region 2 "ca".
314 In an addition word list the list should be equal to the main word list!
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000315- A line starting with "/?" specifies a word that should be marked as rare.
316- A line starting with "/!" specifies a word that should be marked as bad.
317- A line starting with "/=" specifies a word where case must match exactly.
318 A "?" or "!" may be following: "/=?" and "/=!".
Bram Moolenaar3638c682005-06-08 22:05:14 +0000319- Digits after "/" indicate the regions in which the word is valid. If no
320 regions are specified the word is valid in all regions.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000321- Other lines starting with '/' are reserved for future use. The ones that
322 are not recognized are ignored (but you do get a warning message).
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000323
Bram Moolenaar3638c682005-06-08 22:05:14 +0000324Example:
325
326 # This is an example word list comment
327 /encoding=latin1 encoding of the file
328 /regions=uscagb regions "us", "ca" and "gb"
329 example word for all regions
330 /1blah word for region 1 "us"
331 /!Vim bad word
332 /?3Campbell rare word in region 3 "gb"
333 /='s mornings keep-case word
334
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000335
336FORMAT WITH AFFIX COMPRESSION
337
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000338There are two files: the basic word list and an affix file. The affixes are
339used to modify the basic words to get the full word list. This significantly
340reduces the number of words, especially for a language like Polish. This is
341called affix compression.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000342
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000343The format for the affix and word list files is mostly identical to what
344Myspell uses (the spell checker of Mozilla and OpenOffice.org). A description
345can be found here:
346 http://lingucomponent.openoffice.org/affix.readme ~
347Note that affixes are case sensitive, this isn't obvious from the description.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000348
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000349Vim supports a few extras. Hopefully Myspell will support these too some day.
350See |spell-affix-vim|.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000351
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000352The basic word list and the affix file are combined and turned into a binary
353spell file. All the preprocessing has been done, thus this file loads fast.
354The binary spell file format is described in the source code (src/spell.c).
355But only developers need to know about it.
356
357The preprocessing also allows us to take the Myspell language files and modify
358them before the Vim word list is made. The tools for this can be found in the
359"src/spell" directory.
360
361
Bram Moolenaar3638c682005-06-08 22:05:14 +0000362WORD LIST FORMAT *spell-dic-format*
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000363
364A very short example, with line numbers:
365
366 1 1234
367 2 aan
368 3 Als
369 4 Etten-Leur
370 5 et al.
371 6 's-Gravenhage
372 7 's-Gravenhaags
373 8 bedel/P
374 9 kado/1
375 10 cadeau/2
376
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000377The first line contains the number of words. Vim ignores it, but you do get
378an error message if it's not there. *E760*
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000379
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000380What follows is one word per line. There should be no white space before or
381after the word.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000382
383When the word only has lower-case letters it will also match with the word
384starting with an upper-case letter.
385
386When the word includes an upper-case letter, this means the upper-case letter
387is required at this position. The same word with a lower-case letter at this
388position will not match. When some of the other letters are upper-case it will
389not match either.
390
391The same word with all upper-case characters will always be OK.
392
393 word list matches does not match ~
394 als als Als ALS ALs AlS aLs aLS
395 Als Als ALS als ALs AlS aLs aLS
396 ALS ALS als Als ALs AlS aLs aLS
397 AlS AlS ALS als Als ALs aLs aLS
398
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000399The KEP affix ID can be used to specifically match a word with identical case
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000400only, see below.
401
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000402Note in line 5 to 7 that non-word characters are used. You can include
403any character in a word. When checking the text a word still only matches
404when it appears with a non-word character before and after it. For Myspell a
405word starting with a non-word character probably won't work.
406
407After the word there is an optional slash and flags. Most of these flags are
408letters that indicate the affixes that can be used with this word.
409
410 *spell-affix-vim*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000411A flag that Vim adds and is not in Myspell is the flag defined with KEP in the
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000412affix file. This has the meaning that case matters. This can be used if the
413word does not have the first letter in upper case at the start of a sentence.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000414Example (assuming that = was used for KEP):
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000415
416 word list matches does not match ~
417 's morgens/= 's morgens 'S morgens 's Morgens
418 's Morgens 's Morgens 'S morgens 's morgens
419
420 *spell-affix-mbyte*
421The basic word list is normally in an 8-bit encoding, which is mentioned in
422the affix file. The affix file must always be in the same encoding as the
423word list. This is compatible with Myspell. For Vim the encoding may also be
424something else, any encoding that "iconv" supports. The "SET" line must
425specify the name of the encoding. When using a multi-byte encoding it's
426possible to use more different affixes.
427
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000428 *spell-affix-chars*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000429When using an 8-bit encoding the affix file should define what characters are
430word characters (as specified with ENC). This is because the system where
431":mkspell" is used may not support a locale with this encoding and isalpha()
432won't work. For example when using "cp1250" on Unix.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000433
434 *E761* *E762*
435Three lines in the affix file are needed. Simplistic example:
436
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000437 FOL áëñáëñ ~
438 LOW áëñáëñ ~
439 UPP áëñÁËÑ ~
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000440
441All three lines must have exactly the same number of characters.
442
443The "FOL" line specifies the case-folded characters. These are used to
444compare words while ignoring case. For most encodings this is identical to
445the lower case line.
446
447The "LOW" line specifies the characters in lower-case. Mostly it's equal to
448the "FOL" line.
449
450The "UPP" line specifies the characters with upper-case. That is, a character
451is upper-case where it's different from the character at the same position in
452"FOL".
453
454ASCII characters should be omitted, Vim always handles these in the same way.
455When the encoding is UTF-8 no word characters need to be specified.
456
457 *E763*
458All spell files for the same encoding must use the same word characters,
Bram Moolenaar46df82e2005-04-24 22:06:24 +0000459otherwise they can't be combined without errors. The XX.ascii.spl spell file
460generated with the "-ascii" argument will not contain the table with
461characters, so that it can be combine with spell files for any encoding.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000462
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000463 *spell-affix-KEP*
464In the affix file a KEP line can be used to define the affix name used for
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000465keep-case words. Example:
466
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000467 KEP = ~
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000468
469See above for an example |spell-affix-vim|.
470
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000471 *spell-affix-RAR*
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000472In the affix file a RAR line can be used to define the affix name used for
473rare words. Example:
474
475 RAR ? ~
476
477Rare words are highlighted differently from bad words. This is to be used for
478words that are correct for the language, but are hardly ever used and could be
479a typing mistake anyway.
480
481
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000482REPLACEMENTS *spell-affix-REP*
483
484In the affix file REP items can be used to define common mistakes. This is
485used to make spelling suggestions. The items define the "from" text and the
486"to" replacement. Example:
487
488 REP 4 ~
489 REP f ph ~
490 REP ph f ~
491 REP k ch ~
492 REP ch k ~
493
494The first line specifies the number of REP lines following. Vim ignores it.
495
496
497SIMILAR CHARACTERS *spell-affix-MAP*
498
499In the affix file MAP items can be used to define letters that very much
500alike. This is mostly used for a letter with different accents. This is used
501to prefer suggestions with these letters substituted. Example:
502
503 MAP 2 ~
504 MAP eéëêè ~
505 MAP uüùúû ~
506
507The first line specifies the number of MAP lines following. Vim ignores it.
508
509
510SOUNDS-A-LIKE *spell-affix-SAL*
511
512In the affix file SAL items can be used to define the sounds-a-like mechanism
513to be used. The main items define the "from" text and the "to" replacement.
514Example:
515
516 SAL CIA X ~
517 SAL CH X ~
518 SAL C K ~
519 SAL K K ~
520
521TODO: explain how it works.
522
523There are a few special items:
524
525 SAL followup true ~
526 SAL collapse_result true ~
527 SAL remove_accents true ~
528
529"1" has the same meaning as "true". Any other value means "false".
530
Bram Moolenaar217ad922005-03-20 22:37:15 +0000531 vim:tw=78:sw=4:ts=8:ft=help:norl: