updated for version 7.0091
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index a2c05f9..7b37b73 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 21
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5640,10 +5640,17 @@
 			{not available when compiled without the |+syntax|
 			feature}
 	Name of the word list file where words are added for the |zg| and |zw|
-	commands.  It must end in ".add".
+	commands.  It must end in ".{encoding}.add".
 	When a word is added while this option is empty Vim will set it for
 	you: Using the first "spell" directory in 'runtimepath' that is
-	writable and the first language name that appears in 'spelllang'.
+	writable and the first language name that appears in 'spelllang',
+	ignoring the region.
+	The resulting ".spl" file will be used for spell checking, it does not
+	have to appear in 'spelllang'.
+	Normally one file is used for all regions, but you can add the region
+	name if you want to.  However, it will then only be used when
+	'spellfile' is set to it, for entries in 'spelllang' only files
+	without region name will be found.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
@@ -5653,14 +5660,22 @@
 			{not in Vi}
 			{not available when compiled without the |+syntax|
 			feature}
-	A comma separated list of languages.  when the 'spell' option is on
-	spellchecking will be done for these languages.  Example: >
-		set spelllang=en_us,nl
-<	This means both US English and Dutch words are recognized.  Words that
-	are not recognized will be highlighted.
+	A comma separated list of word list names.  When the 'spell' option is
+	on spellchecking will be done for these languages.  Example: >
+		set spelllang=en_us,nl,medical
+<	This means US English, Dutch and medical words are recognized.  Words
+	that are not recognized will be highlighted.
+	The word list name must not include a comma or dot.  Using a dash is
+	recommended to separate the two letter language name from a
+	specification.  Thus "en-rare" is used for rare English words.
+	A region name must come last and have the form "_xx", where "xx" is
+	the two-letter, lower case region name.  You can use more than one
+	region by listing them: "en_us,en_ca" supports both US and Canadian
+	English, but not words specific for Australia, New Zealand or Great
+	Britain.
 	When 'encoding' is set the word lists are reloaded.  Thus it's a good
 	idea to set 'spelllang' after setting 'encoding'.
-	More info at |spell|.
+	How the related spell files are found is explained here: |spell-load|.
 
 						*'spellsuggest'* *'sps'*
 'spellsuggest' 'sps'	string	(default "best")
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 9a72f3b..399fc67 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 Jun 22
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -104,10 +104,10 @@
 Note that Vim does on-the-fly spell checking.  To make this work fast the
 word list is loaded in memory.  Thus this uses a lot of memory (1 Mbyte or
 more).  There might also be a noticeable delay when the word list is loaded,
-which happens when 'spelllang' or 'spell' is set.  Each word list is only
-loaded once, they are not deleted when 'spelllang' is made empty or 'spell' is
-reset.  When 'encoding' is set the word lists are reloaded, thus you may
-notice a delay then too.
+which happens when 'spell' is set and when 'spelllang' is set while 'spell'
+was already set.  Each word list is only loaded once, they are not deleted
+when 'spelllang' is made empty or 'spell' is reset.  When 'encoding' is set
+all the word lists are reloaded, thus you may notice a delay then too.
 
 
 REGIONS
@@ -132,17 +132,27 @@
 |spell-wordlist-format|.
 
 
-SPELL FILES
+SPELL FILES						*spell-load*
 
 Vim searches for spell files in the "spell" subdirectory of the directories in
 'runtimepath'.  The name is: LL.EEE.spl, where:
 	LL	the language name
 	EEE	the value of 'encoding'
 
+The value for "LL" comes from 'spelllang', but excludes the region name.
+Examples:
+	'spelllang'	LL ~
+	en_us		en
+	en-rare		en-rare
+	medical_ca	medical
+
 Only the first file is loaded, the one that is first in 'runtimepath'.  If
 this succeeds then additionally files with the name LL.EEE.add.spl are loaded.
 All the ones that are found are used.
 
+Additionally, the file related to 'spellfile' is loaded.  This is the file
+that |zg| and |zw| add good and wrong words to.
+
 Exceptions:
 - Vim uses "latin1" when 'encoding' is "iso-8859-15".  The euro sign doesn't
   matter for spelling.
@@ -261,17 +271,20 @@
 Make sure your current locale is set properly, otherwise Vim doesn't know what
 characters are upper/lower case letters.  If the locale isn't available (e.g.,
 when using an MS-Windows codepage on Unix) add tables to the .aff file
-|spell-affix-chars|.
+|spell-affix-chars|.  If the .aff file doesn't define a table then the word
+table of the currently active spelling is used.  If spelling is not active
+then Vim will try to guess.
 
-:mksp[ell][!] [-ascii] {outname} {inname} ...		*:mksp* *:mkspell*
+							*:mksp* *:mkspell*
+:mksp[ell][!] [-ascii] {outname} {inname} ...
 			Generate a Vim spell file word lists.  Example: >
 		:mkspell nl nl_NL.words
-<
+<								*E751*
 			When {outname} ends in ".spl" it is used as the output
 			file name.  Otherwise it should be a language name,
-			such as "en".  The file written will be
-			{outname}.{encoding}.spl.  {encoding} is the value of
-			the 'encoding' option.
+			such as "en", without the region name.  The file
+			written will be "{outname}.{encoding}.spl", where
+			{encoding} is the value of the 'encoding' option.
 
 			When the output file already exists [!] must be added
 			to overwrite it.
@@ -327,8 +340,29 @@
    You may also need to change xx_YY.aff.
 4. Rename xx_YY.new.dic to xx_YY.orig.dic and xx_YY.new.aff to xx_YY.new.aff.
 
+
+SPELL FILE DUMP
+
+If for some reason you want to check what words are supported by the currently
+used spelling files, use this command:
+
+							*:spelldump* *:spelld*
+:spelld[ump]		Open a new window and fill it with all currently valid
+			words.
+			Note: For some languages the result may be huge and
+			Vim may run out of memory.
+
+The format of the word list is used |spell-wordlist-format|.  You should be
+able to read it with ":mkspell" to generate one .spl file that includes all
+the words.
+
+Only words for the current region are included.  No "/regions" line is
+generated.
+
+Comment lines are used to indicate which .spl file the words came from.
+
 ==============================================================================
-9. Spell file format					*spell-file-format*
+3. Spell file format					*spell-file-format*
 
 This is the format of the files that are used by the person who creates and
 maintains a word list.
@@ -505,10 +539,16 @@
 When the encoding is UTF-8 no word characters need to be specified.
 
 							*E763*
-All spell files for the same encoding must use the same word characters,
-otherwise they can't be combined without errors.  The XX.ascii.spl spell file
-generated with the "-ascii" argument will not contain the table with
-characters, so that it can be combine with spell files for any encoding.
+Vim allows you to use spell checking for several languages in the same file.
+You can list them in the 'spelllang' option.  As a consequence all spell files
+for the same encoding must use the same word characters, otherwise they can't
+be combined without errors.  If you get a warning that the word tables differ
+you may need to generate the .spl file again with |:mkspell|.  Check the FOL,
+LOW and UPP lines in the used .aff file.
+
+The XX.ascii.spl spell file generated with the "-ascii" argument will not
+contain the table with characters, so that it can be combine with spell files
+for any encoding.  The .add.spl files also do not contain the table.
 
 
 AFFIXES
diff --git a/runtime/doc/tags b/runtime/doc/tags
index fe6340e..c4d5d78 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -6255,6 +6255,7 @@
 special-buffers	windows.txt	/*special-buffers*
 speed-up	tips.txt	/*speed-up*
 spell	spell.txt	/*spell*
+spell-affix-BAD	spell.txt	/*spell-affix-BAD*
 spell-affix-FOL	spell.txt	/*spell-affix-FOL*
 spell-affix-KEP	spell.txt	/*spell-affix-KEP*
 spell-affix-LOW	spell.txt	/*spell-affix-LOW*
diff --git a/runtime/indent/docbk.vim b/runtime/indent/docbk.vim
index 6b807bb..297ad04 100644
--- a/runtime/indent/docbk.vim
+++ b/runtime/indent/docbk.vim
@@ -5,9 +5,15 @@
 " Latest Revision:  2004-05-22
 " arch-tag:	    3d073af7-1d69-42a2-99ad-9a49a21eb28f
 
+if exists("b:did_indent")
+    finish
+endif
+
 " Same as XML indenting for now.
 runtime! indent/xml.vim
 
-setlocal indentexpr=XmlIndentGet(v:lnum,0)
+if exists('*XmlIndentGet')
+  setlocal indentexpr=XmlIndentGet(v:lnum,0)
+endif
 
 " vim: set sts=2 sw=2:
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 38c4c9c..dadeb9c 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 2771a90..900f3bf 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -11,4 +11,5 @@
 void init_spell_chartab __ARGS((void));
 void spell_suggest __ARGS((void));
 void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount));
+void ex_spelldump __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
diff --git a/src/screen.c b/src/screen.c
index 6fb5931..595058a 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2504,8 +2504,8 @@
     int		has_spell = FALSE;	/* this buffer has spell checking */
 # define SPWORDLEN 150
     char_u	nextline[SPWORDLEN * 2];/* text with start of the next line */
-    int		nextlinecol;		/* column where nextline[] starts */
-    int		nextline_idx;		/* index in nextline[] where next line
+    int		nextlinecol = 0;	/* column where nextline[] starts */
+    int		nextline_idx = 0;	/* index in nextline[] where next line
 					   starts */
     int		spell_attr = 0;		/* attributes desired by spelling */
     int		word_end = 0;		/* last byte with same spell_attr */
diff --git a/src/version.h b/src/version.h
index 7307eb2..01c298e 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 22)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 22, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 23)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 23, compiled "