updated for version 7.0130
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index fc0b1c9..3476ab2 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2005 Jul 30
+*change.txt*    For Vim version 7.0aa.  Last change: 2005 Aug 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1534,4 +1534,8 @@
 guarantee that sorting is "stable" or obeys the current locale.  You will have
 to try it out.
 
+The sorting itself cannot be interrupted, because of using a system library
+function.  You can interrupt the preparation (for undo) and putting the sorted
+lines into the buffer.  In the last case you may end up with duplicated lines.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt
index dc3d695..a640f5b 100644
--- a/runtime/doc/develop.txt
+++ b/runtime/doc/develop.txt
@@ -1,4 +1,4 @@
-*develop.txt*   For Vim version 7.0aa.  Last change: 2005 Jun 13
+*develop.txt*   For Vim version 7.0aa.  Last change: 2005 Aug 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -123,7 +123,8 @@
 
 - The source code should not become a mess.  It should be reliable code.
 - Use the same layout in all files to make it easy to read |coding-style|.
-- Use comments in a useful way!
+- Use comments in a useful way!  Quoting the function name and argument names
+  is NOT useful.  Do explain what they are for.
 - Porting to another platform should be made easy, without having to change
   too much platform-independent code.
 - Use the object-oriented spirit: Put data and code together.  Minimize the
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 19a9d53..de29f0f 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -273,6 +273,19 @@
 Note: When using mappings for Visual mode, you can use the "'<" mark, which
 is the start of the last selected Visual area in the current buffer |'<|.
 
+							*:map-verbose*
+When 'verbose' is non-zero, listing a key map will also display where it was
+last defined.  Example: >
+
+	:verbose map <C-W>*
+	n  <C-W>*      * <C-W><C-S>*
+	        Last set from /home/abcd/.vimrc
+
+When the map was defined by hand there is no "Last set" message.  When the map
+was defined while executing a function, user command or autocommand, the
+script in which it was defined is reported.
+{not available when compiled without the +eval feature}
+
 							*map_backslash*
 Note that only CTRL-V is mentioned here as a special character for mappings
 and abbreviations.  When 'cpoptions' does not contain 'B', a backslash can
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index b99b0d7..078d754 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0aa.  Last change: 2005 May 22
+*pattern.txt*   For Vim version 7.0aa.  Last change: 2005 Aug 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -944,6 +944,9 @@
 	This makes it Vi compatible: Without the "\_" or "\n" the collection
 	does not match an end-of-line.
 
+	When the ']' is not there Vim will not give an error message but
+	assume no collection is used.  Useful to search for '['.
+
 	If the sequence begins with "^", it matches any single character NOT
 	in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
 	- If two characters in the sequence are separated by '-', this is
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 7d8a51a..0525291 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 12
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -195,6 +195,14 @@
 'spellfile' are only used when all entries in "spelllang" specify the same
 region (not counting files specified by their .spl name).
 
+Specific exception: For German these special regions are used:
+	de		all German words accepted
+	de_de		old and new spelling
+	de_19		old spelling
+	de_20		new spelling
+	de_at		Austria
+	de_ch		Switzerland
+
 
 SPELL FILES						*spell-load*
 
@@ -335,6 +343,27 @@
 Note that the default scripts don't set 'spellcapcheck' if it was changed from
 the default value.  This assumes the user prefers another value then.
 
+
+DOUBLE SCORING						*spell-double-scoring*
+
+The 'spellsuggest' option can be used to select "double" scoring.  This
+mechanism is based on the principle that there are two kinds of spelling
+mistakes:
+
+1. You know how to spell the word, but mistype something.  This results in a
+   small editing distance (character swapped/omitted/inserted) and possibly a
+   word that sounds completely different.
+
+2. You don't know how to spell the word and type something that sounds right.
+   The edit distance can be big but the word is similar after sound-folding.
+
+Since scores for these two mistakes will be very different we use a list
+for each and mix them.
+
+The sound-folding is slow and people that know the language won't make the
+second kind of mistakes.  Therefore 'spellsuggest' can be set to select the
+preferred method for scoring the suggestions.
+
 ==============================================================================
 3. Generating a spell file				*spell-mkspell*
 
@@ -409,6 +438,11 @@
 			and producing an output file in the same directory
 			that has ".{enc}.spl" appended.
 
+Vim will report the number of duplicate words.  This might be a mistake in the
+list of words.  But sometimes it is used to have different prefixes and
+suffixes for the same basic word to avoid them combining (e.g. Czech uses
+this).
+
 Since you might want to change a Myspell word list for use with Vim the
 following procedure is recommended:
 
@@ -716,9 +750,27 @@
 but in lower case.  Thus when the chop string is used to allow the following
 word to start with an upper case letter.
 
+It is not possible to use PFXPOSTPONE together with COMPOUNDFLAG or
+COMPOUNDFLAGS.
 
-KEEP-CASE WORDS
-							*spell-affix-KEP*
+
+WORDS WITH A SLASH					*spell-affix-SLASH*
+
+The slash is used in the .dic file to separate the basic word from the affix
+letters that can be used.  Unfortunately, this means you cannot use a slash in
+a word.  Thus "TCP/IP" cannot be a word.  To work around that you can define a
+replacement character for the slash.  Example:
+
+	SLASH , ~
+
+Now you can use "TCP,IP" to add the word "TCP/IP".
+
+Of course, the letter used should itself not appear in any word!  The letter
+must be ASCII, thus a single byte.
+
+
+KEEP-CASE WORDS						*spell-affix-KEP*
+
 In the affix file a KEP line can be used to define the affix name used for
 keep-case words.  Example:
 
@@ -727,8 +779,8 @@
 See above for an example |spell-affix-vim|.
 
 
-RARE WORDS
-							*spell-affix-RAR*
+RARE WORDS						*spell-affix-RAR*
+
 In the affix file a RAR line can be used to define the affix name used for
 rare words.  Example:
 
@@ -740,8 +792,8 @@
 highlighted as rare.
 
 
-BAD WORDS
-							*spell-affix-BAD*
+BAD WORDS						*spell-affix-BAD*
+
 In the affix file a BAD line can be used to define the affix name used for
 bad words.  Example:
 
@@ -756,6 +808,125 @@
 word as good.
 
 
+COMPOUND WORDS						*spell-affix-compound*
+
+A compound word is a longer word made by concatenating words.  To specify
+which words may be concatenated a character is used.  This character is put in
+the list of affixes after the word.  We will call this character a flag here.
+Obviously these flags must be different from any affix IDs used.
+
+							*spell-COMPOUNDFLAG*
+The Myspell compatible method uses one flag, specified with COMPOUNDFLAG.
+All words with this flag combine in any order and without limit in length.
+This means there is no control over which word comes first.  Example:
+	COMPOUNDFLAG c ~
+
+							*spell-COMPOUNDFLAGS*
+The method added by Vim allows specifying which words can be prepended to
+other words, and which words can be appended to other words.  This is a list
+of comma separated items.  Each item may contain zero or more dashes and plus
+signs.
+
+NOTE: At this moment COMPOUNDFLAGS has not been implemented yet!
+
+An item without dashes specifies words that combine in any order and as often
+as possible.  Example:
+	COMPOUNDFLAGS c,m ~
+
+This allows all words with the "c" flag to be combined and all words with the
+"m" flag to be combined, but a word with the "c" flag doesn't combine with a
+word with the "m" flag.
+
+Flags that are put together, without a separating comma, are considered
+interchangable.  Example:
+	COMPOUNDFLAGS cm ~
+
+This allows all words with the "c" and/or "m" flag to be combined.
+
+An item with one dash specifies flags for a leading word and flags for a
+trailing word.  Thus only two-word combinations are made.  Example:
+	COMPOUNDFLAGS f-d ~
+
+Here the 'f' flag can be used for food and 'd' for dishes, such that you can
+use these words in the dictionary:
+	tomato/f ~
+	onion/f~
+	soup/d~
+	salat/d~
+
+Which makes the words:
+	tomato
+	onion
+	soup
+	salat
+	tomatosoup
+	tomatosalat
+	onionsoup
+	onionsalat
+
+Note that something like "souptomato" is not possible.  And that it's actually
+easier to list all the words if you have only this few.
+
+More dashes can be used to allow more words to combine.  For example:
+	COMPOUNDFLAGS f-d,f-f-d ~
+
+Would allow "tomatoonionsoup" (OK, so this is a bad example, but you get the
+idea).
+
+When a word can be used an undetermined number of times use a plus instead of
+a dash.  Example:
+	COMPOUNDFLAGS f+d ~
+
+Then you can make tasty "oniononiontomatotomatosoup".
+
+The "+" may also appear at the end, which means that the last flags can be
+repeated many times.  Example:
+	COMPOUNDFLAGS f-d+ ~
+
+Which allows the use of "onionsoupsoupsoupsoupsoupsoup".
+
+							*spell-COMPOUNDMIN*
+The minimal length of a word used for concatenation is specified with
+COMPOUNDMIN.  Example:
+	COMPOUNDMIN 5 ~
+
+When omitted a minimal length of 3 bytes is used.  Obviously you could just
+leave out the compound flag from short words instead, this feature is present
+for compatibility with Myspell.
+
+							*spell-CMP*
+NOTE: At this moment CMP has not been implemented yet!
+
+Sometimes it is necessary to change a word when concatenating it to another,
+by removing a few letters, inserting something or both.  It can also be useful
+to restrict concatenation to words that match a pattern.  For this purpose CMP
+items can be used.  They look like this:
+	CMP {flag} {strip} {add} {cond} {cond2}
+
+	{flag}		the flag, as used in COMPOUNDFLAGS for the lead word
+	{strip}		text to remove from the end of the lead word (zero
+			for no stripping)
+	{add}		text to insert between the words (zero for no
+			addition)
+	{cond}		condition to match at the end of the lead word
+	{cond2}		condition to match at the start of the following word
+
+This is exactly the same as what is used for SFX and PFX items, except there
+is an extra condition.  Example:
+	CMP f 0 - . . ~
+
+When used with the food and dish word list above, this means that a dash is
+inserted after each food item.  Thus you get "onion-soup" and
+"onion-tomato-salat".
+
+When there are CMP items for a compound flag the concatenation is only done
+when a CMP item matches.
+
+When there are no CMP items for a compound flag, then all words will be
+concatenated, as if there was an item:
+	CMP {flag} 0 0 . .
+
+
 REPLACEMENTS						*spell-affix-REP*
 
 In the affix file REP items can be used to define common mistakes.  This is
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 3643f7a..04e76db 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 11
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2234,7 +2234,7 @@
 (Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
 
 
-SH						*sh.vim* *sh-syntax*
+SH			*sh.vim* *sh-syntax* *bash-syntax* *ksh-syntax*
 
 This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
 
@@ -3647,6 +3647,7 @@
 result is like this single command has been used: >
    :hi Comment	term=bold ctermfg=Cyan guifg=#80a0ff gui=bold
 <
+						    	*:highlight-verbose*
 When listing a highlight group and 'verbose' is non-zero, the listing will
 also tell where it was last set.  Example: >
 	:verbose hi Comment
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 13f3073..18f6088 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2014,6 +2014,7 @@
 :highlight-default	syntax.txt	/*:highlight-default*
 :highlight-link	syntax.txt	/*:highlight-link*
 :highlight-normal	syntax.txt	/*:highlight-normal*
+:highlight-verbose	syntax.txt	/*:highlight-verbose*
 :history	cmdline.txt	/*:history*
 :history-indexing	cmdline.txt	/*:history-indexing*
 :i	insert.txt	/*:i*
@@ -2124,6 +2125,7 @@
 :map-silent	map.txt	/*:map-silent*
 :map-special-keys	map.txt	/*:map-special-keys*
 :map-undo	map.txt	/*:map-undo*
+:map-verbose	map.txt	/*:map-verbose*
 :map_l	map.txt	/*:map_l*
 :map_l!	map.txt	/*:map_l!*
 :mapc	map.txt	/*:mapc*
@@ -4242,6 +4244,7 @@
 bar	motion.txt	/*bar*
 bars	help.txt	/*bars*
 base_font_name_list	mbyte.txt	/*base_font_name_list*
+bash-syntax	syntax.txt	/*bash-syntax*
 basic-syntax	syntax.txt	/*basic-syntax*
 basic.vim	syntax.txt	/*basic.vim*
 beep	options.txt	/*beep*
@@ -5205,7 +5208,6 @@
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
-help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5532,6 +5534,7 @@
 keypad-point	intro.txt	/*keypad-point*
 keys()	eval.txt	/*keys()*
 known-bugs	todo.txt	/*known-bugs*
+ksh-syntax	syntax.txt	/*ksh-syntax*
 l	motion.txt	/*l*
 l:var	eval.txt	/*l:var*
 lace-syntax	syntax.txt	/*lace-syntax*
@@ -6372,6 +6375,9 @@
 special-buffers	windows.txt	/*special-buffers*
 speed-up	tips.txt	/*speed-up*
 spell	spell.txt	/*spell*
+spell-COMPOUNDFLAG	spell.txt	/*spell-COMPOUNDFLAG*
+spell-COMPOUNDFLAGS	spell.txt	/*spell-COMPOUNDFLAGS*
+spell-COMPOUNDMIN	spell.txt	/*spell-COMPOUNDMIN*
 spell-affix-BAD	spell.txt	/*spell-affix-BAD*
 spell-affix-FOL	spell.txt	/*spell-affix-FOL*
 spell-affix-KEP	spell.txt	/*spell-affix-KEP*
@@ -6383,10 +6389,12 @@
 spell-affix-REP	spell.txt	/*spell-affix-REP*
 spell-affix-SAL	spell.txt	/*spell-affix-SAL*
 spell-affix-SFX	spell.txt	/*spell-affix-SFX*
+spell-affix-SLASH	spell.txt	/*spell-affix-SLASH*
 spell-affix-SOFOFROM	spell.txt	/*spell-affix-SOFOFROM*
 spell-affix-SOFOTO	spell.txt	/*spell-affix-SOFOTO*
 spell-affix-UPP	spell.txt	/*spell-affix-UPP*
 spell-affix-chars	spell.txt	/*spell-affix-chars*
+spell-affix-compound	spell.txt	/*spell-affix-compound*
 spell-affix-mbyte	spell.txt	/*spell-affix-mbyte*
 spell-affix-vim	spell.txt	/*spell-affix-vim*
 spell-dic-format	spell.txt	/*spell-dic-format*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 8397b77..1f82ecc 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Aug 12
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Aug 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,6 +30,11 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Spelling:
+- suggestions for compound words.
+- Implement multiple flags for compound words.  Await comments from other
+  spell checking authors.
+
 Mac unicode patch (Da Woon Jung):
 - selecting proportional font breaks display
 - UTF-8 text causes display problems.  Font replacement causes this.
@@ -77,12 +82,26 @@
 	Use something like 'completefunc'?
 	runtime/complete/{filetype}.vim files?
 	In function arguments suggest variables of expected type.
+	List of completions is a Dictionary with items:
+	    complist[0]['text'] = completion text
+	    complist[0]['type'] = type of completion (e.g. function, var, arg)
+	    complist[0]['help'] = help text (e.g. function declaration)
+	    complist[0]['helpfunc'] = function that shows help text
+	    etc.
 
 	Ideas from others:
 	http://www.vim.org/scripts/script.php?script_id=747
+	    http://sourceforge.net/projects/insenvim
+		of http://insenvim.sourceforge.net
+	    Java, XML, HTML, C++, JSP, SQL, C#
+	    MS-Windows only, lots of dependencies (e.g. Perl, Internet
+		explorer), uses .dll shared libraries.
+	    for C++ uses $INCLUDE environment var
+	    UI: popup menu with list of alternatives, icon to indicate type
+		optional popup window with info about selected alternative
+	    Unrelated settings are changed (e.g. 'mousemodel').
+
 	www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
-	http://sourceforge.net/projects/insenvim
-	    of http://insenvim.sourceforge.net
 	IComplete: http://www.vim.org/scripts/script.php?script_id=1265
 	    and http://stud4.tuwien.ac.at/~e0125672/icomplete/
 	http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
@@ -2571,16 +2590,12 @@
 
 
 Mappings and Abbreviations:
-8   Let ":verbose map xx" report where the mapping was set, just like with
-    ":verbose set".
 8   When "0" is mapped (it is a movement command) this mapping should not be
     used after typing another number, e.g. "20l". (Charles Campbell)
     Is this possible without disabling the mapping of the following command?
 8   Should mapping <C-A> and <C-S-A> both work?
 7   ":abbr b byte", append "b " to an existing word still expands to "byte".
     This is Vi compatible, but can we avoid it anyway?
-8   ":verbose map" could show the script where the mapping was defined.
-    m_script_ID can be used.
 8   To make a mapping work with a prepended "x to select a register, store the
     last _typed_ register name and access it with "&.
 8   Add ":amap", like ":amenu".
@@ -2592,8 +2607,6 @@
 8   Allow mapping of CTRL-@ (anywhere in the LHS).
 8   Give a warning when using CTRL-C in the lhs of a mapping.  It will never
     (?) work.
-7   ":verbose map" should display where a mapping was defined, like ":verbose
-    set".
 8   Add a way to save a current mapping and restore it later.  Use a function
     that returns the mapping command to restore it: mapcmd()?  mapcheck() is
     not fool proof.  How to handle ambiguous mappings?
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 12f5ddf..a1c537f 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 12
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Aug 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -559,6 +559,11 @@
 For xterm most combinations of modifiers with function keys are recognized.
 |xterm-modifier-keys|
 
+When 'verbose' is set the output of ":highlight" will show where a highlight
+item was last set.
+When 'verbose' is set the output of ":map" will show where a key map was
+last defined. (Yegappan Lakshmanan)
+
 ==============================================================================
 IMPROVEMENTS						*improvements-7*
 
@@ -740,6 +745,7 @@
 The table with encodings has been expanded with many MS-Windows codepages,
 such as cp1250 and cp737, so that these can also be used on Unix without
 prepending "8bit-".
+When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part.
 
 Added the "customlist" completion argument to a user-defined command.  The
 user-defined completion function should return the completion candidates as a
@@ -752,9 +758,6 @@
 The 's' flag is added to the search() and searchpair() function to set the
 ' mark if the cursor is moved. (Yegappan Lakshmanan)
 
-When 'verbose' is set the output of ":highlight" will show where a highlight
-item was last set.
-
 For 'errorformat' it was not possible to have a file name that contains the
 character that follows after "%f".  For example, in "%f:%l:%m" the file name
 could not contain ":".  Now include the first ":" where the rest of the
@@ -1283,4 +1286,10 @@
 
 Win32: Could not use "**/" in 'path', it had to be "**\".
 
+The search pattern "\n" did not match at the end of the last line.
+
+Searching for a pattern backwards, starting on the NUL at the end of the line
+and 'encoding' is "utf-8" would match the pattern just before it incorrectly.
+Affected searchpair('/\*', '', '\*/').
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index d8fd0af..560c479 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Jul 13
+" Last Change:	2005 Aug 15
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1700,6 +1700,9 @@
 " Verilog HDL
 au BufNewFile,BufRead *.v			setf verilog
 
+" Verilog-AMS HDL
+au BufNewFile,BufRead *.va,*.vams		setf verilogams
+
 " VHDL
 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst  setf vhdl
 au BufNewFile,BufRead *.vhdl_[0-9]*		call s:StarSetf('vhdl')
diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim
index 32db5a7..59f601a 100644
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Debian Changelog
 " Maintainer:	Michael Piefel <piefel@informatik.hu-berlin.de>
-" Last Change:	23 March 2004
+" Last Change:	15 August 2005
 
 if exists("g:did_changelog_ftplugin")
   finish
@@ -30,7 +30,7 @@
     elseif exists("$EMAIL")
 	return $EMAIL
     elseif exists("g:debianemail")
-	return g:debianfullemail
+	return g:debianemail
     else
 	return "your@email.address"
     endif
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 7f7aa56..3e7a990 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -2,7 +2,7 @@
 " Language:	PHP
 " Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
 " URL:		http://www.2072productions.com/vim/indent/php.vim
-" Last Change: 2005 June 30th
+" Last Change: 2005 Aug 15
 " Version: 1.17
 "
 " For a complete change log and lots of comments in the code, download the script on
diff --git a/runtime/spell/af/af_ZA.diff b/runtime/spell/af/af_ZA.diff
new file mode 100644
index 0000000..9c85804
--- /dev/null
+++ b/runtime/spell/af/af_ZA.diff
@@ -0,0 +1,36 @@
+*** af_ZA.orig.aff	Sun Aug 14 17:37:01 2005
+--- af_ZA.aff	Sun Aug 14 17:38:11 2005
+***************
+*** 23,24 ****
+--- 23,34 ----
+  
++ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
++ MIDWORD	'-
++ SLASH ,
++ 
+  MAP 3
+*** af_ZA.orig.dic	Sun Aug 14 17:37:01 2005
+--- af_ZA.dic	Sun Aug 14 17:38:54 2005
+***************
+*** 1861,1864 ****
+  T-skyf
+! TCP/IP
+! TCP/IP-bondel
+  TLA
+--- 1861,1864 ----
+  T-skyf
+! TCP,IP
+! TCP,IP-bondel
+  TLA
+***************
+*** 124109,124111 ****
+  vrywilliglik
+- vt
+  vuile/R
+--- 124109,124110 ----
diff --git a/runtime/spell/af/main.aap b/runtime/spell/af/main.aap
new file mode 100644
index 0000000..d393c5f
--- /dev/null
+++ b/runtime/spell/af/main.aap
@@ -0,0 +1,79 @@
+# Aap recipe for Afrikaans Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = af_ZA.aff af_ZA.dic
+
+all: $SPELLDIR/af.latin1.spl $SPELLDIR/af.utf-8.spl ../README_af.txt
+
+$SPELLDIR/af.latin1.spl : $VIM $FILES
+        :sys env LANG=af_ZA.ISO8859-1
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q
+
+$SPELLDIR/af.utf-8.spl : $VIM $FILES
+        :sys env LANG=af_ZA.UTF-8
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/af af_ZA" -c q
+
+../README_af.txt : README_af_ZA.txt
+        :copy $source $target
+
+#
+# Fetching the file from SourceForge.  The archive at OpenOffice is broken!
+#
+FILE = http://surfnet.dl.sourceforge.net/sourceforge/translate/myspell-af_ZA-20040727.zip
+
+:attr {fetch = $FILE} af_ZA.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+af_ZA.aff af_ZA.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch af_ZA.zip
+        :sys $UNZIP af_ZA.zip
+        :delete af_ZA.zip
+        @if not os.path.exists('af_ZA.orig.aff'):
+            :copy af_ZA.aff af_ZA.orig.aff
+        @if not os.path.exists('af_ZA.orig.dic'):
+            :copy af_ZA.dic af_ZA.orig.dic
+        @if os.path.exists('af_ZA.diff'):
+            :sys patch <af_ZA.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 af_ZA.orig.aff af_ZA.aff >af_ZA.diff
+        :sys {force} diff -a -C 1 af_ZA.orig.dic af_ZA.dic >>af_ZA.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch af_ZA.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../af_ZA.zip
+            :sys {force} diff ../af_ZA.orig.aff af_ZA.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy af_ZA.aff ../af_ZA.new.aff
+            :sys {force} diff ../af_ZA.orig.dic af_ZA.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy af_ZA.dic ../af_ZA.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete af_ZA.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/bg/bg_BG.diff b/runtime/spell/bg/bg_BG.diff
new file mode 100644
index 0000000..da0a4f3
--- /dev/null
+++ b/runtime/spell/bg/bg_BG.diff
@@ -0,0 +1,42 @@
+*** bg_BG.orig.aff	Sun Aug 14 18:12:44 2005
+--- bg_BG.aff	Sun Aug 14 18:13:12 2005
+***************
+*** 1,2 ****
+! SET microsoft-cp1251
+  TRY àåíîèðòâñëêìïçäÿóúá÷ãöæõøôéùþüÀÅÍÎÈÐÒÂÑËÊÌÏÇÄßÓÚÁ×ÃÖÆÕØÔÉÙÞÜ
+--- 1,2 ----
+! SET cp1251
+  TRY àåíîèðòâñëêìïçäÿóúá÷ãöæõøôéùþüÀÅÍÎÈÐÒÂÑËÊÌÏÇÄßÓÚÁ×ÃÖÆÕØÔÉÙÞÜ
+***************
+*** 1682,1684 ****
+  
+! MAP 26
+  MAP àúüa
+--- 1682,1684 ----
+  
+! MAP 25
+  MAP àúüa
+***************
+*** 1691,1695 ****
+  MAP æø
+! MAP çñ
+  MAP pð
+- MAP cñ
+  MAP xõ
+--- 1691,1694 ----
+  MAP æø
+! MAP cçñ
+  MAP pð
+  MAP xõ
+***************
+*** 1707,1709 ****
+  MAP PÐ
+- MAP YÓ
+  MAP XÕ
+--- 1706,1711 ----
+  MAP PÐ
+  MAP XÕ
++ 
++ REP 2
++ REP Y Ó
++ REP Ó Y
diff --git a/runtime/spell/bg/main.aap b/runtime/spell/bg/main.aap
new file mode 100644
index 0000000..7849526
--- /dev/null
+++ b/runtime/spell/bg/main.aap
@@ -0,0 +1,79 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = bg_BG.aff bg_BG.dic
+
+all: $SPELLDIR/bg.cp1251.spl $SPELLDIR/bg.utf-8.spl ../README_bg.txt
+
+$SPELLDIR/bg.cp1251.spl : $VIM $FILES
+        :sys env LANG=bg_BG.CP1251 $VIM -u NONE -e -c "mkspell! $SPELLDIR/bg bg_BG" -c q
+
+$SPELLDIR/bg.utf-8.spl : $VIM $FILES
+        :sys env LANG=bg_BG.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/bg bg_BG" -c q
+
+../README_bg.txt: README_bg_BG.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} bg_BG.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+bg_BG.aff bg_BG.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch bg_BG.zip
+        :sys $UNZIP bg_BG.zip
+        :delete bg_BG.zip
+        :sys $VIM bg_BG.aff -c "set ff=unix" -c "update" -c q
+        :sys $VIM bg_BG.dic -c "set ff=unix" -c "update" -c q
+        @if not os.path.exists('bg_BG.orig.aff'):
+            :copy bg_BG.aff bg_BG.orig.aff
+        @if not os.path.exists('bg_BG.orig.dic'):
+            :copy bg_BG.dic bg_BG.orig.dic
+        @if os.path.exists('bg_BG.diff'):
+            :sys patch <bg_BG.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 bg_BG.orig.aff bg_BG.aff >bg_BG.diff
+        :sys {force} diff -a -C 1 bg_BG.orig.dic bg_BG.dic >>bg_BG.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch bg_BG.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../bg_BG.zip
+            :sys {force} diff ../bg_BG.orig.aff bg_BG.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy bg_BG.aff ../bg_BG.new.aff
+            :sys {force} diff ../bg_BG.orig.dic bg_BG.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy bg_BG.dic ../bg_BG.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete bg_BG.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/ca/ca_ES.diff b/runtime/spell/ca/ca_ES.diff
new file mode 100644
index 0000000..dda3b0a
--- /dev/null
+++ b/runtime/spell/ca/ca_ES.diff
@@ -0,0 +1,76 @@
+*** ca_ES.orig.aff	Sat Aug 13 18:01:36 2005
+--- ca_ES.aff	Sat Aug 13 18:01:32 2005
+***************
+*** 44,48 ****
+  
+! # substitucions preferides
+! FIRST a/à e/é/è é/è/e è/é/e i/í/ï í/i/ï o/ó/ò ó/ò/o ò/ó/o u/ú/ü ú/u/ü ü/u/ú
+! FIRST l/l·l l·l/l
+  
+--- 44,65 ----
+  
+! FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+! 
+! SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
+! SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
+! 
+! MIDWORD	·-'
+! 
+! MAP 6
+! MAP aàáâãäå
+! MAP eèéêë
+! MAP iìíîï
+! MAP oòóôõö
+! MAP uùúûü
+! MAP cç
+! 
+! REP 2
+! REP l l·l
+! REP l·l l
+  
+*** ca_ES.orig.dic	Sat Aug 13 18:01:55 2005
+--- ca_ES.dic	Sat Aug 13 18:01:51 2005
+***************
+*** 25312,25314 ****
+  caos/E
+- cap
+  cap-rodo/E
+--- 25312,25313 ----
+***************
+*** 35103,35105 ****
+  corrasió/G
+- corre
+  corre-corrents
+--- 35102,35103 ----
+***************
+*** 99806,99808 ****
+  majúscul/F
+- mal
+  mal-llevat/E
+--- 99804,99805 ----
+***************
+*** 107517,107519 ****
+  notòriament
+- nou
+  nou-centes/E
+--- 107514,107515 ----
+***************
+*** 122687,122689 ****
+  ratània/E
+- rau
+  rau-rau/E
+--- 122683,122684 ----
+***************
+*** 139389,139391 ****
+  taüt/E
+- te
+  te'l
+--- 139384,139385 ----
+***************
+*** 147590,147592 ****
+  vitícola/E
+- viu
+  viu-viu/E
+--- 147584,147585 ----
diff --git a/runtime/spell/ca/main.aap b/runtime/spell/ca/main.aap
new file mode 100644
index 0000000..b2f7350
--- /dev/null
+++ b/runtime/spell/ca/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Catelan (Spain) Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = ca_ES.aff ca_ES.dic
+
+all: $SPELLDIR/ca.latin1.spl $SPELLDIR/ca.utf-8.spl ../README_ca.txt
+
+$SPELLDIR/ca.latin1.spl : $VIM $FILES
+        :sys env LANG=ca_ES.ISO8859-1
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q
+
+$SPELLDIR/ca.utf-8.spl : $VIM $FILES
+        :sys env LANG=ca_ES.UTF-8
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/ca ca_ES" -c q
+
+../README_ca.txt : README_ca_ES.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} ca_ES.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# Make sure the files are in Unix fileformat
+ca_ES.aff ca_ES.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch ca_ES.zip
+        :sys $UNZIP ca_ES.zip
+        :delete ca_ES.zip
+        :sys $VIM ca_ES.aff -c "set ff=unix" -c "update" -c q
+        :sys $VIM ca_ES.dic -c "set ff=unix" -c "update" -c q
+        @if not os.path.exists('ca_ES.orig.aff'):
+            :copy ca_ES.aff ca_ES.orig.aff
+        @if not os.path.exists('ca_ES.orig.dic'):
+            :copy ca_ES.dic ca_ES.orig.dic
+        @if os.path.exists('ca_ES.diff'):
+            :sys patch <ca_ES.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 ca_ES.orig.aff ca_ES.aff >ca_ES.diff
+        :sys {force} diff -a -C 1 ca_ES.orig.dic ca_ES.dic >>ca_ES.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch ca_ES.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../ca_ES.zip
+            :sys {force} diff ../ca_ES.orig.aff ca_ES.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy ca_ES.aff ../ca_ES.new.aff
+            :sys {force} diff ../ca_ES.orig.dic ca_ES.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy ca_ES.dic ../ca_ES.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete ca_ES.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/cs/cs_CZ.diff b/runtime/spell/cs/cs_CZ.diff
new file mode 100644
index 0000000..40a84ef
--- /dev/null
+++ b/runtime/spell/cs/cs_CZ.diff
@@ -0,0 +1,783 @@
+*** cs_CZ.orig.aff	Sat Aug 13 21:38:29 2005
+--- cs_CZ.aff	Sat Aug 13 23:29:13 2005
+***************
+*** 3,4 ****
+--- 3,8 ----
+  
++ FOL ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ¡¢£¥¦¨©ª«¬®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
+  PFX N Y 1
+***************
+*** 2118,2120 ****
+  SFX A   nout        ly         [aeiouyáéíóúýùì]rnout
+! SFX A   nout        l          [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl][^aeiouy
+  SFX A   nout        l          [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl]nout
+--- 2122,2124 ----
+  SFX A   nout        ly         [aeiouyáéíóúýùì]rnout
+! SFX A   nout        l          [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl][^aeiouy]out
+  SFX A   nout        l          [aeiouyáéíóúýùìr][^aeiouyáéíóúýùìrl]nout
+*** cs_CZ.orig.dic	Sat Aug 13 21:38:29 2005
+--- cs_CZ.dic	Sun Aug 14 15:33:38 2005
+***************
+*** 2944,2946 ****
+  ar/H
+- arch
+  archaický/YCRN
+--- 2944,2945 ----
+***************
+*** 3098,3100 ****
+  arogantní/YKRN
+- aroma
+  aroma/K
+--- 3097,3098 ----
+***************
+*** 4753,4755 ****
+  banjo/MQ
+- bank
+  banka/ZQ
+--- 4751,4752 ----
+***************
+*** 5540,5542 ****
+  Bechyòákùv/Y
+- Bechynì
+  Bechynì/S
+--- 5537,5538 ----
+***************
+*** 5945,5947 ****
+  bermudský/YRN
+- Bermudy
+  Bermudy/ZQ
+--- 5941,5942 ----
+***************
+*** 6111,6113 ****
+  Beustùv/Y
+- bez
+  Bezáková/Y
+--- 6106,6107 ----
+***************
+*** 7294,7296 ****
+  blána/Z
+- Blanc
+  Blanc/PV
+--- 7288,7289 ----
+***************
+*** 9456,9458 ****
+  bøichovitý/YKR
+- bøímì
+  bøímì/M
+--- 9449,9450 ----
+***************
+*** 9667,9669 ****
+  budy¹ínský/Y
+- bufet
+  bufetáøèin/Y
+--- 9659,9660 ----
+***************
+*** 9677,9679 ****
+  bufferový/YRN
+- buffet
+  buffet/H
+--- 9668,9669 ----
+***************
+*** 11386,11388 ****
+  cop/H
+- copyright
+  copyright/H
+--- 11376,11377 ----
+***************
+*** 11446,11448 ****
+  cresc
+- crescendo
+  crescendo/MQ
+--- 11435,11436 ----
+***************
+*** 13810,13812 ****
+  daktylus/Q
+- dál
+  dalajláma/PV
+--- 13798,13799 ----
+***************
+*** 13816,13818 ****
+  dál/E
+- dále
+  Dalecký/Y
+--- 13803,13804 ----
+***************
+*** 13821,13823 ****
+  dále/E
+- daleko
+  dalekohled/H
+--- 13807,13808 ----
+***************
+*** 14082,14084 ****
+  datla
+- datle
+  datlech
+--- 14067,14068 ----
+***************
+*** 14756,14758 ****
+  dekuraèní/YRN
+- dìl
+  delaborace/Z
+--- 14740,14741 ----
+***************
+*** 15301,15303 ****
+  desaterákùv/Y
+- desatero
+  desatero/MQ
+--- 15284,15285 ----
+***************
+*** 15716,15718 ****
+  devaterník/H
+- devatero
+  devatero/MQ
+--- 15698,15699 ----
+***************
+*** 16152,16154 ****
+  DIK
+- dík
+  dikalciumfosfát/H
+--- 16133,16134 ----
+***************
+*** 16603,16605 ****
+  Diùv/Y
+- div
+  divácký/YKR
+--- 16583,16584 ----
+***************
+*** 19886,19888 ****
+  dopola
+- dopoledne
+  dopoledne/M
+--- 19865,19866 ----
+***************
+*** 19970,19972 ****
+  doprat/ATN
+- doprava
+  doprava/ZQ
+--- 19948,19949 ----
+***************
+*** 22912,22914 ****
+  døív/E
+- døíve
+  døíveèko/MQ
+--- 22889,22890 ----
+***************
+*** 26369,26371 ****
+  fakoemulsifikace/Z
+- faksimile
+  faksimile/Z
+--- 26345,26346 ----
+***************
+*** 27266,27268 ****
+  fimóza/ZQ
+- finále
+  finále/Z
+--- 27241,27242 ----
+***************
+*** 28101,28103 ****
+  foxtrotový/Y
+- foyer
+  foyer/H
+--- 28075,28076 ----
+***************
+*** 28759,28761 ****
+  Gajdùv/Y
+- Gal
+  gal
+--- 28732,28733 ----
+***************
+*** 29060,29062 ****
+  gemovat/ATN
+- gen
+  genciánový/YR
+--- 29032,29033 ----
+***************
+*** 29410,29412 ****
+  glejt/H
+- glissando
+  glissando/MQ
+--- 29381,29382 ----
+***************
+*** 31247,31249 ****
+  hefebrand/H
+- Hegel
+  Hegela
+--- 31217,31218 ----
+***************
+*** 31602,31604 ****
+  Herkulem
+- Herkules
+  Herkules/D
+--- 31571,31572 ----
+***************
+*** 32258,32260 ****
+  hloubìtínský/Y
+- hloubi
+  hloubicí/Y
+--- 32226,32227 ----
+***************
+*** 32612,32614 ****
+  Hocký/Y
+- hod
+  Hodìjice/C
+--- 32579,32580 ----
+***************
+*** 33069,33071 ****
+  homoisoflavonoid/H
+- Homola
+  Homola/PV
+--- 33035,33036 ----
+***************
+*** 34389,34391 ****
+  høebelec/S
+- høeben
+  høebenatka/ZQ
+--- 34354,34355 ----
+***************
+*** 34817,34819 ****
+  Huserkùv/Y
+- husí
+  husice/ZQ
+--- 34781,34782 ----
+***************
+*** 36441,36443 ****
+  chøupavý/YKRN
+- chtì
+  chtìje/XN
+--- 36404,36405 ----
+***************
+*** 38569,38571 ****
+  jajaj
+- jak
+  jakákoli
+--- 38531,38532 ----
+***************
+*** 39323,39325 ****
+  jedné/N
+- jedni
+  jednice/ZQ
+--- 39284,39285 ----
+***************
+*** 39534,39536 ****
+  jednotýdenní/YR
+- jednou
+  jednoúèelový/YRN
+--- 39494,39495 ----
+***************
+*** 39717,39719 ****
+  jemu¾
+- jen
+  Jena/ZQ
+--- 39676,39677 ----
+***************
+*** 39755,39757 ****
+  jen/N
+- jenom
+  jenom/N
+--- 39713,39714 ----
+***************
+*** 40149,40151 ****
+  jináè/S
+- jinak
+  jinak/N
+--- 40106,40107 ----
+***************
+*** 41317,41319 ****
+  Kalistùv/Y
+- Kali¹
+  kalí¹ek/Q
+--- 41273,41274 ----
+***************
+*** 42861,42863 ****
+  kde¾to
+- kdo
+  kdojíjak
+--- 42816,42817 ----
+***************
+*** 44048,44050 ****
+  Klsákùv/Y
+- klub
+  klubající/YN
+--- 44002,44003 ----
+***************
+*** 44235,44237 ****
+  Kneøùv/Y
+- knìz
+  knìze
+--- 44188,44189 ----
+***************
+*** 45007,45009 ****
+  kolik
+- kolika
+  kolikaciferný/YKRN
+--- 44959,44960 ----
+***************
+*** 46292,46294 ****
+  kontinuum/MQ
+- konto
+  kontokorent/H
+--- 46243,46244 ----
+***************
+*** 47152,47154 ****
+  kosmopolitùv/Y
+- kosmos
+  kosmos/Q
+--- 47102,47103 ----
+***************
+*** 51844,51846 ****
+  Leclancheùv/Y
+- leè
+  léèba/ZQ
+--- 51793,51794 ----
+***************
+*** 52449,52451 ****
+  le¹tivý/YKRN
+- let
+  létací/YN
+--- 52397,52398 ----
+***************
+*** 54351,54353 ****
+  lùj
+- luk
+  Lukáèová/Y
+--- 54298,54299 ----
+***************
+*** 55408,55410 ****
+  Mallorca/ZQ
+- málo
+  malobur¾oasie/Z
+--- 55354,55355 ----
+***************
+*** 55574,55576 ****
+  mamutùv/Y
+- Man
+  má/N
+--- 55519,55520 ----
+***************
+*** 55852,55854 ****
+  Maputo/MQ
+- marabu
+  marabu/PV
+--- 55796,55797 ----
+***************
+*** 57254,57256 ****
+  Mendlùv/Y
+- ménì
+  ménìcennìj¹í/YRW
+--- 57197,57198 ----
+***************
+*** 58358,58360 ****
+  milený/YN
+- milerád
+  milerád/O
+--- 58300,58301 ----
+***************
+*** 59426,59428 ****
+  mocím
+- mocipán
+  mocipána
+--- 59367,59368 ----
+***************
+*** 60833,60835 ****
+  Muchùv/Y
+- mùj
+  mùj/Y
+--- 60773,60774 ----
+***************
+*** 62308,62310 ****
+  nadplocha/ZQ
+- nadpoèet
+  nadpoèetnìj¹í/YRW
+--- 62247,62248 ----
+***************
+*** 66114,66116 ****
+  nava¾ující/YN
+- naveèer
+  naveèer/L
+--- 66052,66053 ----
+***************
+*** 66581,66583 ****
+  nebes
+- nebesa
+  nebesa/MQ
+--- 66518,66519 ----
+***************
+*** 68080,68082 ****
+  noblesní/YKR
+- noc
+  nocemi
+--- 68016,68017 ----
+***************
+*** 68562,68564 ****
+  novum/MQ
+- Nový
+  Nový/Y
+--- 68497,68498 ----
+***************
+*** 73018,73020 ****
+  odpojovávat/JTN
+- odpoledne
+  odpoledne/M
+--- 72952,72953 ----
+***************
+*** 73121,73123 ****
+  odpra¹ovat/ATN
+- odprava
+  odprava/ZQ
+--- 73054,73055 ----
+***************
+*** 76145,76147 ****
+  oosféra/ZQ
+- op
+  opáèení/SN
+--- 76077,76078 ----
+***************
+*** 78040,78042 ****
+  ostøihnout/ATN
+- Ostøihom
+  Ostøihom/K
+--- 77971,77972 ----
+***************
+*** 80117,80121 ****
+  pantheistický/YCR
+- pantofel
+  pantofel/Q
+- pantofle
+  pantoflemi
+--- 80047,80049 ----
+***************
+*** 80258,80260 ****
+  par
+- pár
+  paraamfibolit/H
+--- 80186,80187 ----
+***************
+*** 81414,81416 ****
+  PE
+- pec
+  pecaø/U
+--- 81341,81342 ----
+***************
+*** 82720,82722 ****
+  pianistùv/Y
+- piano
+  piáno/MQ
+--- 82646,82647 ----
+***************
+*** 83321,83323 ****
+  pizzerie/Z
+- pizzicato
+  pizzicato/MQ
+--- 83246,83247 ----
+***************
+*** 83731,83733 ****
+  plebiscit/H
+- plebs
+  plebse
+--- 83655,83656 ----
+***************
+*** 83833,83835 ****
+  Pleskotùv/Y
+- plesky
+  plesky/H
+--- 83756,83757 ----
+***************
+*** 85861,85863 ****
+  podøadìní/SN
+- podøadìný
+  podøadìný/YKRN
+--- 85783,85784 ----
+***************
+*** 89077,89079 ****
+  popøávat/JN
+- popøedí
+  popøedí/S
+--- 88998,88999 ----
+***************
+*** 91358,91360 ****
+  pozabíjet/JTN
+- pozadí
+  pozadí/S
+--- 91278,91279 ----
+***************
+*** 91783,91785 ****
+  práceschopný/YKR
+- prací
+  práci
+--- 91702,91703 ----
+***************
+*** 92176,92178 ****
+  pravìký/YKR
+- právem
+  právem/N
+--- 92094,92095 ----
+***************
+*** 95377,95379 ****
+  prospávat/JTN
+- prospìch
+  prospìchání/SN
+--- 95294,95295 ----
+***************
+*** 105195,105197 ****
+  pùldenní/YR
+- pùldne
+  pùldnech
+--- 105111,105112 ----
+***************
+*** 105216,105218 ****
+  pùldruhý/Y
+- pùle
+  pulec/U
+--- 105131,105132 ----
+***************
+*** 106257,106259 ****
+  rámcový/YR
+- rámì
+  rámec/S
+--- 106171,106172 ----
+***************
+*** 109304,109306 ****
+  rozdìlující/YN
+- rozdíl
+  rozdílení/SN
+--- 109217,109218 ----
+***************
+*** 113029,113031 ****
+  Rúr/H
+- Rus
+  rusalèí/Y
+--- 112941,112942 ----
+***************
+*** 113124,113126 ****
+  ru¹tina/ZQ
+- Rút
+  Rùta/PV
+--- 113035,113036 ----
+***************
+*** 115104,115106 ****
+  scezovat/ATN
+- science
+  science/Z
+--- 115014,115015 ----
+***************
+*** 115723,115725 ****
+  sedmerèe/K
+- sedmero
+  sedmero/MQ
+--- 115632,115633 ----
+***************
+*** 116249,116251 ****
+  Sémùv/Y
+- sen
+  senaø/PI
+--- 116157,116158 ----
+***************
+*** 116962,116964 ****
+  se¹vindlovat/ATN
+- set
+  setba/ZQ
+--- 116869,116870 ----
+***************
+*** 117786,117788 ****
+  Sikùv/Y
+- sil
+  silácký/YKRN
+--- 117692,117693 ----
+***************
+*** 121635,121637 ****
+  spatný/YKR
+- spatra
+  spatra/ZQ
+--- 121540,121541 ----
+***************
+*** 121887,121889 ****
+  spí¹
+- spí¹e
+  spí¹e/E
+--- 121791,121792 ----
+***************
+*** 122323,122325 ****
+  spolupráce/N
+- spolupráci
+  spolupracích/N
+--- 122226,122227 ----
+***************
+*** 122890,122892 ****
+  srovnanìj¹í/YRW
+- srovnání
+  srovnání/SN
+--- 122792,122793 ----
+***************
+*** 129987,129989 ****
+  ¹unt/H
+- ¹up
+  ¹upácký/YKR
+--- 129888,129889 ----
+***************
+*** 130427,130429 ****
+  takovouto
+- takový
+  takovýchto
+--- 130327,130328 ----
+***************
+*** 131190,131192 ****
+  tem¾ský/Y
+- ten
+  tenata/MQ
+--- 131089,131090 ----
+***************
+*** 131958,131960 ****
+  tichý/YKRO
+- tik
+  tikající/YN
+--- 131856,131857 ----
+***************
+*** 132541,132543 ****
+  Tomaschùv/Y
+- Tomá¹
+  Tomá¹ek/PV
+--- 132438,132439 ----
+***************
+*** 133890,133892 ****
+  Trubská/Y
+- truc
+  truc/H
+--- 133786,133787 ----
+***************
+*** 134057,134059 ****
+  tøást/IN
+- tøeba
+  tøeba/N
+--- 133952,133953 ----
+***************
+*** 135024,135026 ****
+  tvrz/Z
+- tvùj
+  tvùj/Y
+--- 134918,134919 ----
+***************
+*** 135532,135534 ****
+  úèesový/YR
+- úèet
+  úèetnický/YRN
+--- 135425,135426 ----
+***************
+*** 139620,139622 ****
+  uzamknutí/SN
+- uzamknutý
+  uzamknutý/YKRN
+--- 139512,139513 ----
+***************
+*** 141624,141626 ****
+  Verdolùv/Y
+- vìren
+  vìren/N
+--- 141515,141516 ----
+***************
+*** 141651,141653 ****
+  vìr/N
+- vìrna
+  vìrna/N
+--- 141541,141542 ----
+***************
+*** 141663,141665 ****
+  Verne/Y
+- vìrni
+  vìrni/N
+--- 141552,141553 ----
+***************
+*** 141667,141669 ****
+  vernisá¾/Z
+- vìrno
+  vìrno/N
+--- 141555,141556 ----
+***************
+*** 141671,141676 ****
+  vernovka/ZQ
+- vìrnu
+  vìrnu/N
+  Vernùv/Y
+- vìrny
+  vìrny/N
+--- 141558,141561 ----
+***************
+*** 141924,141926 ****
+  vetknutí/SN
+- vetknutý
+  vetknutý/YKRN
+--- 141809,141810 ----
+***************
+*** 142117,142119 ****
+  vhloubený/YKRN
+- vhloubit
+  vhloubit/ATN
+--- 142001,142002 ----
+***************
+*** 144104,144106 ****
+  Voldánùv/Y
+- vole
+  volební/YR
+--- 143987,143988 ----
+***************
+*** 144409,144411 ****
+  Votýpkùv/Y
+- vous
+  vousáè/U
+--- 144291,144292 ----
+***************
+*** 144952,144954 ****
+  vrtulový/YR
+- vrub
+  vrub/H
+--- 144833,144834 ----
+***************
+*** 144979,144981 ****
+  vrývavý/YR
+- vrz
+  Vrzáèek/PV
+--- 144859,144860 ----
+***************
+*** 151330,151332 ****
+  vytknutí/SN
+- vytknutý
+  vytknutý/YRN
+--- 151209,151210 ----
+***************
+*** 151927,151929 ****
+  vyvrhnutí/SN
+- vyvrhnutý
+  vyvrhnutý/YKRN
+--- 151805,151806 ----
+***************
+*** 152435,152437 ****
+  vzdìlávat/JTN
+- vzdor
+  vzdor/H
+--- 152312,152313 ----
+***************
+*** 156040,156042 ****
+  zamknutí/SN
+- zamknutý
+  zamknutý/YKRN
+--- 155916,155917 ----
+***************
+*** 157795,157797 ****
+  zastonejte/N
+- zastoupení
+  zastoupení/SN
+--- 157670,157671 ----
+***************
+*** 160364,160366 ****
+  zebøí/Y
+- zebu
+  zebu/BN
+--- 160238,160239 ----
+***************
+*** 166409,166411 ****
+  ®muï
+- ¾nec
+  ¾nec/U
+--- 166282,166283 ----
diff --git a/runtime/spell/cs/main.aap b/runtime/spell/cs/main.aap
new file mode 100644
index 0000000..5ead6d0
--- /dev/null
+++ b/runtime/spell/cs/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = cs_CZ.aff cs_CZ.dic
+
+all: $SPELLDIR/cs.iso-8859-2.spl $SPELLDIR/cs.utf-8.spl \
+        $SPELLDIR/cs.cp1250.spl ../README_cs.txt
+
+$SPELLDIR/cs.iso-8859-2.spl : $VIM $FILES
+        :sys env LANG=cs_CZ.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+$SPELLDIR/cs.utf-8.spl : $VIM $FILES
+        :sys env LANG=cs_CZ.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+$SPELLDIR/cs.cp1250.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/cs cs_CZ" -c q
+
+../README_cs.txt: README_cs_CZ.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} cs_CZ.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+cs_CZ.aff cs_CZ.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch cs_CZ.zip
+        :sys $UNZIP cs_CZ.zip
+        :delete cs_CZ.zip
+        @if not os.path.exists('cs_CZ.orig.aff'):
+            :copy cs_CZ.aff cs_CZ.orig.aff
+        @if not os.path.exists('cs_CZ.orig.dic'):
+            :copy cs_CZ.dic cs_CZ.orig.dic
+        @if os.path.exists('cs_CZ.diff'):
+            :sys patch <cs_CZ.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 cs_CZ.orig.aff cs_CZ.aff >cs_CZ.diff
+        :sys {force} diff -a -C 1 cs_CZ.orig.dic cs_CZ.dic >>cs_CZ.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch cs_CZ.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../cs_CZ.zip
+            :sys {force} diff ../cs_CZ.orig.aff cs_CZ.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy cs_CZ.aff ../cs_CZ.new.aff
+            :sys {force} diff ../cs_CZ.orig.dic cs_CZ.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy cs_CZ.dic ../cs_CZ.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete cs_CZ.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/da/main.aap b/runtime/spell/da/main.aap
new file mode 100644
index 0000000..53e3716
--- /dev/null
+++ b/runtime/spell/da/main.aap
@@ -0,0 +1,78 @@
+# Aap recipe for French Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = da_DK.aff da_DK.dic
+
+all: $SPELLDIR/da.latin1.spl $SPELLDIR/da.utf-8.spl ../README_da.txt
+
+$SPELLDIR/da.latin1.spl : $VIM $FILES
+        :sys env LANG=da_DK.ISO8859-1
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/da da_DK" -c q
+
+$SPELLDIR/da.utf-8.spl : $VIM $FILES
+        :sys env LANG=da_DK.UTF-8
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/da da_DK" -c q
+
+../README_da.txt : README Copyright
+        :cat $source >! $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} da_DK.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+da_DK.aff da_DK.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch da_DK.zip
+        :sys $UNZIP da_DK.zip
+        :delete da_DK.zip
+        @if not os.path.exists('da_DK.orig.aff'):
+            :copy da_DK.aff da_DK.orig.aff
+        @if not os.path.exists('da_DK.orig.dic'):
+            :copy da_DK.dic da_DK.orig.dic
+        @if os.path.exists('da_DK.diff'):
+            :sys patch <da_DK.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 da_DK.orig.aff da_DK.aff >da_DK.diff
+        :sys {force} diff -a -C 1 da_DK.orig.dic da_DK.dic >>da_DK.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch da_DK.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../da_DK.zip
+            :sys {force} diff ../da_DK.orig.aff da_DK.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy da_DK.aff ../da_DK.new.aff
+            :sys {force} diff ../da_DK.orig.dic da_DK.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy da_DK.dic ../da_DK.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete da_DK.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/de/de_19.diff b/runtime/spell/de/de_19.diff
new file mode 100644
index 0000000..a807a8b
--- /dev/null
+++ b/runtime/spell/de/de_19.diff
@@ -0,0 +1,27 @@
+*** de_19.orig.aff	Mon Aug 15 22:45:35 2005
+--- de_19.aff	Mon Aug 15 22:54:10 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+  
++ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
++ MIDWORD	'
++ 
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++ 
+  
diff --git a/runtime/spell/de/de_20.diff b/runtime/spell/de/de_20.diff
new file mode 100644
index 0000000..432ad5f
--- /dev/null
+++ b/runtime/spell/de/de_20.diff
@@ -0,0 +1,28 @@
+*** de_20.orig.aff	Mon Aug 15 22:45:41 2005
+--- de_20.aff	Mon Aug 15 22:54:16 2005
+***************
+*** 2,3 ****
+--- 2,24 ----
+  TRY esianrtolcdugmphbyfvkwäüößáéêàâñESIANRTOLCDUGMPHBYFVKWÄÜÖ
++ 
++ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
++ MIDWORD	'
++ 
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++ 
+  #
diff --git a/runtime/spell/de/de_AT.diff b/runtime/spell/de/de_AT.diff
new file mode 100644
index 0000000..e13e4d5
--- /dev/null
+++ b/runtime/spell/de/de_AT.diff
@@ -0,0 +1,44 @@
+*** de_AT.orig.aff	Mon Aug 15 22:59:43 2005
+--- de_AT.aff	Mon Aug 15 23:00:25 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+  
++ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
++ MIDWORD	'
++ 
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++ 
+  
+*** de_AT.orig.dic	Mon Aug 15 22:59:43 2005
+--- de_AT.dic	Mon Aug 15 23:03:19 2005
+***************
+*** 18,20 ****
+  Fleischbänke/N
+- Fleischbank
+  Fleischhauer/NS
+--- 18,19 ----
+***************
+*** 151,153 ****
+  zulieb
+! 77857
+  Äbte/N
+--- 150,152 ----
+  zulieb
+! 
+  Äbte/N
diff --git a/runtime/spell/de/de_CH.diff b/runtime/spell/de/de_CH.diff
new file mode 100644
index 0000000..607f874
--- /dev/null
+++ b/runtime/spell/de/de_CH.diff
@@ -0,0 +1,27 @@
+*** de_CH.orig.aff	Mon Aug 15 22:45:43 2005
+--- de_CH.aff	Mon Aug 15 22:54:21 2005
+***************
+*** 3,4 ****
+--- 3,24 ----
+  
++ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
++ SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
++ SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
++ 
++ MIDWORD	'
++ 
++ MAP 9
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++ 
+  
diff --git a/runtime/spell/de/de_DE.diff b/runtime/spell/de/de_DE.diff
index 0d395e8..fe33b41 100644
--- a/runtime/spell/de/de_DE.diff
+++ b/runtime/spell/de/de_DE.diff
@@ -1,5 +1,5 @@
-*** de_DE.orig.aff	Fri Feb 25 12:50:10 2005
---- de_DE.aff	Sun Jul 31 22:15:49 2005
+*** de_DE.orig.aff	Mon Aug 15 22:45:33 2005
+--- de_DE.aff	Mon Aug 15 22:45:33 2005
 ***************
 *** 2,3 ****
 --- 2,24 ----
diff --git a/runtime/spell/de/main.aap b/runtime/spell/de/main.aap
index 80bfcea..df608e1 100644
--- a/runtime/spell/de/main.aap
+++ b/runtime/spell/de/main.aap
@@ -1,4 +1,13 @@
 # Aap recipe for German Vim spell files.
+#
+# Since there is a big discussion about whether to use the old or the new
+# spelling rules, both have been included.
+#    "de": all possible words allowed
+# "de_de": old and new German spelling
+# "de_19": old German spelling
+# "de_20": new German spelling
+# "de_AT": Austrian spelling
+# "de_CH": Swiss spelling
 
 # Use a freshly compiled Vim if it exists.
 @if os.path.exists('../../../src/vim'):
@@ -6,66 +15,170 @@
 @else:
     :progsearch VIM vim
 
-SPELLDIR = ..
-FILES    = de_DE.aff de_DE.dic
-ZIPFILE  = de_DE_comb.zip
+REGIONS = DE 19 20 AT CH
+DE_REGIONS = de_$*REGIONS
 
-all: $(SPELLDIR)/de.latin1.spl $(SPELLDIR)/de.utf-8.spl ../README_de.txt
+SPELLDIR   = ..
+FILES      = de_$*(REGIONS).aff de_$*(REGIONS).dic
 
-$(SPELLDIR)/de.latin1.spl : $(VIM) $(FILES)
+ZIPFILE_DE = de_DE_comb.zip
+ZIPFILE_19 = de_DE.zip
+ZIPFILE_20 = de_DE_neu.zip
+ZIPFILE_AT = de_AT.zip
+ZIPFILE_CH = de_CH.zip
+ZIPFILES   = $ZIPFILE_DE $ZIPFILE_19 $ZIPFILE_20 $ZIPFILE_AT $ZIPFILE_CH
+
+READMES    = README_de_$*(REGIONS).txt
+
+all: $SPELLDIR/de.latin1.spl $SPELLDIR/de.utf-8.spl ../README_de.txt
+
+$SPELLDIR/de.latin1.spl : $VIM $FILES
         :sys env LANG=de_DE.ISO8859-1
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q
 
-$(SPELLDIR)/de.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/de.utf-8.spl : $VIM $FILES
         :sys env LANG=de_DE.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/de de_DE" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q
 
-../README_de.txt: README_de_DE_comb.txt
-        :copy $source $target
+../README_de.txt: $READMES
+        :print de_DE (combined) >! $target
+        :cat README_de_DE.txt   >> $target
+        :print =================================================== >>$target
+        :print de_19 (old)      >> $target
+        :cat README_de_19.txt   >> $target
+        :print =================================================== >>$target
+        :print de_20 (new)      >> $target
+        :cat README_de_20.txt   >> $target
+        :print =================================================== >>$target
+        :print de_AT (Austria)  >> $target
+        :cat README_de_AT.txt   >> $target
+        :print =================================================== >>$target
+        :print de_CH (Swiss)    >> $target
+        :cat README_de_CH.txt   >> $target
 
 #
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} $(ZIPFILE)
+:attr {fetch = $OODIR/%file%} $ZIPFILES
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 de_DE.aff de_DE.dic: {buildcheck=}
         :assertpkg unzip patch
-        :fetch $(ZIPFILE)
-        :sys $(UNZIP) $(ZIPFILE)
-        :delete $(ZIPFILE)
+        :fetch $ZIPFILE_DE
+        :sys $UNZIP $ZIPFILE_DE
+        :delete $ZIPFILE_DE
         :move de_DE_comb.aff de_DE.aff
         :move de_DE_comb.dic de_DE.dic
+        :move README_de_DE_comb.txt README_de_DE.txt
         @if not os.path.exists('de_DE.orig.aff'):
-                :copy de_DE.aff de_DE.orig.aff
+            :copy de_DE.aff de_DE.orig.aff
         @if not os.path.exists('de_DE.orig.dic'):
-                :copy de_DE.dic de_DE.orig.dic
+            :copy de_DE.dic de_DE.orig.dic
         @if os.path.exists('de_DE.diff'):
             :sys patch <de_DE.diff
 
+de_19.aff de_19.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch $ZIPFILE_19
+        # Move the other files out of the way.
+        @if os.path.exists("de_DE.aff"):
+            :move de_DE.aff de_DE_comb.aff
+            :move de_DE.dic de_DE_comb.dic
+            :move README_de_DE.txt README_de_DE_comb.txt
+
+        :sys $UNZIP $ZIPFILE_19
+        :delete $ZIPFILE_19
+        :delete {f} de_AT.dic
+        :move de_DE.aff de_19.aff
+        :move de_DE.dic de_19.dic
+        :move README_de_DE.txt README_de_19.txt
+
+        @if os.path.exists("de_DE_comb.aff"):
+            :move de_DE_comb.aff de_DE.aff
+            :move de_DE_comb.dic de_DE.dic
+            :move README_de_DE_comb.txt README_de_DE.txt
+        @if not os.path.exists('de_19.orig.aff'):
+            :copy de_19.aff de_19.orig.aff
+        @if not os.path.exists('de_19.orig.dic'):
+            :copy de_19.dic de_19.orig.dic
+        @if os.path.exists('de_19.diff'):
+            :sys patch <de_19.diff
+
+de_20.aff de_20.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch $ZIPFILE_20
+        :sys $UNZIP $ZIPFILE_20
+        :delete $ZIPFILE_20
+        :move de_DE_neu.aff de_20.aff
+        :move de_DE_neu.dic de_20.dic
+        :move README_de_DE_neu.txt README_de_20.txt
+        @if not os.path.exists('de_20.orig.aff'):
+            :copy de_20.aff de_20.orig.aff
+        @if not os.path.exists('de_20.orig.dic'):
+            :copy de_20.dic de_20.orig.dic
+        @if os.path.exists('de_20.diff'):
+            :sys patch <de_20.diff
+
+# It appears de_AT.dic is only an additional file for another word list.  We
+# guess it's the old spelling one and concatenate them.  Complication is that
+# de_AT.dic is missing a newline at the end.
+de_AT.aff de_AT.dic: {buildcheck=} de_19.dic
+        :assertpkg unzip patch
+        :fetch $ZIPFILE_AT
+        :sys $UNZIP $ZIPFILE_AT
+        :delete $ZIPFILE_AT
+        :print >>de_AT.dic
+        :cat de_19.dic >>de_AT.dic
+        @if not os.path.exists('de_AT.orig.aff'):
+            :copy de_AT.aff de_AT.orig.aff
+        @if not os.path.exists('de_AT.orig.dic'):
+            :copy de_AT.dic de_AT.orig.dic
+        @if os.path.exists('de_AT.diff'):
+            :sys patch <de_AT.diff
+
+de_CH.aff de_CH.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch $ZIPFILE_CH
+        :sys $UNZIP $ZIPFILE_CH
+        :delete $ZIPFILE_CH
+        @if not os.path.exists('de_CH.orig.aff'):
+            :copy de_CH.aff de_CH.orig.aff
+        @if not os.path.exists('de_CH.orig.dic'):
+            :copy de_CH.dic de_CH.orig.dic
+        @if os.path.exists('de_CH.diff'):
+            :sys patch <de_CH.diff
+
 
 # Generate diff files, so that others can get the OpenOffice files and apply
 # the diffs to get the Vim versions.
-
 diff:
         :assertpkg diff
         :sys {force} diff -a -C 1 de_DE.orig.aff de_DE.aff >de_DE.diff
         :sys {force} diff -a -C 1 de_DE.orig.dic de_DE.dic >>de_DE.diff
+        :sys {force} diff -a -C 1 de_19.orig.aff de_19.aff >de_19.diff
+        :sys {force} diff -a -C 1 de_19.orig.dic de_19.dic >>de_19.diff
+        :sys {force} diff -a -C 1 de_20.orig.aff de_20.aff >de_20.diff
+        :sys {force} diff -a -C 1 de_20.orig.dic de_20.dic >>de_20.diff
+        :sys {force} diff -a -C 1 de_AT.orig.aff de_AT.aff >de_AT.diff
+        :sys {force} diff -a -C 1 de_AT.orig.dic de_AT.dic >>de_AT.diff
+        :sys {force} diff -a -C 1 de_CH.orig.aff de_CH.aff >de_CH.diff
+        :sys {force} diff -a -C 1 de_CH.orig.dic de_CH.dic >>de_CH.diff
 
 
 # Check for updated OpenOffice spell files.  When there are changes the
 # ".new.aff" and ".new.dic" files are left behind for manual inspection.
 
 check:
+        :print TODO!!!!
         :assertpkg unzip diff
-        :fetch $(ZIPFILE)
+        :fetch $ZIPFILE_DE
         :mkdir tmp
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../$(ZIPFILE)
+            :sys $UNZIP ../$ZIPFILE_DE
             :move de_DE_comb.aff de_DE.aff
             :move de_DE_comb.dic de_DE.dic
             :sys {force} diff ../de_DE.orig.aff de_DE.aff >d
@@ -77,7 +190,7 @@
         @finally:
             :cd ..
             :delete {r}{f}{q} tmp
-            :delete $(ZIPFILE)
+            :delete $ZIPFILE_DE
 
 
 # vim: set sts=4 sw=4 :
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index 73c59c7..c77ef9a 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index ed645b8..851f714 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index bb2bdb5..d6b7836 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/spell/en/main.aap b/runtime/spell/en/main.aap
index d466830..37a9ed1 100644
--- a/runtime/spell/en/main.aap
+++ b/runtime/spell/en/main.aap
@@ -13,21 +13,21 @@
            en_GB.aff en_GB.dic
            en_NZ.aff en_NZ.dic
 
-all: $(SPELLDIR)/en.latin1.spl $(SPELLDIR)/en.utf-8.spl \
-        $(SPELLDIR)/en.ascii.spl ../README_en.txt
+all: $SPELLDIR/en.latin1.spl $SPELLDIR/en.utf-8.spl \
+        $SPELLDIR/en.ascii.spl ../README_en.txt
 
-$(SPELLDIR)/en.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/en.latin1.spl : $VIM $FILES
         :sys env LANG=en_US.ISO8859-1
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/en
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/en
                         en_US en_AU en_CA en_GB en_NZ" -c q
 
-$(SPELLDIR)/en.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/en.utf-8.spl : $VIM $FILES
         :sys env LANG=en_US.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/en
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/en
                         en_US en_AU en_CA en_GB en_NZ" -c q
 
-$(SPELLDIR)/en.ascii.spl : $(VIM) $(FILES)
-        :sys $(VIM) -u NONE -e -c "mkspell! -ascii $(SPELLDIR)/en
+$SPELLDIR/en.ascii.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "mkspell! -ascii $SPELLDIR/en
                         en_US en_AU en_CA en_GB en_NZ" -c q
  
 ../README_en.txt: README_en_US.txt README_en_AU.txt
@@ -50,7 +50,7 @@
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} en_US.zip en_CA.zip en_NZ.zip
+:attr {fetch = $OODIR/%file%} en_US.zip en_CA.zip en_NZ.zip
                                 en_GB.zip en_AU.zip
 
 # The files don't depend on the .zip file so that we can delete it.
@@ -58,61 +58,61 @@
 en_US.aff en_US.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch en_US.zip
-        :sys $(UNZIP) en_US.zip
+        :sys $UNZIP en_US.zip
         :delete en_US.zip
         @if not os.path.exists('en_US.orig.aff'):
-                :copy en_US.aff en_US.orig.aff
+            :copy en_US.aff en_US.orig.aff
         @if not os.path.exists('en_US.orig.dic'):
-                :copy en_US.dic en_US.orig.dic
+            :copy en_US.dic en_US.orig.dic
         @if os.path.exists('en_US.diff'):
             :sys patch <en_US.diff
 
 en_AU.aff en_AU.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch en_AU.zip
-        :sys $(UNZIP) en_AU.zip
+        :sys $UNZIP en_AU.zip
         :delete en_AU.zip
         @if not os.path.exists('en_AU.orig.aff'):
-                :copy en_AU.aff en_AU.orig.aff
+            :copy en_AU.aff en_AU.orig.aff
         @if not os.path.exists('en_AU.orig.dic'):
-                :copy en_AU.dic en_AU.orig.dic
+            :copy en_AU.dic en_AU.orig.dic
         @if os.path.exists('en_AU.diff'):
             :sys patch <en_AU.diff
 
 en_CA.aff en_CA.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch en_CA.zip
-        :sys $(UNZIP) en_CA.zip
+        :sys $UNZIP en_CA.zip
         :delete en_CA.zip
         @if not os.path.exists('en_CA.orig.aff'):
-                :copy en_CA.aff en_CA.orig.aff
+            :copy en_CA.aff en_CA.orig.aff
         @if not os.path.exists('en_CA.orig.dic'):
-                :copy en_CA.dic en_CA.orig.dic
+            :copy en_CA.dic en_CA.orig.dic
         @if os.path.exists('en_CA.diff'):
             :sys patch <en_CA.diff
 
 en_GB.aff en_GB.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch en_GB.zip
-        :sys $(UNZIP) en_GB.zip
+        :sys $UNZIP en_GB.zip
         :delete en_GB.zip
         :delete dictionary.lst.example
         @if not os.path.exists('en_GB.orig.aff'):
-                :copy en_GB.aff en_GB.orig.aff
+            :copy en_GB.aff en_GB.orig.aff
         @if not os.path.exists('en_GB.orig.dic'):
-                :copy en_GB.dic en_GB.orig.dic
+            :copy en_GB.dic en_GB.orig.dic
         @if os.path.exists('en_GB.diff'):
             :sys patch <en_GB.diff
 
 en_NZ.aff en_NZ.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch en_NZ.zip
-        :sys $(UNZIP) en_NZ.zip
+        :sys $UNZIP en_NZ.zip
         :delete en_NZ.zip
         @if not os.path.exists('en_NZ.orig.aff'):
-                :copy en_NZ.aff en_NZ.orig.aff
+            :copy en_NZ.aff en_NZ.orig.aff
         @if not os.path.exists('en_NZ.orig.dic'):
-                :copy en_NZ.dic en_NZ.orig.dic
+            :copy en_NZ.dic en_NZ.orig.dic
         @if os.path.exists('en_NZ.diff'):
             :sys patch <en_NZ.diff
 
@@ -146,7 +146,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../en_US.zip
+            :sys $UNZIP ../en_US.zip
             :sys {force} diff ../en_US.orig.aff en_US.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy en_US.aff ../en_US.new.aff
@@ -165,7 +165,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../en_AU.zip
+            :sys $UNZIP ../en_AU.zip
             :sys {force} diff ../en_AU.orig.aff en_AU.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy en_AU.aff ../en_AU.new.aff
@@ -184,7 +184,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../en_CA.zip
+            :sys $UNZIP ../en_CA.zip
             :sys {force} diff ../en_CA.orig.aff en_CA.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy en_CA.aff ../en_CA.new.aff
@@ -203,7 +203,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../en_GB.zip
+            :sys $UNZIP ../en_GB.zip
             :sys {force} diff ../en_GB.orig.aff en_GB.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy en_GB.aff ../en_GB.new.aff
@@ -222,7 +222,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../en_NZ.zip
+            :sys $UNZIP ../en_NZ.zip
             :sys {force} diff ../en_NZ.orig.aff en_NZ.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy en_NZ.aff ../en_NZ.new.aff
diff --git a/runtime/spell/fr/main.aap b/runtime/spell/fr/main.aap
index 4580c9c..9e51039 100644
--- a/runtime/spell/fr/main.aap
+++ b/runtime/spell/fr/main.aap
@@ -9,15 +9,15 @@
 SPELLDIR = ..
 FILES    = fr_FR.aff fr_FR.dic
 
-all: $(SPELLDIR)/fr.latin1.spl $(SPELLDIR)/fr.utf-8.spl ../README_fr.txt
+all: $SPELLDIR/fr.latin1.spl $SPELLDIR/fr.utf-8.spl ../README_fr.txt
 
-$(SPELLDIR)/fr.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/fr.latin1.spl : $VIM $FILES
         :sys env LANG=fr_FR.ISO8859-1
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/fr fr_FR" -c q
 
-$(SPELLDIR)/fr.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/fr.utf-8.spl : $VIM $FILES
         :sys env LANG=fr_FR.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/fr fr_FR" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/fr fr_FR" -c q
 
 ../README_fr.txt : README_fr_FR.txt
         :copy $source $target
@@ -26,19 +26,19 @@
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} fr_FR.zip
+:attr {fetch = $OODIR/%file%} fr_FR.zip
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 fr_FR.aff fr_FR.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch fr_FR.zip
-        :sys $(UNZIP) fr_FR.zip
+        :sys $UNZIP fr_FR.zip
         :delete fr_FR.zip
         @if not os.path.exists('fr_FR.orig.aff'):
-                :copy fr_FR.aff fr_FR.orig.aff
+            :copy fr_FR.aff fr_FR.orig.aff
         @if not os.path.exists('fr_FR.orig.dic'):
-                :copy fr_FR.dic fr_FR.orig.dic
+            :copy fr_FR.dic fr_FR.orig.dic
         @if os.path.exists('fr_FR.diff'):
             :sys patch <fr_FR.diff
 
@@ -62,7 +62,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../fr_FR.zip
+            :sys $UNZIP ../fr_FR.zip
             :sys {force} diff ../fr_FR.orig.aff fr_FR.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy fr_FR.aff ../fr_FR.new.aff
diff --git a/runtime/spell/he/main.aap b/runtime/spell/he/main.aap
index a002bc7..4db930b 100644
--- a/runtime/spell/he/main.aap
+++ b/runtime/spell/he/main.aap
@@ -9,15 +9,15 @@
 SPELLDIR = ..
 FILES    = he_IL.aff he_IL.dic
 
-all: $(SPELLDIR)/he.utf-8.spl $(SPELLDIR)/he.iso-8859-8.spl ../README_he.txt
+all: $SPELLDIR/he.utf-8.spl $SPELLDIR/he.iso-8859-8.spl ../README_he.txt
 
-$(SPELLDIR)/he.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/he.utf-8.spl : $VIM $FILES
         :sys env LANG=he_IL.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/he he_IL" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/he he_IL" -c q
 
-$(SPELLDIR)/he.iso-8859-8.spl : $(VIM) $(FILES)
-        :sys $(VIM) -u NONE -e -c "set enc=iso-8859-8"
-                        -c "mkspell! $(SPELLDIR)/he he_IL" -c q
+$SPELLDIR/he.iso-8859-8.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=iso-8859-8"
+                        -c "mkspell! $SPELLDIR/he he_IL" -c q
 
 ../README_he.txt : README_he_IL.txt
         :copy $source $target
@@ -26,19 +26,19 @@
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} he_IL.zip
+:attr {fetch = $OODIR/%file%} he_IL.zip
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 he_IL.aff he_IL.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch he_IL.zip
-        :sys $(UNZIP) he_IL.zip
+        :sys $UNZIP he_IL.zip
         :delete he_IL.zip
         @if not os.path.exists('he_IL.orig.aff'):
-                :copy he_IL.aff he_IL.orig.aff
+            :copy he_IL.aff he_IL.orig.aff
         @if not os.path.exists('he_IL.orig.dic'):
-                :copy he_IL.dic he_IL.orig.dic
+            :copy he_IL.dic he_IL.orig.dic
         @if os.path.exists('he_IL.diff'):
             :sys patch <he_IL.diff
 
@@ -62,7 +62,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../he_IL.zip
+            :sys $UNZIP ../he_IL.zip
             :sys {force} diff ../he_IL.orig.aff he_IL.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy he_IL.aff ../he_IL.new.aff
diff --git a/runtime/spell/hr/main.aap b/runtime/spell/hr/main.aap
new file mode 100644
index 0000000..f272b87
--- /dev/null
+++ b/runtime/spell/hr/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Polish Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = hr_HR.aff hr_HR.dic
+
+all: $SPELLDIR/hr.iso-8859-2.spl $SPELLDIR/pl.utf-8.spl \
+        $SPELLDIR/hr.cp1250.spl ../README_pl.txt
+
+$SPELLDIR/hr.iso-8859-2.spl : $VIM $FILES
+        :sys env LANG=hr_HR.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+$SPELLDIR/hr.utf-8.spl : $VIM $FILES
+        :sys env LANG=hr_HR.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+$SPELLDIR/hr.cp1250.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/hr hr_HR" -c q
+
+../README_hr.txt: README_hr_HR.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} hr_HR.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+hr_HR.aff hr_HR.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch hr_HR.zip
+        :sys $UNZIP hr_HR.zip
+        :delete hr_HR.zip
+        @if not os.path.exists('hr_HR.orig.aff'):
+            :copy hr_HR.aff hr_HR.orig.aff
+        @if not os.path.exists('hr_HR.orig.dic'):
+            :copy hr_HR.dic hr_HR.orig.dic
+        @if os.path.exists('hr_HR.diff'):
+            :sys patch <hr_HR.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 hr_HR.orig.aff hr_HR.aff >hr_HR.diff
+        :sys {force} diff -a -C 1 hr_HR.orig.dic hr_HR.dic >>hr_HR.diff
+
+
+# Check for updated spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch hr_HR.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../hr_HR.zip
+            :sys {force} diff ../hr_HR.orig.aff hr_HR.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy hr_HR.aff ../hr_HR.new.aff
+            :sys {force} diff ../hr_HR.orig.dic hr_HR.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy hr_HR.dic ../hr_HR.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete hr_HR.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/it/main.aap b/runtime/spell/it/main.aap
index 04e116f..ef541c4 100644
--- a/runtime/spell/it/main.aap
+++ b/runtime/spell/it/main.aap
@@ -9,15 +9,15 @@
 SPELLDIR = ..
 FILES    = it_IT.aff it_IT.dic
 
-all: $(SPELLDIR)/it.latin1.spl $(SPELLDIR)/it.utf-8.spl ../README_it.txt
+all: $SPELLDIR/it.latin1.spl $SPELLDIR/it.utf-8.spl ../README_it.txt
 
-$(SPELLDIR)/it.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/it.latin1.spl : $VIM $FILES
         :sys env LANG=it_IT.ISO8859-1
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/it it_IT" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/it it_IT" -c q
 
-$(SPELLDIR)/it.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/it.utf-8.spl : $VIM $FILES
         :sys env LANG=it_IT.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/it it_IT" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/it it_IT" -c q
 
 ../README_it.txt : README_it_IT.txt
         :copy $source $target
@@ -26,14 +26,14 @@
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} it_IT.zip
+:attr {fetch = $OODIR/%file%} it_IT.zip
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 it_IT.aff it_IT.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch it_IT.zip
-        :sys $(UNZIP) it_IT.zip
+        :sys $UNZIP it_IT.zip
         :delete it_IT.zip
         @if not os.path.exists('it_IT.orig.aff'):
             :copy it_IT.aff it_IT.orig.aff
@@ -62,7 +62,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../it_IT.zip
+            :sys $UNZIP ../it_IT.zip
             :sys {force} diff ../it_IT.orig.aff it_IT.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy it_IT.aff ../it_IT.new.aff
diff --git a/runtime/spell/main.aap b/runtime/spell/main.aap
index 44d1990..68864b8 100644
--- a/runtime/spell/main.aap
+++ b/runtime/spell/main.aap
@@ -1,7 +1,7 @@
 # "aap": generate all the .spl files
 # "aap diff" create all the diff files
 
-LANG = de en fr he it nl pl yi
+LANG = af bg ca cs da de en fr he hr it nl ny pl sk yi
 
 diff: $*LANG/diff
         :print done
diff --git a/runtime/spell/nl/main.aap b/runtime/spell/nl/main.aap
index b414161..02ae49d 100644
--- a/runtime/spell/nl/main.aap
+++ b/runtime/spell/nl/main.aap
@@ -9,15 +9,15 @@
 SPELLDIR = ..
 FILES    = nl_NL.aff nl_NL.dic
 
-all: $(SPELLDIR)/nl.latin1.spl $(SPELLDIR)/nl.utf-8.spl ../README_nl.txt
+all: $SPELLDIR/nl.latin1.spl $SPELLDIR/nl.utf-8.spl ../README_nl.txt
 
-$(SPELLDIR)/nl.latin1.spl : $(VIM) $(FILES)
+$SPELLDIR/nl.latin1.spl : $VIM $FILES
         :sys env LANG=nl_NL.ISO8859-1
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/nl nl_NL" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nl nl_NL" -c q
 
-$(SPELLDIR)/nl.utf-8.spl : $(VIM) $(FILES)
+$SPELLDIR/nl.utf-8.spl : $VIM $FILES
         :sys env LANG=nl_NL.UTF-8
-		$(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/nl nl_NL" -c q
+		$VIM -u NONE -e -c "mkspell! $SPELLDIR/nl nl_NL" -c q
 
 ../README_nl.txt : README_nl_NL.txt
         :copy $source $target
@@ -26,19 +26,19 @@
 # Fetching the files from OpenOffice.org.
 #
 OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-:attr {fetch = $(OODIR)/%file%} nl_NL.zip
+:attr {fetch = $OODIR/%file%} nl_NL.zip
 
 # The files don't depend on the .zip file so that we can delete it.
 # Only download the zip file if the targets don't exist.
 nl_NL.aff nl_NL.dic: {buildcheck=}
         :assertpkg unzip patch
         :fetch nl_NL.zip
-        :sys $(UNZIP) nl_NL.zip
+        :sys $UNZIP nl_NL.zip
         :delete nl_NL.zip
         @if not os.path.exists('nl_NL.orig.aff'):
-                :copy nl_NL.aff nl_NL.orig.aff
+            :copy nl_NL.aff nl_NL.orig.aff
         @if not os.path.exists('nl_NL.orig.dic'):
-                :copy nl_NL.dic nl_NL.orig.dic
+            :copy nl_NL.dic nl_NL.orig.dic
         @if os.path.exists('nl_NL.diff'):
             :sys patch <nl_NL.diff
 
@@ -62,7 +62,7 @@
         :cd tmp
         @try:
             @import stat
-            :sys $(UNZIP) ../nl_NL.zip
+            :sys $UNZIP ../nl_NL.zip
             :sys {force} diff ../nl_NL.orig.aff nl_NL.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy nl_NL.aff ../nl_NL.new.aff
diff --git a/runtime/spell/ny/main.aap b/runtime/spell/ny/main.aap
new file mode 100644
index 0000000..e7fcbf7
--- /dev/null
+++ b/runtime/spell/ny/main.aap
@@ -0,0 +1,82 @@
+# Aap recipe for Dutch Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = ny_MW.aff ny_MW.dic
+
+all: $SPELLDIR/ny.iso-8859-14.spl $SPELLDIR/ny.utf-8.spl \
+        $SPELLDIR/ny.ascii.spl ../README_ny.txt
+
+$SPELLDIR/ny.iso-8859-14.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=iso-8859-14" 
+                -c "mkspell! $SPELLDIR/ny ny_MW" -c q
+
+$SPELLDIR/ny.utf-8.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=utf-8"
+                -c "mkspell! $SPELLDIR/ny ny_MW" -c q
+
+$SPELLDIR/ny.ascii.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "mkspell! -ascii $SPELLDIR/ny ny_MW" -c q
+ 
+../README_ny.txt : README_ny_MW.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} ny_MW.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+ny_MW.aff ny_MW.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch ny_MW.zip
+        :sys $UNZIP ny_MW.zip
+        :delete ny_MW.zip
+        @if not os.path.exists('ny_MW.orig.aff'):
+            :copy ny_MW.aff ny_MW.orig.aff
+        @if not os.path.exists('ny_MW.orig.dic'):
+            :copy ny_MW.dic ny_MW.orig.dic
+        @if os.path.exists('ny_MW.diff'):
+            :sys patch <ny_MW.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 ny_MW.orig.aff ny_MW.aff >ny_MW.diff
+        :sys {force} diff -a -C 1 ny_MW.orig.dic ny_MW.dic >>ny_MW.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch ny_MW.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../ny_MW.zip
+            :sys {force} diff ../ny_MW.orig.aff ny_MW.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy ny_MW.aff ../ny_MW.new.aff
+            :sys {force} diff ../ny_MW.orig.dic ny_MW.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy ny_MW.dic ../ny_MW.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete ny_MW.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/pl/main.aap b/runtime/spell/pl/main.aap
index 6916df3..e33acf8 100644
--- a/runtime/spell/pl/main.aap
+++ b/runtime/spell/pl/main.aap
@@ -9,17 +9,17 @@
 SPELLDIR = ..
 FILES    = pl_PL.aff pl_PL.dic
 
-all: $(SPELLDIR)/pl.iso-8859-2.spl $(SPELLDIR)/pl.utf-8.spl \
-        $(SPELLDIR)/pl.cp1250.spl ../README_pl.txt
+all: $SPELLDIR/pl.iso-8859-2.spl $SPELLDIR/pl.utf-8.spl \
+        $SPELLDIR/pl.cp1250.spl ../README_pl.txt
 
-$(SPELLDIR)/pl.iso-8859-2.spl : $(VIM) $(FILES)
-        :sys env LANG=pl_PL.ISO8859-2 $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.iso-8859-2.spl : $VIM $FILES
+        :sys env LANG=pl_PL.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/pl pl_PL" -c q
 
-$(SPELLDIR)/pl.utf-8.spl : $(VIM) $(FILES)
-        :sys env LANG=pl_PL.UTF-8 $(VIM) -u NONE -e -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.utf-8.spl : $VIM $FILES
+        :sys env LANG=pl_PL.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/pl pl_PL" -c q
 
-$(SPELLDIR)/pl.cp1250.spl : $(VIM) $(FILES)
-        :sys $(VIM) -u NONE -e -c "set enc=cp1250" -c "mkspell! $(SPELLDIR)/pl pl_PL" -c q
+$SPELLDIR/pl.cp1250.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/pl pl_PL" -c q
 
 ../README_pl.txt: README_pl_PL.txt
         :copy $source $target
@@ -28,7 +28,7 @@
 # Fetching the files from OpenOffice.org.
 #
 #OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
-#:attr {fetch = $(OODIR)/%file%} pl_PL.zip
+#:attr {fetch = $OODIR/%file%} pl_PL.zip
 
 #
 # Fetching the files from
@@ -43,24 +43,24 @@
         @from time import strftime, gmtime, time
         @for day in range(20):
             date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
-            base =  alt-myspell-pl-$(date)
-            fname = $(base).tar.bz2
-            :attr {fetch = $(HTTPDIR)/%file%} $(fname)
+            base =  alt-myspell-pl-$date
+            fname = $base.tar.bz2
+            :attr {fetch = $HTTPDIR/%file%} $fname
             @try:
-                :fetch $(fname)
+                :fetch $fname
                 ok = 1
             @except:
                 ok = 0
             @if ok:
                 @break
-        :sys bunzip2 -c $(fname) | tar xf -
-        :move $(base)/* .
-        :deldir $(base)
-        :delete $(fname)
+        :sys bunzip2 -c $fname | tar xf -
+        :move $base/* .
+        :deldir $base
+        :delete $fname
         @if not os.path.exists('pl_PL.orig.aff'):
-                :copy pl_PL.aff pl_PL.orig.aff
+            :copy pl_PL.aff pl_PL.orig.aff
         @if not os.path.exists('pl_PL.orig.dic'):
-                :copy pl_PL.dic pl_PL.orig.dic
+            :copy pl_PL.dic pl_PL.orig.dic
         @if os.path.exists('pl_PL.diff'):
             :sys patch <pl_PL.diff
 
@@ -74,17 +74,29 @@
         :sys {force} diff -a -C 1 pl_PL.orig.dic pl_PL.dic >>pl_PL.diff
 
 
-# Check for updated OpenOffice spell files.  When there are changes the
+# Check for updated spell files.  When there are changes the
 # ".new.aff" and ".new.dic" files are left behind for manual inspection.
 
 check:
-        :assertpkg unzip diff
-        :fetch pl_PL.zip
-        :mkdir tmp
-        :cd tmp
+        :assertpkg tar bunzip2 diff
+        @from time import strftime, gmtime, time
+        @for day in range(20):
+            date = `strftime('%Y%m%d', gmtime(time() - day * 24 * 60 * 60))`
+            base =  alt-myspell-pl-$date
+            fname = $base.tar.bz2
+            :attr {fetch = $HTTPDIR/%file%} $fname
+            @try:
+                :fetch $fname
+                ok = 1
+            @except:
+                ok = 0
+            @if ok:
+                @break
+        :sys bunzip2 -c $fname | tar xf -
+        :cd $base
         @try:
             @import stat
-            :sys $(UNZIP) ../pl_PL.zip
+            :sys $UNZIP ../pl_PL.zip
             :sys {force} diff ../pl_PL.orig.aff pl_PL.aff >d
             @if os.stat('d')[stat.ST_SIZE] > 0:
                 :copy pl_PL.aff ../pl_PL.new.aff
@@ -93,8 +105,8 @@
                 :copy pl_PL.dic ../pl_PL.new.dic
         @finally:
             :cd ..
-            :delete {r}{f}{q} tmp
-            :delete pl_PL.zip
+            :delete {r}{f}{q} $base
+            :delete $fname
 
 
 # vim: set sts=4 sw=4 :
diff --git a/runtime/spell/sk/main.aap b/runtime/spell/sk/main.aap
new file mode 100644
index 0000000..b18d195
--- /dev/null
+++ b/runtime/spell/sk/main.aap
@@ -0,0 +1,81 @@
+# Aap recipe for Czech Vim spell files.
+
+# Use a freshly compiled Vim if it exists.
+@if os.path.exists('../../../src/vim'):
+    VIM = ../../../src/vim
+@else:
+    :progsearch VIM vim
+
+SPELLDIR = ..
+FILES    = sk_SK.aff sk_SK.dic
+
+all: $SPELLDIR/sk.iso-8859-2.spl $SPELLDIR/sk.utf-8.spl \
+        $SPELLDIR/sk.cp1250.spl ../README_sk.txt
+
+$SPELLDIR/sk.iso-8859-2.spl : $VIM $FILES
+        :sys env LANG=sk_SK.ISO8859-2 $VIM -u NONE -e -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+$SPELLDIR/sk.utf-8.spl : $VIM $FILES
+        :sys env LANG=sk_SK.UTF-8 $VIM -u NONE -e -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+$SPELLDIR/sk.cp1250.spl : $VIM $FILES
+        :sys $VIM -u NONE -e -c "set enc=cp1250" -c "mkspell! $SPELLDIR/sk sk_SK" -c q
+
+../README_sk.txt: README_sk_SK.txt
+        :copy $source $target
+
+#
+# Fetching the files from OpenOffice.org.
+#
+OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+:attr {fetch = $OODIR/%file%} sk_SK.zip
+
+# The files don't depend on the .zip file so that we can delete it.
+# Only download the zip file if the targets don't exist.
+# This is a bit tricky, since the file name includes the date.
+sk_SK.aff sk_SK.dic: {buildcheck=}
+        :assertpkg unzip patch
+        :fetch sk_SK.zip
+        :sys $UNZIP sk_SK.zip
+        :delete sk_SK.zip
+        @if not os.path.exists('sk_SK.orig.aff'):
+            :copy sk_SK.aff sk_SK.orig.aff
+        @if not os.path.exists('sk_SK.orig.dic'):
+            :copy sk_SK.dic sk_SK.orig.dic
+        @if os.path.exists('sk_SK.diff'):
+            :sys patch <sk_SK.diff
+
+
+# Generate diff files, so that others can get the OpenOffice files and apply
+# the diffs to get the Vim versions.
+
+diff:
+        :assertpkg diff
+        :sys {force} diff -a -C 1 sk_SK.orig.aff sk_SK.aff >sk_SK.diff
+        :sys {force} diff -a -C 1 sk_SK.orig.dic sk_SK.dic >>sk_SK.diff
+
+
+# Check for updated OpenOffice spell files.  When there are changes the
+# ".new.aff" and ".new.dic" files are left behind for manual inspection.
+
+check:
+        :assertpkg unzip diff
+        :fetch sk_SK.zip
+        :mkdir tmp
+        :cd tmp
+        @try:
+            @import stat
+            :sys $UNZIP ../sk_SK.zip
+            :sys {force} diff ../sk_SK.orig.aff sk_SK.aff >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy sk_SK.aff ../sk_SK.new.aff
+            :sys {force} diff ../sk_SK.orig.dic sk_SK.dic >d
+            @if os.stat('d')[stat.ST_SIZE] > 0:
+                :copy sk_SK.dic ../sk_SK.new.dic
+        @finally:
+            :cd ..
+            :delete {r}{f}{q} tmp
+            :delete sk_SK.zip
+
+
+# vim: set sts=4 sw=4 :
diff --git a/runtime/spell/sk/sk_SK.diff b/runtime/spell/sk/sk_SK.diff
new file mode 100644
index 0000000..d279fd3
--- /dev/null
+++ b/runtime/spell/sk/sk_SK.diff
@@ -0,0 +1,18 @@
+*** sk_SK.orig.aff	Sun Aug 14 16:48:21 2005
+--- sk_SK.aff	Sun Aug 14 16:50:08 2005
+***************
+*** 4,5 ****
+--- 4,9 ----
+  
++ FOL ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW ±¢³µ¶¨¹º»¼¾¿±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ¡¢£¥¦¨©ª«¬®¯±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++ 
+  PFX N Y 1
+*** sk_SK.orig.dic	Sun Aug 14 16:48:21 2005
+--- sk_SK.dic	Sun Aug 14 16:52:23 2005
+***************
+*** 166567,166568 ****
+  ¾viaka»/NX
+- 166567
+--- 166567 ----
diff --git a/runtime/spell/yi/main.aap b/runtime/spell/yi/main.aap
index 8160e83..31d057e 100644
--- a/runtime/spell/yi/main.aap
+++ b/runtime/spell/yi/main.aap
@@ -14,7 +14,7 @@
 
 $SPELLDIR/yi.utf-8.spl : $VIM $FILES
     :sys $VIM -u NONE -e -c "set enc=utf-8"
-            -c "mkspell! $(SPELLDIR)/yi yi" -c q
+            -c "mkspell! $SPELLDIR/yi yi" -c q
 
 ../README_yi.txt : README.txt
     :copy $source $target
diff --git a/runtime/syntax/verilogams.vim b/runtime/syntax/verilogams.vim
new file mode 100644
index 0000000..7141eca
--- /dev/null
+++ b/runtime/syntax/verilogams.vim
@@ -0,0 +1,142 @@
+" Vim syntax file
+" Language:	Verilog-AMS
+" Maintainer:	S. Myles Prather <smprather@gmail.com>
+" Last Update:  Sun Aug 14 03:58:00 CST 2003
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+   syntax clear
+elseif exists("b:current_syntax")
+   finish
+endif
+
+" Set the local value of the 'iskeyword' option
+if version >= 600
+   setlocal iskeyword=@,48-57,_,192-255
+else
+   set iskeyword=@,48-57,_,192-255
+endif
+
+" Annex B.1 'All keywords'
+syn keyword verilogamsStatement above abs absdelay acos acosh ac_stim
+syn keyword verilogamsStatement always analog analysis and asin
+syn keyword verilogamsStatement asinh assign atan atan2 atanh branch
+syn keyword verilogamsStatement buf bufif1 ceil cmos
+syn keyword verilogamsStatement connectrules cos cosh cross ddt ddx deassign
+syn keyword verilogamsStatement defparam disable discipline
+syn keyword verilogamsStatement driver_update edge enddiscipline
+syn keyword verilogamsStatement endconnectrules endmodule endfunction
+syn keyword verilogamsStatement endnature endparamset endprimitive endspecify
+syn keyword verilogamsStatement endtable endtask event exp final_step
+syn keyword verilogamsStatement flicker_noise floor flow force fork
+syn keyword verilogamsStatement function generate genvar highz0
+syn keyword verilogamsStatement highz1 hypot idt idtmod if ifnone initial
+syn keyword verilogamsStatement initial_step inout input join
+syn keyword verilogamsStatement laplace_nd laplace_np laplace_zd laplace_zp
+syn keyword verilogamsStatement large last_crossing limexp ln localparam log
+syn keyword verilogamsStatement macromodule max medium min module nand nature
+syn keyword verilogamsStatement negedge net_resolution nmos noise_table nor not
+syn keyword verilogamsStatement notif0 notif1 or output paramset pmos
+syn keyword verilogamsType      parameter real integer electrical input output
+syn keyword verilogamsType      inout reg tri tri0 tri1 triand trior trireg
+syn keyword verilogamsType      string from exclude aliasparam ground
+syn keyword verilogamsStatement posedge potential pow primitive pull0 pull1
+syn keyword verilogamsStatement pullup pulldown rcmos release
+syn keyword verilogamsStatement rnmos rpmos rtran rtranif0 rtranif1
+syn keyword verilogamsStatement scalared sin sinh slew small specify specparam
+syn keyword verilogamsStatement sqrt strong0 strong1 supply0 supply1
+syn keyword verilogamsStatement table tan tanh task time timer tran tranif0
+syn keyword verilogamsStatement tranif1 transition
+syn keyword verilogamsStatement vectored wait wand weak0 weak1
+syn keyword verilogamsStatement white_noise wire wor wreal xnor xor zi_nd
+syn keyword verilogamsStatement zi_np zi_zd
+syn keyword verilogamsRepeat    forever repeat while for
+syn keyword verilogamsLabel     begin end
+syn keyword verilogamsConditional if else case casex casez default endcase
+syn match   verilogamsConstant  ":inf"lc=1
+syn match   verilogamsConstant  "-inf"lc=1
+" Annex B.2 Discipline/nature
+syn keyword verilogamsStatement abstol access continuous ddt_nature discrete
+syn keyword verilogamsStatement domain idt_nature units 
+" Annex B.3 Connect Rules
+syn keyword verilogamsStatement connect merged resolveto split
+
+syn match   verilogamsOperator  "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
+syn match   verilogamsOperator  "<+"
+syn match   verilogamsStatement "[vV]("me=e-1
+syn match   verilogamsStatement "[iI]("me=e-1
+
+syn keyword verilogamsTodo contained TODO
+syn region  verilogamsComment start="/\*" end="\*/" contains=verilogamsTodo
+syn match   verilogamsComment "//.*" contains=verilogamsTodo
+
+syn match verilogamsGlobal "`celldefine"
+syn match verilogamsGlobal "`default_nettype"
+syn match verilogamsGlobal "`define"
+syn match verilogamsGlobal "`else"
+syn match verilogamsGlobal "`elsif"
+syn match verilogamsGlobal "`endcelldefine"
+syn match verilogamsGlobal "`endif"
+syn match verilogamsGlobal "`ifdef"
+syn match verilogamsGlobal "`ifndef"
+syn match verilogamsGlobal "`include"
+syn match verilogamsGlobal "`line"
+syn match verilogamsGlobal "`nounconnected_drive"
+syn match verilogamsGlobal "`resetall"
+syn match verilogamsGlobal "`timescale"
+syn match verilogamsGlobal "`unconnected_drive"
+syn match verilogamsGlobal "`undef"
+syn match verilogamsSystask "$[a-zA-Z0-9_]\+\>"
+
+syn match verilogamsConstant "\<[A-Z][A-Z0-9_]\+\>"
+
+syn match   verilogamsNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
+syn match   verilogamsNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
+syn match   verilogamsNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
+syn match   verilogamsNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
+syn match   verilogamsNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
+
+syn region  verilogamsString start=+"+ skip=+\\"+ end=+"+ contains=verilogamsEscape
+syn match   verilogamsEscape +\\[nt"\\]+ contained
+syn match   verilogamsEscape "\\\o\o\=\o\=" contained
+
+"Modify the following as needed.  The trade-off is performance versus
+"functionality.
+syn sync lines=50
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_verilogams_syn_inits")
+   if version < 508
+      let did_verilogams_syn_inits = 1
+      command -nargs=+ HiLink hi link <args>
+   else
+      command -nargs=+ HiLink hi def link <args>
+   endif
+
+   " The default highlighting.
+   HiLink verilogamsCharacter    Character
+   HiLink verilogamsConditional  Conditional
+   HiLink verilogamsRepeat       Repeat
+   HiLink verilogamsString       String
+   HiLink verilogamsTodo         Todo
+   HiLink verilogamsComment      Comment
+   HiLink verilogamsConstant     Constant
+   HiLink verilogamsLabel        Label
+   HiLink verilogamsNumber       Number
+   HiLink verilogamsOperator     Special
+   HiLink verilogamsStatement    Statement
+   HiLink verilogamsGlobal       Define
+   HiLink verilogamsDirective    SpecialComment
+   HiLink verilogamsEscape       Special
+   HiLink verilogamsType         Type
+   HiLink verilogamsSystask      Function
+
+   delcommand HiLink
+endif
+
+let b:current_syntax = "verilogams"
+
+" vim: ts=8