blob: aa7c745d8392e37ef5bd60b6671389ab3afd582a [file] [log] [blame]
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +00001*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 13
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.
89
90
Bram Moolenaar6bb68362005-03-22 23:03:44 +000091PERFORMANCE
92
Bram Moolenaar3638c682005-06-08 22:05:14 +000093Note that Vim does on-the-fly spell checking. To make this work fast the
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +000094word list is loaded in memory. Thus this uses a lot of memory (1 Mbyte or
Bram Moolenaar3638c682005-06-08 22:05:14 +000095more). There might also be a noticeable delay when the word list is loaded,
96which happens when 'spelllang' or 'spell' is set. Each word list is only
97loaded once, they are not deleted when 'spelllang' is made empty or 'spell' is
98reset. When 'encoding' is set the word lists are reloaded, thus you may
99notice a delay then too.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000100
101
Bram Moolenaar217ad922005-03-20 22:37:15 +0000102REGIONS
103
104A word may be spelled differently in various regions. For example, English
105comes in (at least) these variants:
106
107 en all regions
Bram Moolenaar5c5474b2005-04-19 21:40:26 +0000108 en_au Australia
Bram Moolenaar217ad922005-03-20 22:37:15 +0000109 en_ca Canada
Bram Moolenaar5c5474b2005-04-19 21:40:26 +0000110 en_gb Great Britain
111 en_nz New Zealand
112 en_us USA
Bram Moolenaar217ad922005-03-20 22:37:15 +0000113
114Words that are not used in one region but are used in another region are
Bram Moolenaar3638c682005-06-08 22:05:14 +0000115highlighted with |SpellLocal|.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000116
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000117Always use lowercase letters for the language and region names.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000118
Bram Moolenaar3638c682005-06-08 22:05:14 +0000119When adding a word with |zg| or another command it's always added for all
120regions. You can change that by manually editing the 'spellfile'. See
121|spell-wordlist-format|.
122
Bram Moolenaar217ad922005-03-20 22:37:15 +0000123
124SPELL FILES
125
126Vim searches for spell files in the "spell" subdirectory of the directories in
Bram Moolenaar3638c682005-06-08 22:05:14 +0000127'runtimepath'. The name is: LL.EEE.spl, where:
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000128 LL the language name
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000129 EEE the value of 'encoding'
Bram Moolenaar217ad922005-03-20 22:37:15 +0000130
Bram Moolenaar3638c682005-06-08 22:05:14 +0000131Only the first file is loaded, the one that is first in 'runtimepath'. If
132this succeeds then additionally files with the name LL.EEE.add.spl are loaded.
133All the ones that are found are used.
134
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000135Exceptions:
136- Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign doesn't
137 matter for spelling.
138- When no spell file for 'encoding' is found "ascii" is tried. This only
139 works for languages where nearly all words are ASCII, such as English. It
140 helps when 'encoding' is not "latin1", such as iso-8859-2, and English text
Bram Moolenaar3638c682005-06-08 22:05:14 +0000141 is being edited. For the ".add" files the same name as the found main
142 spell file is used.
143
144For example, with these values:
145 'runtimepath' is "~/.vim,/usr/share/vim70,~/.vim/after"
146 'encoding' is "iso-8859-2"
147 'spelllang' is "pl"
148
149Vim will look for:
1501. ~/.vim/spell/pl.iso-8859-2.spl
1512. /usr/share/vim70/spell/pl.iso-8859-2.spl
1523. ~/.vim/spell/pl.iso-8859-2.add.spl
1534. /usr/share/vim70/spell/pl.iso-8859-2.add.spl
1545. ~/.vim/after/spell/pl.iso-8859-2.add.spl
155
156This assumes 1. is not found and 2. is found.
157
158If 'encoding' is "latin1" Vim will look for:
1591. ~/.vim/spell/pl.latin1.spl
1602. /usr/share/vim70/spell/pl.latin1.spl
1613. ~/.vim/after/spell/pl.latin1.spl
1624. ~/.vim/spell/pl.ascii.spl
1635. /usr/share/vim70/spell/pl.ascii.spl
1646. ~/.vim/after/spell/pl.ascii.spl
165
166This assumes none of them are found (Polish doesn't make sense when leaving
167out the non-ASCII characters).
Bram Moolenaar217ad922005-03-20 22:37:15 +0000168
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000169Spelling for EBCDIC is currently not supported.
170
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000171A spell file might not be available in the current 'encoding'. See
172|spell-mkspell| about how to create a spell file. Converting a spell file
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000173with "iconv" will NOT work!
Bram Moolenaar217ad922005-03-20 22:37:15 +0000174
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000175 *E758* *E759*
176When loading a spell file Vim checks that it is properly formatted. If you
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000177get an error the file may be truncated, modified or intended for another Vim
178version.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000179
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000180
181WORDS
182
183Vim uses a fixed method to recognize a word. This is independent of
184'iskeyword', so that it also works in help files and for languages that
185include characters like '-' in 'iskeyword'. The word characters do depend on
186'encoding'.
187
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000188The table with word characters is stored in the main .spl file. Therefore it
189matters what the current locale is when generating it! A .add.spl file does
190not contain a word table.
191
Bram Moolenaar3638c682005-06-08 22:05:14 +0000192A word that starts with a digit is always ignored. That includes hex numbers
193in the form 0xff and 0XFF.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000194
195
Bram Moolenaar9d0ec2e2005-04-20 19:45:58 +0000196SYNTAX HIGHLIGHTING *spell-syntax*
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000197
198Files that use syntax highlighting can specify where spell checking should be
199done:
200
Bram Moolenaar3638c682005-06-08 22:05:14 +00002011. everywhere default
2022. in specific items use "contains=@Spell"
2033. everywhere but specific items use "contains=@NoSpell"
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000204
Bram Moolenaar3638c682005-06-08 22:05:14 +0000205For the second method adding the @NoSpell cluster will disable spell checking
206again. This can be used, for example, to add @Spell to the comments of a
207program, and add @NoSpell for items that shouldn't be checked.
Bram Moolenaar6bb68362005-03-22 23:03:44 +0000208
Bram Moolenaar217ad922005-03-20 22:37:15 +0000209==============================================================================
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00002102. Generating a spell file *spell-mkspell*
Bram Moolenaar217ad922005-03-20 22:37:15 +0000211
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000212Vim uses a binary file format for spelling. This greatly speeds up loading
213the word list and keeps it small.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000214
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000215You can create a Vim spell file from the .aff and .dic files that Myspell
216uses. Myspell is used by OpenOffice.org and Mozilla. You should be able to
217find them here:
218 http://lingucomponent.openoffice.org/spell_dic.html
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000219You can also use a plain word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000220
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000221:mksp[ell] [-ascii] {outname} {inname} ... *:mksp* *:mkspell*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000222 Generate a Vim spell file word lists. Example: >
223 :mkspell nl nl_NL.words
224<
225 When {outname} ends in ".spl" it is used as the output
226 file name. Otherwise it should be a language name,
227 such as "en". The file written will be
228 {outname}.{encoding}.spl. {encoding} is the value of
229 the 'encoding' option.
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000230
Bram Moolenaar0e21a3f2005-04-17 20:28:32 +0000231 When the [-ascii] argument is present, words with
232 non-ascii characters are skipped. The resulting file
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000233 ends in "ascii.spl".
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000234
235 The input can be the Myspell format files {inname}.aff
236 and {inname}.dic. If {inname}.aff does not exist then
237 {inname} is used as the file name of a plain word
238 list.
239
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000240 Multiple {inname} arguments can be given to combine
241 regions into one Vim spell file. Example: >
242 :mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU
243< This combines the English word lists for US, CA and AU
244 into one en.spl file.
245 Up to eight regions can be combined. *E754* *755*
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000246 The REP and SAL items of the first .aff file where
247 they appear are used. |spell-affix-REP|
248 |spell-affix-SAL|
Bram Moolenaar217ad922005-03-20 22:37:15 +0000249
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000250 When the spell file was written all currently used
251 spell files will be reloaded.
252
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000253:mksp[ell] [-ascii] {add-name}
254 Like ":mkspell" above, using {add-name} as the input
255 file and producing an output file that has ".spl"
256 appended.
257
258Since you might want to change a Myspell word list for use with Vim the
259following procedure is recommended:
Bram Moolenaar217ad922005-03-20 22:37:15 +0000260
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +00002611. Obtain the xx_YY.aff and xx_YY.dic files from Myspell.
2622. Make a copy of these files to xx_YY.orig.aff and xx_YY.orig.dic.
2633. Change the xx_YY.aff and xx_YY.dic files to remove bad words, add missing
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000264 words, define word characters with FOL/LOW/UPP, etc. The distributed
265 "src/spell/*.diff" files can be used.
2664. Set 'encoding' to the desired encoding and use |:mkspell| to generate the
267 Vim spell file.
2685. Try out the spell file with ":set spell spelllang=xx_YY".
Bram Moolenaar217ad922005-03-20 22:37:15 +0000269
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000270When the Myspell files are updated you can merge the differences:
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002711. Obtain the new Myspell files as xx_YY.new.aff and xx_UU.new.dic.
2722. Use Vimdiff to see what changed: >
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000273 vimdiff xx_YY.orig.dic xx_YY.new.dic
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002743. Take over the changes you like in xx_YY.dic.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000275 You may also need to change xx_YY.aff.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002764. 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 +0000277
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000278==============================================================================
2799. Spell file format *spell-file-format*
Bram Moolenaar217ad922005-03-20 22:37:15 +0000280
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000281This is the format of the files that are used by the person who creates and
282maintains a word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000283
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000284Note that we avoid the word "dictionary" here. That is because the goal of
285spell checking differs from writing a dictionary (as in the book). For
286spelling we need a list of words that are OK, thus need not to be highlighted.
287Names will not appear in a dictionary, but do appear in a word list. And
288some old words are rarely used and are common misspellings. These do appear
289in a dictionary but not in a word list.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000290
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000291There are two formats: one with affix compression and one without. The files
292with affix compression are used by Myspell (Mozilla and OpenOffice.org). This
293requires two files, one with .aff and one with .dic extension. The second
294format is a list of words.
295
296
Bram Moolenaar3638c682005-06-08 22:05:14 +0000297FORMAT OF WORD LIST *spell-wordlist-format*
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000298
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000299The words must appear one per line. That is all that is required.
300Additionally the following items are recognized:
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000301- Empty and blank lines are ignored.
302- Lines starting with a # are ignored (comment lines).
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000303- A line starting with "/encoding=", before any word, specifies the encoding
304 of the file. After the second '=' comes an encoding name. This tells Vim
305 to setup conversion from the specified encoding to 'encoding'.
Bram Moolenaar3638c682005-06-08 22:05:14 +0000306- A line starting with "/regions=" specifies the region names that are
307 supported. Each region name must be two ASCII letters. The first one is
308 region 1. Thus "/regions=usca" has region 1 "us" and region 2 "ca".
309 In an addition word list the list should be equal to the main word list!
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000310- A line starting with "/?" specifies a word that should be marked as rare.
311- A line starting with "/!" specifies a word that should be marked as bad.
312- A line starting with "/=" specifies a word where case must match exactly.
313 A "?" or "!" may be following: "/=?" and "/=!".
Bram Moolenaar3638c682005-06-08 22:05:14 +0000314- Digits after "/" indicate the regions in which the word is valid. If no
315 regions are specified the word is valid in all regions.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000316- Other lines starting with '/' are reserved for future use. The ones that
317 are not recognized are ignored (but you do get a warning message).
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000318
Bram Moolenaar3638c682005-06-08 22:05:14 +0000319Example:
320
321 # This is an example word list comment
322 /encoding=latin1 encoding of the file
323 /regions=uscagb regions "us", "ca" and "gb"
324 example word for all regions
325 /1blah word for region 1 "us"
326 /!Vim bad word
327 /?3Campbell rare word in region 3 "gb"
328 /='s mornings keep-case word
329
Bram Moolenaar75c50c42005-06-04 22:06:24 +0000330
331FORMAT WITH AFFIX COMPRESSION
332
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000333There are two files: the basic word list and an affix file. The affixes are
334used to modify the basic words to get the full word list. This significantly
335reduces the number of words, especially for a language like Polish. This is
336called affix compression.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000337
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000338The format for the affix and word list files is mostly identical to what
339Myspell uses (the spell checker of Mozilla and OpenOffice.org). A description
340can be found here:
341 http://lingucomponent.openoffice.org/affix.readme ~
342Note that affixes are case sensitive, this isn't obvious from the description.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000343
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000344Vim supports a few extras. Hopefully Myspell will support these too some day.
345See |spell-affix-vim|.
Bram Moolenaar217ad922005-03-20 22:37:15 +0000346
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000347The basic word list and the affix file are combined and turned into a binary
348spell file. All the preprocessing has been done, thus this file loads fast.
349The binary spell file format is described in the source code (src/spell.c).
350But only developers need to know about it.
351
352The preprocessing also allows us to take the Myspell language files and modify
353them before the Vim word list is made. The tools for this can be found in the
354"src/spell" directory.
355
356
Bram Moolenaar3638c682005-06-08 22:05:14 +0000357WORD LIST FORMAT *spell-dic-format*
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000358
359A very short example, with line numbers:
360
361 1 1234
362 2 aan
363 3 Als
364 4 Etten-Leur
365 5 et al.
366 6 's-Gravenhage
367 7 's-Gravenhaags
368 8 bedel/P
369 9 kado/1
370 10 cadeau/2
371
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000372The first line contains the number of words. Vim ignores it, but you do get
373an error message if it's not there. *E760*
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000374
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000375What follows is one word per line. There should be no white space before or
376after the word.
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000377
378When the word only has lower-case letters it will also match with the word
379starting with an upper-case letter.
380
381When the word includes an upper-case letter, this means the upper-case letter
382is required at this position. The same word with a lower-case letter at this
383position will not match. When some of the other letters are upper-case it will
384not match either.
385
386The same word with all upper-case characters will always be OK.
387
388 word list matches does not match ~
389 als als Als ALS ALs AlS aLs aLS
390 Als Als ALS als ALs AlS aLs aLS
391 ALS ALS als Als ALs AlS aLs aLS
392 AlS AlS ALS als Als ALs aLs aLS
393
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000394The KEP affix ID can be used to specifically match a word with identical case
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000395only, see below.
396
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000397Note in line 5 to 7 that non-word characters are used. You can include
398any character in a word. When checking the text a word still only matches
399when it appears with a non-word character before and after it. For Myspell a
400word starting with a non-word character probably won't work.
401
402After the word there is an optional slash and flags. Most of these flags are
403letters that indicate the affixes that can be used with this word.
404
405 *spell-affix-vim*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000406A flag that Vim adds and is not in Myspell is the flag defined with KEP in the
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000407affix file. This has the meaning that case matters. This can be used if the
408word does not have the first letter in upper case at the start of a sentence.
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000409Example (assuming that = was used for KEP):
Bram Moolenaar13fcaaf2005-04-15 21:13:42 +0000410
411 word list matches does not match ~
412 's morgens/= 's morgens 'S morgens 's Morgens
413 's Morgens 's Morgens 'S morgens 's morgens
414
415 *spell-affix-mbyte*
416The basic word list is normally in an 8-bit encoding, which is mentioned in
417the affix file. The affix file must always be in the same encoding as the
418word list. This is compatible with Myspell. For Vim the encoding may also be
419something else, any encoding that "iconv" supports. The "SET" line must
420specify the name of the encoding. When using a multi-byte encoding it's
421possible to use more different affixes.
422
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000423 *spell-affix-chars*
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000424When using an 8-bit encoding the affix file should define what characters are
425word characters (as specified with ENC). This is because the system where
426":mkspell" is used may not support a locale with this encoding and isalpha()
427won't work. For example when using "cp1250" on Unix.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000428
429 *E761* *E762*
430Three lines in the affix file are needed. Simplistic example:
431
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000432 FOL áëñáëñ ~
433 LOW áëñáëñ ~
434 UPP áëñÁËÑ ~
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000435
436All three lines must have exactly the same number of characters.
437
438The "FOL" line specifies the case-folded characters. These are used to
439compare words while ignoring case. For most encodings this is identical to
440the lower case line.
441
442The "LOW" line specifies the characters in lower-case. Mostly it's equal to
443the "FOL" line.
444
445The "UPP" line specifies the characters with upper-case. That is, a character
446is upper-case where it's different from the character at the same position in
447"FOL".
448
449ASCII characters should be omitted, Vim always handles these in the same way.
450When the encoding is UTF-8 no word characters need to be specified.
451
452 *E763*
453All spell files for the same encoding must use the same word characters,
Bram Moolenaar46df82e2005-04-24 22:06:24 +0000454otherwise they can't be combined without errors. The XX.ascii.spl spell file
455generated with the "-ascii" argument will not contain the table with
456characters, so that it can be combine with spell files for any encoding.
Bram Moolenaar0cb032e2005-04-23 20:52:00 +0000457
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000458 *spell-affix-KEP*
459In the affix file a KEP line can be used to define the affix name used for
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000460keep-case words. Example:
461
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000462 KEP = ~
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000463
464See above for an example |spell-affix-vim|.
465
Bram Moolenaar82cf9b62005-06-07 21:09:25 +0000466 *spell-affix-RAR*
Bram Moolenaar45eeb132005-06-06 21:59:07 +0000467In the affix file a RAR line can be used to define the affix name used for
468rare words. Example:
469
470 RAR ? ~
471
472Rare words are highlighted differently from bad words. This is to be used for
473words that are correct for the language, but are hardly ever used and could be
474a typing mistake anyway.
475
476
Bram Moolenaar9ba0eb82005-06-13 22:28:56 +0000477REPLACEMENTS *spell-affix-REP*
478
479In the affix file REP items can be used to define common mistakes. This is
480used to make spelling suggestions. The items define the "from" text and the
481"to" replacement. Example:
482
483 REP 4 ~
484 REP f ph ~
485 REP ph f ~
486 REP k ch ~
487 REP ch k ~
488
489The first line specifies the number of REP lines following. Vim ignores it.
490
491
492SIMILAR CHARACTERS *spell-affix-MAP*
493
494In the affix file MAP items can be used to define letters that very much
495alike. This is mostly used for a letter with different accents. This is used
496to prefer suggestions with these letters substituted. Example:
497
498 MAP 2 ~
499 MAP eéëêè ~
500 MAP uüùúû ~
501
502The first line specifies the number of MAP lines following. Vim ignores it.
503
504
505SOUNDS-A-LIKE *spell-affix-SAL*
506
507In the affix file SAL items can be used to define the sounds-a-like mechanism
508to be used. The main items define the "from" text and the "to" replacement.
509Example:
510
511 SAL CIA X ~
512 SAL CH X ~
513 SAL C K ~
514 SAL K K ~
515
516TODO: explain how it works.
517
518There are a few special items:
519
520 SAL followup true ~
521 SAL collapse_result true ~
522 SAL remove_accents true ~
523
524"1" has the same meaning as "true". Any other value means "false".
525
Bram Moolenaar217ad922005-03-20 22:37:15 +0000526 vim:tw=78:sw=4:ts=8:ft=help:norl: