summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Makefile2
-rw-r--r--src/testdir/Make_all.mak1
-rw-r--r--src/testdir/Make_vms.mms4
-rw-r--r--src/testdir/test58.in656
-rw-r--r--src/testdir/test58.ok289
-rw-r--r--src/testdir/test_spell.vim726
-rw-r--r--src/version.c2
7 files changed, 729 insertions, 951 deletions
diff --git a/src/Makefile b/src/Makefile
index 500b07430..10049df29 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2086,7 +2086,7 @@ test1 \
test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \
test30 test31 test32 test33 test34 test36 test37 test38 test39 \
test40 test41 test42 test43 test44 test45 test48 test49 \
- test50 test51 test52 test53 test54 test55 test56 test57 test58 test59 \
+ test50 test51 test52 test53 test54 test55 test56 test57 test59 \
test60 test64 test66 test67 test68 test69 \
test70 test72 test73 test74 test75 test77 test78 test79 \
test80 test82 test83 test84 test85 test86 test87 test88 \
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 2b78bf22b..1dedf6417 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -115,7 +115,6 @@ SCRIPTS_MORE4 = \
test17.out \
test30.out \
test32.out \
- test58.out \
test59.out \
test72.out \
test78.out \
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index b0c26aa8e..3392f07c2 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -123,7 +123,7 @@ SCRIPT = test1.out test3.out test4.out test5.out \
# (this should be changed in order to preserve the original filename) - should
# be fixed. VMS allows just one dot in the filename
#
-# test58, test59: Failed/Hangs - VMS does not support spell files (file names
+# test59: Failed/Hangs - VMS does not support spell files (file names
# with too many dots).
#
# test72: bug - Vim hangs at :rename (while rename works well otherwise)
@@ -148,7 +148,7 @@ SCRIPT_WIN = test50.out test52.out
.ENDIF
.IFDEF WANT_SPELL
-SCRIPT_SPELL = test58.out test59.out
+SCRIPT_SPELL = test59.out
.ENDIF
.IFDEF WANT_MZSCH
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
deleted file mode 100644
index b99ee45f9..000000000
--- a/src/testdir/test58.in
+++ /dev/null
@@ -1,656 +0,0 @@
-Tests for spell checking. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:"
-:" Don't want to depend on the locale from the environment
-:set enc=latin1
-:e!
-:"
-:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
-:set maxmem=512 spell
-iasdz=:"
-:"
-:" Function to test .aff/.dic with list of good and bad words.
-:func TestOne(aff, dic)
- set spellfile=
- $put =''
- $put ='test '. a:aff . '-' . a:dic
- " Generate a .spl file from a .dic and .aff file.
- exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
- exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
- mkspell! Xtest Xtest
- " use that spell file
- set spl=Xtest.latin1.spl spell
- " list all valid words
- spelldump
- %yank
- quit
- $put
- $put ='-------'
- " find all bad words and suggestions for them
- exe '1;/^' . a:aff . 'good:'
- normal 0f:]s
- let prevbad = ''
- while 1
- let [bad, a] = spellbadword()
- if bad == '' || bad == prevbad || bad == 'badend'
- break
- endif
- let prevbad = bad
- let lst = spellsuggest(bad, 3)
- normal mm
- $put =bad
- $put =string(lst)
- normal `m]s
- endwhile
-endfunc
-:"
-:call TestOne('1', '1')
-:$put =soundfold('goobledygoook')
-:$put =soundfold('kóopërÿnôven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:"
-:" and now with SAL instead of SOFO items; test automatic reloading
-gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
-:mkspell! Xtest Xtest
-:$put =soundfold('goobledygoook')
-:$put =soundfold('kóopërÿnôven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:" also use an addition file
-gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
-:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
-:set spellfile=Xtest.latin1.add
-/^test2:
-]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_us.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_gb.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_nz.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_ca.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:unlet str a
-:"
-:" Postponed prefixes
-:call TestOne('2', '1')
-:"
-:" Compound words
-:call TestOne('3', '3')
-:call TestOne('4', '4')
-:call TestOne('5', '5')
-:call TestOne('6', '6')
-:call TestOne('7', '7')
-:"
-:" NOSLITSUGS
-:call TestOne('8', '8')
-:" Numbers
-:call TestOne('9', '9')
-:"
-:" clean up for valgrind
-:delfunc TestOne
-:set spl= enc=latin1
-:"
-gg:/^test output:/,$wq! test.out
-ENDTEST
-
-1affstart
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-
-SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
-SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP aàáâãäå
-MAP eèéêë
-MAP iìíîï
-MAP oòóôõö
-MAP uùúûü
-MAP nñ
-MAP cç
-MAP yÿý
-MAP sß
-1affend
-
-1good: wrong OK puts. Test the end
-bad: inputs comment ok Ok. test déôl end the
-badend
-
-1dicstart
-123456
-test/NO
-# comment
-wrong
-Comment
-OK
-uk
-put/ISO
-the end
-deol
-déôr
-1dicend
-
-affstart_sal
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-ëéèêïîäàâöüû'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP aàáâãäå
-MAP eèéêë
-MAP iìíîï
-MAP oòóôõö
-MAP uùúûü
-MAP nñ
-MAP cç
-MAP yÿý
-MAP sß
-
-SAL AH(AEIOUY)-^ *H
-SAL AR(AEIOUY)-^ *R
-SAL A(HR)^ *
-SAL A^ *
-SAL AH(AEIOUY)- H
-SAL AR(AEIOUY)- R
-SAL A(HR) _
-SAL À^ *
-SAL Å^ *
-SAL BB- _
-SAL B B
-SAL CQ- _
-SAL CIA X
-SAL CH X
-SAL C(EIY)- S
-SAL CK K
-SAL COUGH^ KF
-SAL CC< C
-SAL C K
-SAL DG(EIY) K
-SAL DD- _
-SAL D T
-SAL É< E
-SAL EH(AEIOUY)-^ *H
-SAL ER(AEIOUY)-^ *R
-SAL E(HR)^ *
-SAL ENOUGH^$ *NF
-SAL E^ *
-SAL EH(AEIOUY)- H
-SAL ER(AEIOUY)- R
-SAL E(HR) _
-SAL FF- _
-SAL F F
-SAL GN^ N
-SAL GN$ N
-SAL GNS$ NS
-SAL GNED$ N
-SAL GH(AEIOUY)- K
-SAL GH _
-SAL GG9 K
-SAL G K
-SAL H H
-SAL IH(AEIOUY)-^ *H
-SAL IR(AEIOUY)-^ *R
-SAL I(HR)^ *
-SAL I^ *
-SAL ING6 N
-SAL IH(AEIOUY)- H
-SAL IR(AEIOUY)- R
-SAL I(HR) _
-SAL J K
-SAL KN^ N
-SAL KK- _
-SAL K K
-SAL LAUGH^ LF
-SAL LL- _
-SAL L L
-SAL MB$ M
-SAL MM M
-SAL M M
-SAL NN- _
-SAL N N
-SAL OH(AEIOUY)-^ *H
-SAL OR(AEIOUY)-^ *R
-SAL O(HR)^ *
-SAL O^ *
-SAL OH(AEIOUY)- H
-SAL OR(AEIOUY)- R
-SAL O(HR) _
-SAL PH F
-SAL PN^ N
-SAL PP- _
-SAL P P
-SAL Q K
-SAL RH^ R
-SAL ROUGH^ RF
-SAL RR- _
-SAL R R
-SAL SCH(EOU)- SK
-SAL SC(IEY)- S
-SAL SH X
-SAL SI(AO)- X
-SAL SS- _
-SAL S S
-SAL TI(AO)- X
-SAL TH @
-SAL TCH-- _
-SAL TOUGH^ TF
-SAL TT- _
-SAL T T
-SAL UH(AEIOUY)-^ *H
-SAL UR(AEIOUY)-^ *R
-SAL U(HR)^ *
-SAL U^ *
-SAL UH(AEIOUY)- H
-SAL UR(AEIOUY)- R
-SAL U(HR) _
-SAL V^ W
-SAL V F
-SAL WR^ R
-SAL WH^ W
-SAL W(AEIOU)- W
-SAL X^ S
-SAL X KS
-SAL Y(AEIOU)- Y
-SAL ZZ- _
-SAL Z S
-affend_sal
-
-2affstart
-SET ISO8859-1
-
-FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out [a-z]
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP aàáâãäå
-MAP eèéêë
-MAP iìíîï
-MAP oòóôõö
-MAP uùúûü
-MAP nñ
-MAP cç
-MAP yÿý
-MAP sß
-2affend
-
-2good: puts
-bad: inputs comment ok Ok end the. test déôl
-badend
-
-addstart
-/regions=usgbnz
-elequint/2
-elekwint/3
-addend
-
-test2:
-elequint test elekwint test elekwent asdf
-
-Test rules for compounding.
-
-3affstart
-SET ISO8859-1
-
-COMPOUNDMIN 3
-COMPOUNDRULE m*
-NEEDCOMPOUND x
-3affend
-
-3dicstart
-1234
-foo/m
-bar/mx
-mï/m
-la/mx
-3dicend
-
-3good: foo mï foobar foofoobar barfoo barbarfoo
-bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
-badend
-
-
-Tests for compounding.
-
-4affstart
-SET ISO8859-1
-
-FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
-UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
-
-COMPOUNDRULE m+
-COMPOUNDRULE sm*e
-COMPOUNDRULE sm+
-COMPOUNDMIN 3
-COMPOUNDWORDMAX 3
-COMPOUNDFORBIDFLAG t
-
-COMPOUNDSYLMAX 5
-SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
-
-MAP 9
-MAP aàáâãäå
-MAP eèéêë
-MAP iìíîï
-MAP oòóôõö
-MAP uùúûü
-MAP nñ
-MAP cç
-MAP yÿý
-MAP sß
-
-NEEDAFFIX x
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-SFX q N 1
-SFX q 0 -ok .
-
-SFX a Y 2
-SFX a 0 s .
-SFX a 0 ize/t .
-
-PFX p N 1
-PFX p 0 pre .
-
-PFX P N 1
-PFX P 0 nou .
-4affend
-
-4dicstart
-1234
-word/mP
-util/am
-pro/xq
-tomato/m
-bork/mp
-start/s
-end/e
-4dicend
-
-4good: word util bork prebork start end wordutil wordutils pro-ok
- bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
- tomato tomatotomato startend startword startwordword startwordend
- startwordwordend startwordwordwordend prebork preborkbork
- preborkborkbork
- nouword
-bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
- endstart endend startstart wordend wordstart
- preborkprebork preborkpreborkbork
- startwordwordwordwordend borkpreborkpreborkbork
- utilsbork startnouword
-badend
-
-Test affix flags with two characters
-
-5affstart
-SET ISO8859-1
-
-FLAG long
-
-NEEDAFFIX !!
-
-COMPOUNDRULE ssmm*ee
-
-NEEDCOMPOUND xx
-COMPOUNDPERMITFLAG pp
-
-SFX 13 Y 1
-SFX 13 0 bork .
-
-SFX a1 Y 1
-SFX a1 0 a1 .
-
-SFX aé Y 1
-SFX aé 0 aé .
-
-PFX zz Y 1
-PFX zz 0 pre/pp .
-
-PFX yy Y 1
-PFX yy 0 nou .
-5affend
-
-5dicstart
-1234
-foo/a1aé!!
-bar/zz13ee
-start/ss
-end/eeyy
-middle/mmxx
-5dicend
-
-5good: fooa1 fooaé bar prebar barbork prebarbork startprebar
- start end startend startmiddleend nouend
-bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
- startprobar startnouend
-badend
-
-6affstart
-SET ISO8859-1
-
-FLAG caplong
-
-NEEDAFFIX A!
-
-COMPOUNDRULE sMm*Ee
-
-NEEDCOMPOUND Xx
-
-COMPOUNDPERMITFLAG p
-
-SFX N3 Y 1
-SFX N3 0 bork .
-
-SFX A1 Y 1
-SFX A1 0 a1 .
-
-SFX Aé Y 1
-SFX Aé 0 aé .
-
-PFX Zz Y 1
-PFX Zz 0 pre/p .
-6affend
-
-6dicstart
-1234
-mee/A1AéA!
-bar/ZzN3Ee
-lead/s
-end/Ee
-middle/MmXx
-6dicend
-
-6good: meea1 meeaé bar prebar barbork prebarbork leadprebar
- lead end leadend leadmiddleend
-bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
- leadprobar
-badend
-
-7affstart
-SET ISO8859-1
-
-FLAG num
-
-NEEDAFFIX 9999
-
-COMPOUNDRULE 2,77*123
-
-NEEDCOMPOUND 1
-COMPOUNDPERMITFLAG 432
-
-SFX 61003 Y 1
-SFX 61003 0 meat .
-
-SFX 391 Y 1
-SFX 391 0 a1 .
-
-SFX 111 Y 1
-SFX 111 0 aé .
-
-PFX 17 Y 1
-PFX 17 0 pre/432 .
-7affend
-
-7dicstart
-1234
-mee/391,111,9999
-bar/17,61003,123
-lead/2
-tail/123
-middle/77,1
-7dicend
-
-7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebar
- lead tail leadtail leadmiddletail
-bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
- leadprobar
-badend
-
-Test NOSLITSUGS
-
-8affstart
-SET ISO8859-1
-
-NOSPLITSUGS
-8affend
-
-8dicstart
-1234
-foo
-bar
-faabar
-8dicend
-
-8good: foo bar faabar
-bad: foobar barfoo
-badend
-
-
-Test Numbers
-
-9affstart
-9affend
-
-9dicstart
-1234
-foo
-bar
-9dicend
-
-9good: 0b1011 0777 1234 0x01ff
-badend
-
-
-test output:
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
deleted file mode 100644
index dc37f0fd4..000000000
--- a/src/testdir/test58.ok
+++ /dev/null
@@ -1,289 +0,0 @@
-test output:
-
-test 1-1
-# file: Xtest.latin1.spl
-Comment
-deol
-déôr
-input
-OK
-output
-outputs
-outtest
-put
-puts
-test
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment', 'outtest', 'the end']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-test
-['Test', 'testn', 'testen']
-déôl
-['deol', 'déôr', 'test']
-end
-['put', 'uk', 'test']
-the
-['put', 'uk', 'test']
-gebletegek
-kepereneven
-everles gesvets etele
-kbltykk
-kprnfn
-*fls kswts tl
-elekwent
-elequint
-elekwint
-elekwint
-elekwent
-elequint
-elekwent
-elequint
-elekwint
-
-test 2-1
-# file: Xtest.latin1.spl
-Comment
-deol
-déôr
-OK
-put
-input
-output
-puts
-outputs
-test
-outtest
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-end
-['put', 'uk', 'deol']
-the
-['put', 'uk', 'test']
-test
-['Test', 'testn', 'testen']
-déôl
-['deol', 'déôr', 'test']
-
-test 3-3
-# file: Xtest.latin1.spl
-foo
-mï
--------
-bad
-['foo', 'mï']
-bar
-['barfoo', 'foobar', 'foo']
-la
-['mï', 'foo']
-foomï
-['foo mï', 'foo', 'foofoo']
-barmï
-['barfoo', 'mï', 'barbar']
-mïfoo
-['mï foo', 'foo', 'foofoo']
-mïbar
-['foobar', 'barbar', 'mï']
-mïmï
-['mï mï', 'mï']
-lala
-[]
-mïla
-['mï', 'mï mï']
-lamï
-['mï', 'mï mï']
-foola
-['foo', 'foobar', 'foofoo']
-labar
-['barbar', 'foobar']
-
-test 4-4
-# file: Xtest.latin1.spl
-bork
-prebork
-end
-pro-ok
-start
-tomato
-util
-utilize
-utils
-word
-nouword
--------
-bad
-['end', 'bork', 'word']
-wordutilize
-['word utilize', 'wordutils', 'wordutil']
-pro
-['bork', 'word', 'end']
-borkborkborkborkborkbork
-['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
-tomatotomatotomato
-['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
-endstart
-['end start', 'start']
-endend
-['end end', 'end']
-startstart
-['start start']
-wordend
-['word end', 'word', 'wordword']
-wordstart
-['word start', 'bork start']
-preborkprebork
-['prebork prebork', 'preborkbork', 'preborkborkbork']
-preborkpreborkbork
-['prebork preborkbork', 'preborkborkbork', 'preborkborkborkbork']
-startwordwordwordwordend
-['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
-borkpreborkpreborkbork
-['bork preborkpreborkbork', 'bork prebork preborkbork', 'bork preborkprebork bork']
-utilsbork
-['utilbork', 'utils bork', 'util bork']
-startnouword
-['start nouword', 'startword', 'startborkword']
-
-test 5-5
-# file: Xtest.latin1.spl
-bar
-barbork
-end
-fooa1
-fooaé
-nouend
-prebar
-prebarbork
-start
--------
-bad
-['bar', 'end', 'fooa1']
-foo
-['fooa1', 'fooaé', 'bar']
-fooa2
-['fooa1', 'fooaé', 'bar']
-prabar
-['prebar', 'bar', 'bar bar']
-probarbirk
-['prebarbork']
-middle
-[]
-startmiddle
-['startmiddleend', 'startmiddlebar']
-middleend
-[]
-endstart
-['end start', 'start']
-startprobar
-['startprebar', 'start prebar', 'startbar']
-startnouend
-['start nouend', 'startend']
-
-test 6-6
-# file: Xtest.latin1.spl
-bar
-barbork
-end
-lead
-meea1
-meeaé
-prebar
-prebarbork
--------
-bad
-['bar', 'end', 'lead']
-mee
-['meea1', 'meeaé', 'bar']
-meea2
-['meea1', 'meeaé', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarbirk
-['prebarbork']
-middle
-[]
-leadmiddle
-['leadmiddleend', 'leadmiddlebar']
-middleend
-[]
-endlead
-['end lead', 'lead', 'end end']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
-
-test 7-7
-# file: Xtest.latin1.spl
-bar
-barmeat
-lead
-meea1
-meeaé
-prebar
-prebarmeat
-tail
--------
-bad
-['bar', 'lead', 'tail']
-mee
-['meea1', 'meeaé', 'bar']
-meea2
-['meea1', 'meeaé', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarmaat
-['prebarmeat']
-middle
-[]
-leadmiddle
-['leadmiddlebar']
-middletail
-[]
-taillead
-['tail lead', 'tail']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
-
-test 8-8
-# file: Xtest.latin1.spl
-bar
-faabar
-foo
--------
-bad
-['bar', 'foo']
-foobar
-['faabar', 'foo bar', 'bar']
-barfoo
-['bar foo', 'bar', 'foo']
-
-test 9-9
-# file: Xtest.latin1.spl
-bar
-foo
--------
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 80a66f280..83da2a0be 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -1,5 +1,4 @@
" Test spell checking
-" TODO: move test58 tests here
if !has('spell')
finish
@@ -33,7 +32,7 @@ func Test_spellreall()
set spell
call assert_fails('spellrepall', 'E752:')
call setline(1, ['A speling mistake. The same speling mistake.',
- \ 'Another speling mistake.'])
+ \ 'Another speling mistake.'])
call feedkeys(']s1z=', 'tx')
call assert_equal('A spelling mistake. The same speling mistake.', getline(1))
call assert_equal('Another speling mistake.', getline(2))
@@ -44,3 +43,726 @@ func Test_spellreall()
set spell&
bwipe!
endfunc
+
+func Test_zz_basic()
+ call LoadAffAndDic(g:test_data_aff1, g:test_data_dic1)
+ call RunGoodBad("wrong OK puts. Test the end",
+ \ "bad: inputs comment ok Ok. test d\xE9\xF4l end the",
+ \["Comment", "deol", "d\xE9\xF4r", "input", "OK", "output", "outputs", "outtest", "put", "puts",
+ \ "test", "testen", "testn", "the end", "uk", "wrong"],
+ \[
+ \ ["bad", ["put", "uk", "OK"]],
+ \ ["inputs", ["input", "puts", "outputs"]],
+ \ ["comment", ["Comment", "outtest", "the end"]],
+ \ ["ok", ["OK", "uk", "put"]],
+ \ ["Ok", ["OK", "Uk", "Put"]],
+ \ ["test", ["Test", "testn", "testen"]],
+ \ ["d\xE9\xF4l", ["deol", "d\xE9\xF4r", "test"]],
+ \ ["end", ["put", "uk", "test"]],
+ \ ["the", ["put", "uk", "test"]],
+ \ ]
+ \ )
+
+ call assert_equal("gebletegek", soundfold('goobledygoook'))
+ call assert_equal("kepereneven", soundfold('kóopërÿnôven'))
+ call assert_equal("everles gesvets etele", soundfold('oeverloos gezwets edale'))
+endfunc
+
+" Postponed prefixes
+func Test_zz_prefixes()
+ call LoadAffAndDic(g:test_data_aff2, g:test_data_dic1)
+ call RunGoodBad("puts",
+ \ "bad: inputs comment ok Ok end the. test d\xE9\xF4l",
+ \ ["Comment", "deol", "d\xE9\xF4r", "OK", "put", "input", "output", "puts", "outputs", "test", "outtest", "testen", "testn", "the end", "uk", "wrong"],
+ \ [
+ \ ["bad", ["put", "uk", "OK"]],
+ \ ["inputs", ["input", "puts", "outputs"]],
+ \ ["comment", ["Comment"]],
+ \ ["ok", ["OK", "uk", "put"]],
+ \ ["Ok", ["OK", "Uk", "Put"]],
+ \ ["end", ["put", "uk", "deol"]],
+ \ ["the", ["put", "uk", "test"]],
+ \ ["test", ["Test", "testn", "testen"]],
+ \ ["d\xE9\xF4l", ["deol", "d\xE9\xF4r", "test"]],
+ \ ])
+endfunc
+
+"Compound words
+func Test_zz_compound()
+ call LoadAffAndDic(g:test_data_aff3, g:test_data_dic3)
+ call RunGoodBad("foo m\xEF foobar foofoobar barfoo barbarfoo",
+ \ "bad: bar la foom\xEF barm\xEF m\xEFfoo m\xEFbar m\xEFm\xEF lala m\xEFla lam\xEF foola labar",
+ \ ["foo", "m\xEF"],
+ \ [
+ \ ["bad", ["foo", "m\xEF"]],
+ \ ["bar", ["barfoo", "foobar", "foo"]],
+ \ ["la", ["m\xEF", "foo"]],
+ \ ["foom\xEF", ["foo m\xEF", "foo", "foofoo"]],
+ \ ["barm\xEF", ["barfoo", "m\xEF", "barbar"]],
+ \ ["m\xEFfoo", ["m\xEF foo", "foo", "foofoo"]],
+ \ ["m\xEFbar", ["foobar", "barbar", "m\xEF"]],
+ \ ["m\xEFm\xEF", ["m\xEF m\xEF", "m\xEF"]],
+ \ ["lala", []],
+ \ ["m\xEFla", ["m\xEF", "m\xEF m\xEF"]],
+ \ ["lam\xEF", ["m\xEF", "m\xEF m\xEF"]],
+ \ ["foola", ["foo", "foobar", "foofoo"]],
+ \ ["labar", ["barbar", "foobar"]],
+ \ ])
+
+ call LoadAffAndDic(g:test_data_aff4, g:test_data_dic4)
+ call RunGoodBad("word util bork prebork start end wordutil wordutils pro-ok bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork tomato tomatotomato startend startword startwordword startwordend startwordwordend startwordwordwordend prebork preborkbork preborkborkbork nouword",
+ \ "bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato endstart endend startstart wordend wordstart preborkprebork preborkpreborkbork startwordwordwordwordend borkpreborkpreborkbork utilsbork startnouword",
+ \ ["bork", "prebork", "end", "pro-ok", "start", "tomato", "util", "utilize", "utils", "word", "nouword"],
+ \ [
+ \ ["bad", ["end", "bork", "word"]],
+ \ ["wordutilize", ["word utilize", "wordutils", "wordutil"]],
+ \ ["pro", ["bork", "word", "end"]],
+ \ ["borkborkborkborkborkbork", ["bork borkborkborkborkbork", "borkbork borkborkborkbork", "borkborkbork borkborkbork"]],
+ \ ["tomatotomatotomato", ["tomato tomatotomato", "tomatotomato tomato", "tomato tomato tomato"]],
+ \ ["endstart", ["end start", "start"]],
+ \ ["endend", ["end end", "end"]],
+ \ ["startstart", ["start start"]],
+ \ ["wordend", ["word end", "word", "wordword"]],
+ \ ["wordstart", ["word start", "bork start"]],
+ \ ["preborkprebork", ["prebork prebork", "preborkbork", "preborkborkbork"]],
+ \ ["preborkpreborkbork", ["prebork preborkbork", "preborkborkbork", "preborkborkborkbork"]],
+ \ ["startwordwordwordwordend", ["startwordwordwordword end", "startwordwordwordword", "start wordwordwordword end"]],
+ \ ["borkpreborkpreborkbork", ["bork preborkpreborkbork", "bork prebork preborkbork", "bork preborkprebork bork"]],
+ \ ["utilsbork", ["utilbork", "utils bork", "util bork"]],
+ \ ["startnouword", ["start nouword", "startword", "startborkword"]],
+ \ ])
+
+endfunc
+
+"Test affix flags with two characters
+func Test_zz_affix()
+ call LoadAffAndDic(g:test_data_aff5, g:test_data_dic5)
+ call RunGoodBad("fooa1 fooa\xE9 bar prebar barbork prebarbork startprebar start end startend startmiddleend nouend",
+ \ "bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart startprobar startnouend",
+ \ ["bar", "barbork", "end", "fooa1", "fooa\xE9", "nouend", "prebar", "prebarbork", "start"],
+ \ [
+ \ ["bad", ["bar", "end", "fooa1"]],
+ \ ["foo", ["fooa1", "fooa\xE9", "bar"]],
+ \ ["fooa2", ["fooa1", "fooa\xE9", "bar"]],
+ \ ["prabar", ["prebar", "bar", "bar bar"]],
+ \ ["probarbirk", ["prebarbork"]],
+ \ ["middle", []],
+ \ ["startmiddle", ["startmiddleend", "startmiddlebar"]],
+ \ ["middleend", []],
+ \ ["endstart", ["end start", "start"]],
+ \ ["startprobar", ["startprebar", "start prebar", "startbar"]],
+ \ ["startnouend", ["start nouend", "startend"]],
+ \ ])
+
+ call LoadAffAndDic(g:test_data_aff6, g:test_data_dic6)
+ call RunGoodBad("meea1 meea\xE9 bar prebar barbork prebarbork leadprebar lead end leadend leadmiddleend",
+ \ "bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead leadprobar",
+ \ ["bar", "barbork", "end", "lead", "meea1", "meea\xE9", "prebar", "prebarbork"],
+ \ [
+ \ ["bad", ["bar", "end", "lead"]],
+ \ ["mee", ["meea1", "meea\xE9", "bar"]],
+ \ ["meea2", ["meea1", "meea\xE9", "lead"]],
+ \ ["prabar", ["prebar", "bar", "leadbar"]],
+ \ ["probarbirk", ["prebarbork"]],
+ \ ["middle", []],
+ \ ["leadmiddle", ["leadmiddleend", "leadmiddlebar"]],
+ \ ["middleend", []],
+ \ ["endlead", ["end lead", "lead", "end end"]],
+ \ ["leadprobar", ["leadprebar", "lead prebar", "leadbar"]],
+ \ ])
+
+ call LoadAffAndDic(g:test_data_aff7, g:test_data_dic7)
+ call RunGoodBad("meea1 meea\xE9 bar prebar barmeat prebarmeat leadprebar lead tail leadtail leadmiddletail",
+ \ "bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead leadprobar",
+ \ ["bar", "barmeat", "lead", "meea1", "meea\xE9", "prebar", "prebarmeat", "tail"],
+ \ [
+ \ ["bad", ["bar", "lead", "tail"]],
+ \ ["mee", ["meea1", "meea\xE9", "bar"]],
+ \ ["meea2", ["meea1", "meea\xE9", "lead"]],
+ \ ["prabar", ["prebar", "bar", "leadbar"]],
+ \ ["probarmaat", ["prebarmeat"]],
+ \ ["middle", []],
+ \ ["leadmiddle", ["leadmiddlebar"]],
+ \ ["middletail", []],
+ \ ["taillead", ["tail lead", "tail"]],
+ \ ["leadprobar", ["leadprebar", "lead prebar", "leadbar"]],
+ \ ])
+endfunc
+
+func Test_zz_NOSLITSUGS()
+ call LoadAffAndDic(g:test_data_aff8, g:test_data_dic8)
+ call RunGoodBad("foo bar faabar", "bad: foobar barfoo",
+ \ ["bar", "faabar", "foo"],
+ \ [
+ \ ["bad", ["bar", "foo"]],
+ \ ["foobar", ["faabar", "foo bar", "bar"]],
+ \ ["barfoo", ["bar foo", "bar", "foo"]],
+ \ ])
+endfunc
+
+" Numbers
+func Test_zz_Numbers()
+ call LoadAffAndDic(g:test_data_aff9, g:test_data_dic9)
+ call RunGoodBad("0b1011 0777 1234 0x01ff", "",
+ \ ["bar", "foo"],
+ \ [
+ \ ])
+endfunc
+
+function FirstSpellWord()
+ call feedkeys("/^start:\n", 'tx')
+ normal ]smm
+ let [str, a] = spellbadword()
+ return str
+endfunc
+
+function SecondSpellWord()
+ normal `m]s
+ let [str, a] = spellbadword()
+ return str
+endfunc
+
+"Test with SAL instead of SOFO items; test automatic reloading
+func Test_zz_sal_and_addition()
+ set enc=latin1
+ set spellfile=
+ call writefile(g:test_data_aff_sal, "Xtest.aff")
+ mkspell! Xtest Xtest
+ set spl=Xtest.latin1.spl spell
+ call assert_equal('kbltykk', soundfold('goobledygoook'))
+ call assert_equal('kprnfn', soundfold('kóopërÿnôven'))
+ call assert_equal('*fls kswts tl', soundfold('oeverloos gezwets edale'))
+
+ "also use an addition file
+ call writefile(["/regions=usgbnz", "elequint/2", "elekwint/3"], "Xtest.latin1.add")
+ mkspell! Xtest.latin1.add.spl Xtest.latin1.add
+
+ bwipe!
+ call setline(1, ["start: elequint test elekwint test elekwent asdf"])
+
+ set spellfile=Xtest.latin1.add
+ call assert_equal("elekwent", FirstSpellWord())
+
+ set spl=Xtest_us.latin1.spl
+ call assert_equal("elequint", FirstSpellWord())
+ call assert_equal("elekwint", SecondSpellWord())
+
+ set spl=Xtest_gb.latin1.spl
+ call assert_equal("elekwint", FirstSpellWord())
+ call assert_equal("elekwent", SecondSpellWord())
+
+ set spl=Xtest_nz.latin1.spl
+ call assert_equal("elequint", FirstSpellWord())
+ call assert_equal("elekwent", SecondSpellWord())
+
+ set spl=Xtest_ca.latin1.spl
+ call assert_equal("elequint", FirstSpellWord())
+ call assert_equal("elekwint", SecondSpellWord())
+endfunc
+
+" Check using z= in new buffer (crash fixed by patch 7.4a.028).
+func Test_zeq_crash()
+ new
+ set maxmem=512 spell
+ call feedkeys('iasdz=:\"', 'tx')
+
+ bwipe!
+endfunc
+
+func LoadAffAndDic(aff_contents, dic_contents)
+ set enc=latin1
+ set spellfile=
+ call writefile(a:aff_contents, "Xtest.aff")
+ call writefile(a:dic_contents, "Xtest.dic")
+ " Generate a .spl file from a .dic and .aff file.
+ mkspell! Xtest Xtest
+ " use that spell file
+ set spl=Xtest.latin1.spl spell
+endfunc
+
+func ListWords()
+ spelldump
+ %yank
+ quit
+ return split(@", "\n")
+endfunc
+
+func TestGoodBadBase()
+ exe '1;/^good:'
+ normal 0f:]s
+ let prevbad = ''
+ let result = []
+ while 1
+ let [bad, a] = spellbadword()
+ if bad == '' || bad == prevbad || bad == 'badend'
+ break
+ endif
+ let prevbad = bad
+ let lst = spellsuggest(bad, 3)
+ normal mm
+
+ call add(result, [bad, lst])
+ normal `m]s
+ endwhile
+ return result
+endfunc
+
+func RunGoodBad(good, bad, expected_words, expected_bad_words)
+ bwipe!
+ call setline(1, ["good: ", a:good, a:bad, " badend "])
+ let words = ListWords()
+ call assert_equal(a:expected_words, words[1:-1])
+ let bad_words = TestGoodBadBase()
+ call assert_equal(a:expected_bad_words, bad_words)
+ bwipe!
+endfunc
+
+let g:test_data_aff1 = [
+ \"SET ISO8859-1",
+ \"TRY esianrtolcdugmphbyfvkwjkqxz-\xEB\xE9\xE8\xEA\xEF\xEE\xE4\xE0\xE2\xF6\xFC\xFB'ESIANRTOLCDUGMPHBYFVKWJKQXZ",
+ \"",
+ \"FOL \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"LOW \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"UPP \xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xFF",
+ \"",
+ \"SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xBF",
+ \"SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?",
+ \"",
+ \"MIDWORD\t'-",
+ \"",
+ \"KEP =",
+ \"RAR ?",
+ \"BAD !",
+ \"",
+ \"PFX I N 1",
+ \"PFX I 0 in .",
+ \"",
+ \"PFX O Y 1",
+ \"PFX O 0 out .",
+ \"",
+ \"SFX S Y 2",
+ \"SFX S 0 s [^s]",
+ \"SFX S 0 es s",
+ \"",
+ \"SFX N N 3",
+ \"SFX N 0 en [^n]",
+ \"SFX N 0 nen n",
+ \"SFX N 0 n .",
+ \"",
+ \"REP 3",
+ \"REP g ch",
+ \"REP ch g",
+ \"REP svp s.v.p.",
+ \"",
+ \"MAP 9",
+ \"MAP a\xE0\xE1\xE2\xE3\xE4\xE5",
+ \"MAP e\xE8\xE9\xEA\xEB",
+ \"MAP i\xEC\xED\xEE\xEF",
+ \"MAP o\xF2\xF3\xF4\xF5\xF6",
+ \"MAP u\xF9\xFA\xFB\xFC",
+ \"MAP n\xF1",
+ \"MAP c\xE7",
+ \"MAP y\xFF\xFD",
+ \"MAP s\xDF",
+ \ ]
+let g:test_data_dic1 = [
+ \"123456",
+ \"test/NO",
+ \"# comment",
+ \"wrong",
+ \"Comment",
+ \"OK",
+ \"uk",
+ \"put/ISO",
+ \"the end",
+ \"deol",
+ \"d\xE9\xF4r",
+ \ ]
+let g:test_data_aff2 = [
+ \"SET ISO8859-1",
+ \"",
+ \"FOL \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"LOW \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"UPP \xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xFF",
+ \"",
+ \"PFXPOSTPONE",
+ \"",
+ \"MIDWORD\t'-",
+ \"",
+ \"KEP =",
+ \"RAR ?",
+ \"BAD !",
+ \"",
+ \"PFX I N 1",
+ \"PFX I 0 in .",
+ \"",
+ \"PFX O Y 1",
+ \"PFX O 0 out [a-z]",
+ \"",
+ \"SFX S Y 2",
+ \"SFX S 0 s [^s]",
+ \"SFX S 0 es s",
+ \"",
+ \"SFX N N 3",
+ \"SFX N 0 en [^n]",
+ \"SFX N 0 nen n",
+ \"SFX N 0 n .",
+ \"",
+ \"REP 3",
+ \"REP g ch",
+ \"REP ch g",
+ \"REP svp s.v.p.",
+ \"",
+ \"MAP 9",
+ \"MAP a\xE0\xE1\xE2\xE3\xE4\xE5",
+ \"MAP e\xE8\xE9\xEA\xEB",
+ \"MAP i\xEC\xED\xEE\xEF",
+ \"MAP o\xF2\xF3\xF4\xF5\xF6",
+ \"MAP u\xF9\xFA\xFB\xFC",
+ \"MAP n\xF1",
+ \"MAP c\xE7",
+ \"MAP y\xFF\xFD",
+ \"MAP s\xDF",
+ \ ]
+let g:test_data_aff3 = [
+ \"SET ISO8859-1",
+ \"",
+ \"COMPOUNDMIN 3",
+ \"COMPOUNDRULE m*",
+ \"NEEDCOMPOUND x",
+ \ ]
+let g:test_data_dic3 = [
+ \"1234",
+ \"foo/m",
+ \"bar/mx",
+ \"m\xEF/m",
+ \"la/mx",
+ \ ]
+let g:test_data_aff4 = [
+ \"SET ISO8859-1",
+ \"",
+ \"FOL \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"LOW \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"UPP \xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xFF",
+ \"",
+ \"COMPOUNDRULE m+",
+ \"COMPOUNDRULE sm*e",
+ \"COMPOUNDRULE sm+",
+ \"COMPOUNDMIN 3",
+ \"COMPOUNDWORDMAX 3",
+ \"COMPOUNDFORBIDFLAG t",
+ \"",
+ \"COMPOUNDSYLMAX 5",
+ \"SYLLABLE a\xE1e\xE9i\xEDo\xF3\xF6\xF5u\xFA\xFC\xFBy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui",
+ \"",
+ \"MAP 9",
+ \"MAP a\xE0\xE1\xE2\xE3\xE4\xE5",
+ \"MAP e\xE8\xE9\xEA\xEB",
+ \"MAP i\xEC\xED\xEE\xEF",
+ \"MAP o\xF2\xF3\xF4\xF5\xF6",
+ \"MAP u\xF9\xFA\xFB\xFC",
+ \"MAP n\xF1",
+ \"MAP c\xE7",
+ \"MAP y\xFF\xFD",
+ \"MAP s\xDF",
+ \"",
+ \"NEEDAFFIX x",
+ \"",
+ \"PFXPOSTPONE",
+ \"",
+ \"MIDWORD '-",
+ \"",
+ \"SFX q N 1",
+ \"SFX q 0 -ok .",
+ \"",
+ \"SFX a Y 2",
+ \"SFX a 0 s .",
+ \"SFX a 0 ize/t .",
+ \"",
+ \"PFX p N 1",
+ \"PFX p 0 pre .",
+ \"",
+ \"PFX P N 1",
+ \"PFX P 0 nou .",
+ \ ]
+let g:test_data_dic4 = [
+ \"1234",
+ \"word/mP",
+ \"util/am",
+ \"pro/xq",
+ \"tomato/m",
+ \"bork/mp",
+ \"start/s",
+ \"end/e",
+ \ ]
+let g:test_data_aff5 = [
+ \"SET ISO8859-1",
+ \"",
+ \"FLAG long",
+ \"",
+ \"NEEDAFFIX !!",
+ \"",
+ \"COMPOUNDRULE ssmm*ee",
+ \"",
+ \"NEEDCOMPOUND xx",
+ \"COMPOUNDPERMITFLAG pp",
+ \"",
+ \"SFX 13 Y 1",
+ \"SFX 13 0 bork .",
+ \"",
+ \"SFX a1 Y 1",
+ \"SFX a1 0 a1 .",
+ \"",
+ \"SFX a\xE9 Y 1",
+ \"SFX a\xE9 0 a\xE9 .",
+ \"",
+ \"PFX zz Y 1",
+ \"PFX zz 0 pre/pp .",
+ \"",
+ \"PFX yy Y 1",
+ \"PFX yy 0 nou .",
+ \ ]
+let g:test_data_dic5 = [
+ \"1234",
+ \"foo/a1a\xE9!!",
+ \"bar/zz13ee",
+ \"start/ss",
+ \"end/eeyy",
+ \"middle/mmxx",
+ \ ]
+let g:test_data_aff6 = [
+ \"SET ISO8859-1",
+ \"",
+ \"FLAG caplong",
+ \"",
+ \"NEEDAFFIX A!",
+ \"",
+ \"COMPOUNDRULE sMm*Ee",
+ \"",
+ \"NEEDCOMPOUND Xx",
+ \"",
+ \"COMPOUNDPERMITFLAG p",
+ \"",
+ \"SFX N3 Y 1",
+ \"SFX N3 0 bork .",
+ \"",
+ \"SFX A1 Y 1",
+ \"SFX A1 0 a1 .",
+ \"",
+ \"SFX A\xE9 Y 1",
+ \"SFX A\xE9 0 a\xE9 .",
+ \"",
+ \"PFX Zz Y 1",
+ \"PFX Zz 0 pre/p .",
+ \ ]
+let g:test_data_dic6 = [
+ \"1234",
+ \"mee/A1A\xE9A!",
+ \"bar/ZzN3Ee",
+ \"lead/s",
+ \"end/Ee",
+ \"middle/MmXx",
+ \ ]
+let g:test_data_aff7 = [
+ \"SET ISO8859-1",
+ \"",
+ \"FLAG num",
+ \"",
+ \"NEEDAFFIX 9999",
+ \"",
+ \"COMPOUNDRULE 2,77*123",
+ \"",
+ \"NEEDCOMPOUND 1",
+ \"COMPOUNDPERMITFLAG 432",
+ \"",
+ \"SFX 61003 Y 1",
+ \"SFX 61003 0 meat .",
+ \"",
+ \"SFX 391 Y 1",
+ \"SFX 391 0 a1 .",
+ \"",
+ \"SFX 111 Y 1",
+ \"SFX 111 0 a\xE9 .",
+ \"",
+ \"PFX 17 Y 1",
+ \"PFX 17 0 pre/432 .",
+ \ ]
+let g:test_data_dic7 = [
+ \"1234",
+ \"mee/391,111,9999",
+ \"bar/17,61003,123",
+ \"lead/2",
+ \"tail/123",
+ \"middle/77,1",
+ \ ]
+let g:test_data_aff8 = [
+ \"SET ISO8859-1",
+ \"",
+ \"NOSPLITSUGS",
+ \ ]
+let g:test_data_dic8 = [
+ \"1234",
+ \"foo",
+ \"bar",
+ \"faabar",
+ \ ]
+let g:test_data_aff9 = [
+ \ ]
+let g:test_data_dic9 = [
+ \"1234",
+ \"foo",
+ \"bar",
+ \ ]
+let g:test_data_aff_sal = [
+ \"SET ISO8859-1",
+ \"TRY esianrtolcdugmphbyfvkwjkqxz-\xEB\xE9\xE8\xEA\xEF\xEE\xE4\xE0\xE2\xF6\xFC\xFB'ESIANRTOLCDUGMPHBYFVKWJKQXZ",
+ \"",
+ \"FOL \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"LOW \xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xDF\xFF",
+ \"UPP \xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xFF",
+ \"",
+ \"MIDWORD\t'-",
+ \"",
+ \"KEP =",
+ \"RAR ?",
+ \"BAD !",
+ \"",
+ \"PFX I N 1",
+ \"PFX I 0 in .",
+ \"",
+ \"PFX O Y 1",
+ \"PFX O 0 out .",
+ \"",
+ \"SFX S Y 2",
+ \"SFX S 0 s [^s]",
+ \"SFX S 0 es s",
+ \"",
+ \"SFX N N 3",
+ \"SFX N 0 en [^n]",
+ \"SFX N 0 nen n",
+ \"SFX N 0 n .",
+ \"",
+ \"REP 3",
+ \"REP g ch",
+ \"REP ch g",
+ \"REP svp s.v.p.",
+ \"",
+ \"MAP 9",
+ \"MAP a\xE0\xE1\xE2\xE3\xE4\xE5",
+ \"MAP e\xE8\xE9\xEA\xEB",
+ \"MAP i\xEC\xED\xEE\xEF",
+ \"MAP o\xF2\xF3\xF4\xF5\xF6",
+ \"MAP u\xF9\xFA\xFB\xFC",
+ \"MAP n\xF1",
+ \"MAP c\xE7",
+ \"MAP y\xFF\xFD",
+ \"MAP s\xDF",
+ \"",
+ \"SAL AH(AEIOUY)-^ *H",
+ \"SAL AR(AEIOUY)-^ *R",
+ \"SAL A(HR)^ *",
+ \"SAL A^ *",
+ \"SAL AH(AEIOUY)- H",
+ \"SAL AR(AEIOUY)- R",
+ \"SAL A(HR) _",
+ \"SAL \xC0^ *",
+ \"SAL \xC5^ *",
+ \"SAL BB- _",
+ \"SAL B B",
+ \"SAL CQ- _",
+ \"SAL CIA X",
+ \"SAL CH X",
+ \"SAL C(EIY)- S",
+ \"SAL CK K",
+ \"SAL COUGH^ KF",
+ \"SAL CC< C",
+ \"SAL C K",
+ \"SAL DG(EIY) K",
+ \"SAL DD- _",
+ \"SAL D T",
+ \"SAL \xC9< E",
+ \"SAL EH(AEIOUY)-^ *H",
+ \"SAL ER(AEIOUY)-^ *R",
+ \"SAL E(HR)^ *",
+ \"SAL ENOUGH^$ *NF",
+ \"SAL E^ *",
+ \"SAL EH(AEIOUY)- H",
+ \"SAL ER(AEIOUY)- R",
+ \"SAL E(HR) _",
+ \"SAL FF- _",
+ \"SAL F F",
+ \"SAL GN^ N",
+ \"SAL GN$ N",
+ \"SAL GNS$ NS",
+ \"SAL GNED$ N",
+ \"SAL GH(AEIOUY)- K",
+ \"SAL GH _",
+ \"SAL GG9 K",
+ \"SAL G K",
+ \"SAL H H",
+ \"SAL IH(AEIOUY)-^ *H",
+ \"SAL IR(AEIOUY)-^ *R",
+ \"SAL I(HR)^ *",
+ \"SAL I^ *",
+ \"SAL ING6 N",
+ \"SAL IH(AEIOUY)- H",
+ \"SAL IR(AEIOUY)- R",
+ \"SAL I(HR) _",
+ \"SAL J K",
+ \"SAL KN^ N",
+ \"SAL KK- _",
+ \"SAL K K",
+ \"SAL LAUGH^ LF",
+ \"SAL LL- _",
+ \"SAL L L",
+ \"SAL MB$ M",
+ \"SAL MM M",
+ \"SAL M M",
+ \"SAL NN- _",
+ \"SAL N N",
+ \"SAL OH(AEIOUY)-^ *H",
+ \"SAL OR(AEIOUY)-^ *R",
+ \"SAL O(HR)^ *",
+ \"SAL O^ *",
+ \"SAL OH(AEIOUY)- H",
+ \"SAL OR(AEIOUY)- R",
+ \"SAL O(HR) _",
+ \"SAL PH F",
+ \"SAL PN^ N",
+ \"SAL PP- _",
+ \"SAL P P",
+ \"SAL Q K",
+ \"SAL RH^ R",
+ \"SAL ROUGH^ RF",
+ \"SAL RR- _",
+ \"SAL R R",
+ \"SAL SCH(EOU)- SK",
+ \"SAL SC(IEY)- S",
+ \"SAL SH X",
+ \"SAL SI(AO)- X",
+ \"SAL SS- _",
+ \"SAL S S",
+ \"SAL TI(AO)- X",
+ \"SAL TH @",
+ \"SAL TCH-- _",
+ \"SAL TOUGH^ TF",
+ \"SAL TT- _",
+ \"SAL T T",
+ \"SAL UH(AEIOUY)-^ *H",
+ \"SAL UR(AEIOUY)-^ *R",
+ \"SAL U(HR)^ *",
+ \"SAL U^ *",
+ \"SAL UH(AEIOUY)- H",
+ \"SAL UR(AEIOUY)- R",
+ \"SAL U(HR) _",
+ \"SAL V^ W",
+ \"SAL V F",
+ \"SAL WR^ R",
+ \"SAL WH^ W",
+ \"SAL W(AEIOU)- W",
+ \"SAL X^ S",
+ \"SAL X KS",
+ \"SAL Y(AEIOU)- Y",
+ \"SAL ZZ- _",
+ \"SAL Z S",
+ \ ]
diff --git a/src/version.c b/src/version.c
index 58ae3ae2d..ab0381cc8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 658,
+/**/
657,
/**/
656,