updated for version 7.0009
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 4d4a88c..6f46033 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.0aa.  Last change: 2004 Jul 01
+*cmdline.txt*   For Vim version 7.0aa.  Last change: 2004 Jul 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -164,6 +164,8 @@
 				'path' as in |gf|
 			CTRL-W	the Word under the cursor
 			CTRL-A	the WORD under the cursor; see |WORD|
+		When 'incsearch' is set the cursor position of the currently
+		displayed match is used.
 		{not in Vi}
 		CTRL-F and CTRL-P: {only when +file_in_path feature is
 		included}
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 1a28bf1..be83ae1 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2004 Jul 05
+*options.txt*	For Vim version 7.0aa.  Last change: 2004 Jul 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1104,6 +1104,9 @@
 	  nofile	buffer which is not related to a file and will not be
 			written
 	  nowrite	buffer which will not be written
+	  acwrite	buffer which will always be written with BufWriteCmd
+	  		autocommands. {not available when compiled without the
+			|+autocmd| feature}
 	  quickfix	quickfix buffer, contains list of errors |:cwindow|
 	  help		help buffer (you are not supposed to set this
 			manually)
@@ -1128,6 +1131,12 @@
 	nofile only:	The buffer name is fixed, it is not handled like a
 			file name.  It is not modified in response to a |:cd|
 			command.
+							*E676*
+	"acwrite" implies that the buffer name is not related to a file, like
+	"nofile", but it will be written.  Thus, in contrast to "nofile" and
+	"nowrite", ":w" does work and a modified buffer can't be abandoned
+	without saving.  For writing there must be matching |BufWriteCmd|,
+	|FileWriteCmd| or |FileAppendCmd| autocommands.
 
 						*'casemap'* *'cmp'*
 'casemap' 'cmp'		string	(default: "internal,keepascii")
@@ -3422,14 +3431,16 @@
 			{not in Vi}
 			{not available when compiled without the
 			|+extra_search| feature}
-	While typing a search command, show immediately where the so far
-	typed pattern matches.  The matched string is highlighted.  If the
-	pattern is invalid or not found, nothing is shown.  The screen will
-	be updated often, this is only useful on fast terminals.  Note that
-	the match will be shown, but the cursor is not actually positioned
-	there.  You still need to finish the search command with <CR> to move
-	the cursor.  The highlighting can be set with the 'i' flag in
-	'highlight'.  See also: 'hlsearch'.
+	While typing a search command, show where the pattern, as it was typed
+	so far, matches.  The matched string is highlighted.  If the pattern
+	is invalid or not found, nothing is shown.  The screen will be updated
+	often, this is only useful on fast terminals.
+	Note that the match will be shown, but the cursor will return to its
+	original position when no match is found and when pressing <Esc>.  You
+	still need to finish the search command with <Enter> to move the
+	cursor to the match.
+	The highlighting can be set with the 'i' flag in 'highlight'.
+	See also: 'hlsearch'.
 	NOTE: This option is reset when 'compatible' is set.
 
 						*'indentexpr'* *'inde'*
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index c73d17e..5f3f9e9 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0aa.  Last change: 2004 Jun 18
+*starting.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -746,7 +746,7 @@
 		    "home:.vimrc"	(for Amiga) (*)
 		    "$VIM/.vimrc"	(for OS/2 and Amiga) (*)
 		    "$HOME/_vimrc"	(for MS-DOS and Win32) (*)
-		    "$VIM\_vimrc"	(for MS-DOS and Win32) (*)
+		    "$VIM/_vimrc"	(for MS-DOS and Win32) (*)
 		Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist,
 		"_vimrc" is also tried, in case an MS-DOS compatible file
 		system is used.  For MS-DOS and Win32 ".vimrc" is checked
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index c1e7de7..d31122b 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Jul 06
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Jul 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2089,6 +2089,14 @@
 "$global_var", "@instance_var", "| iterator |", and ":symbol".
 
 
+SCHEME						*scheme.vim* *scheme-syntax*
+
+By default only R5RS keywords are highlighted and properly indented.
+
+MzScheme-specific stuff will be used if b:is_mzscheme or g:is_mzscheme
+variables are defined.
+
+
 SDL						*sdl.vim* *sdl-syntax*
 
 The SDL highlighting probably misses a few keywords, but SDL has so many
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 597e307..fe79d84 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1813,6 +1813,8 @@
 :di	change.txt	/*:di*
 :diffg	diff.txt	/*:diffg*
 :diffget	diff.txt	/*:diffget*
+:diffo	diff.txt	/*:diffo*
+:diffoff	diff.txt	/*:diffoff*
 :diffp	diff.txt	/*:diffp*
 :diffpatch	diff.txt	/*:diffpatch*
 :diffpu	diff.txt	/*:diffpu*
@@ -3527,6 +3529,7 @@
 E673	print.txt	/*E673*
 E674	print.txt	/*E674*
 E675	print.txt	/*E675*
+E676	options.txt	/*E676*
 E68	pattern.txt	/*E68*
 E69	pattern.txt	/*E69*
 E70	pattern.txt	/*E70*
@@ -5424,8 +5427,12 @@
 netrw	pi_netrw.txt	/*netrw*
 netrw--	pi_netrw.txt	/*netrw--*
 netrw-D	pi_netrw.txt	/*netrw-D*
+netrw-H	pi_netrw.txt	/*netrw-H*
+netrw-M	pi_netrw.txt	/*netrw-M*
+netrw-R	pi_netrw.txt	/*netrw-R*
 netrw-activate	pi_netrw.txt	/*netrw-activate*
 netrw-browse	pi_netrw.txt	/*netrw-browse*
+netrw-browse-cmds	pi_netrw.txt	/*netrw-browse-cmds*
 netrw-browse-var	pi_netrw.txt	/*netrw-browse-var*
 netrw-c-l	pi_netrw.txt	/*netrw-c-l*
 netrw-cadaver	pi_netrw.txt	/*netrw-cadaver*
@@ -5439,9 +5446,9 @@
 netrw-file	pi_netrw.txt	/*netrw-file*
 netrw-fixup	pi_netrw.txt	/*netrw-fixup*
 netrw-ftp	pi_netrw.txt	/*netrw-ftp*
-netrw-h	pi_netrw.txt	/*netrw-h*
 netrw-help	pi_netrw.txt	/*netrw-help*
 netrw-history	pi_netrw.txt	/*netrw-history*
+netrw-i	pi_netrw.txt	/*netrw-i*
 netrw-list	pi_netrw.txt	/*netrw-list*
 netrw-list-hack	pi_netrw.txt	/*netrw-list-hack*
 netrw-move	pi_netrw.txt	/*netrw-move*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index e19f86c..fa1ddff 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 12
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Jul 16
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,13 +30,15 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Make aap build script work again. Also with mzscheme
+When switching between Aap script and make Vim won't always run.
 
 Mac: Compiling --enable-gui=athena doesn't work.  Try to fix without disabling
-Carbon.  Otherwise adjust configure to disable darwin. (raf)
+Carbon.  Otherwise adjust configure to disable Darwin. (raf)
 
-Mac: "make install" doesn't install.
+Mac: "make install" doesn't install.  Patch from RAF.
 
+UTF-8 in 'comments' causes wrong indent.  Counting bytes instead of char
+width? (Nikolai Weibull)
 
 For version 7.0:
 -   Include many PATCHES:
@@ -282,6 +284,9 @@
     line.
 7   Make ":startinsert" command work directly for functions and scripts?
     Also make it possible to append (it's difficult at end of line).
+-   When using 'incsearch" CTRL-R CTRL-W gets the word under the cursor, but
+    the part that already matched is doubled then.  Remove the part of the
+    word that would be doubled.  Make it work line CTRL-N in Insert mode.
 
 Vi incompatibility:
 8   With undo/redo only marks in the changed lines should be changed.  Other
@@ -1995,6 +2000,8 @@
     CmdEnter	    - Entering Cmdline mode
     VisualEnter	    - Entering Visual mode
     *Leave	    - Leaving a mode (in pair with the above *Enter)
+    VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
+		      when exiting isn't a good idea.
     CmdUndefined    - Like FuncUndefined but for user commands.
     SearchPost	    - After doing a search command (e.g. to do "M")
     PreDirChanged/PostDirChanged
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index fd9335f..a1c902c 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 11
+*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -170,6 +170,10 @@
 
 Added "nbsp" in 'listchars'. (David Blanchet)
 
+Added the "acwrite" value for the 'buftype' option.  This is for a buffer that
+doesn not have a name that refers to a file and is written with BufWriteCmd
+autocommands.
+
 For lisp indenting and matching parenthesis: (Sergey Khorev)
 - square brackets are recognized properly
 - #\(, #\), #\[ and #\] are recognized as character literals
@@ -241,4 +245,14 @@
 Using "@:" to repeat a command line didn't work when it contains control
 characters.
 
+When using file completion for a user command, it would not expand environment
+variables like for a regular command with a file argument.
+
+'cindent': When the argument of a #define looks like a C++ class the next line
+is indented too much.
+
+When 'comments' includes multi-byte characters inserting the middle part and
+alignment may go wrong.  'cindent' also suffers from this for right-aligned
+items.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/syntax/d.vim b/runtime/syntax/d.vim
index 51ecc43..bfb6a03 100644
--- a/runtime/syntax/d.vim
+++ b/runtime/syntax/d.vim
@@ -1,10 +1,9 @@
-" Vim syntax file for the D programming language (version 0.90).
+" Vim syntax file for the D programming language (version 0.95).
 "
-" Language:     D
-" Maintainer:   Jason Mills<jmills@cs.mun.ca>
-" URL:
-" Last Change:  2004 May 21
-" Version:      0.8
+" Language:	D
+" Maintainer:	Jason Mills<jmills@cs.mun.ca>
+" Last Change:	2004 Jul 15
+" Version:	0.10
 "
 " Options:
 "   d_comment_strings - set to highlight strings and numbers in comments
@@ -30,39 +29,40 @@
 
 " Keyword definitions
 "
-syn keyword dExternal	     import module extern
-syn keyword dConditional     if else switch
-syn keyword dBranch	     goto break continue
-syn keyword dRepeat	     while for do foreach
-syn keyword dBoolean	     true false
-syn keyword dConstant	     null
-syn keyword dTypedef	     alias typedef
-syn keyword dStructure	     template interface class enum struct union
-syn keyword dOperator	     new delete typeof cast align is
-syn keyword dOperator	     this super
+syn keyword dExternal		import package module extern
+syn keyword dConditional	if else switch
+syn keyword dBranch		goto break continue
+syn keyword dRepeat		while for do foreach
+syn keyword dBoolean		true false
+syn keyword dConstant		null
+syn keyword dTypedef		alias typedef
+syn keyword dStructure		template interface class enum struct union
+syn keyword dOperator		new delete typeof typeid cast align is
+syn keyword dOperator		this super
 if exists("d_hl_operator_overload")
-  syn keyword dOpOverload  opNeg opCom opPostInc opPostDec opAdd opSub opSub_r
-  syn keyword dOpOverload  opMul opDiv opDiv_r opMod opMod_r opAnd opOr opXor
-  syn keyword dOpOverload  opShl opShl_r opShr opShr_r opUShr opUShr_r opCat
-  syn keyword dOpOverload  opCat_r opEquals opEquals opCmp opCmp opCmp opCmp
-  syn keyword dOpOverload  opAddAssign opSubAssign opMulAssign opDivAssign
-  syn keyword dOpOverload  opModAssign opAndAssign opOrAssign opXorAssign
-  syn keyword dOpOverload  opShlAssign opShrAssign opUShrAssign opCatAssign
-  syn keyword dOpOverload  opIndex opCall opSlice
+  syn keyword dOpOverload	opNeg opCom opPostInc opPostDec opAdd opSub opSub_r
+  syn keyword dOpOverload	opMul opDiv opDiv_r opMod opMod_r opAnd opOr opXor
+  syn keyword dOpOverload	opShl opShl_r opShr opShr_r opUShr opUShr_r opCat
+  syn keyword dOpOverload	opCat_r opEquals opEquals opCmp opCmp opCmp opCmp
+  syn keyword dOpOverload	opAddAssign opSubAssign opMulAssign opDivAssign
+  syn keyword dOpOverload	opModAssign opAndAssign opOrAssign opXorAssign
+  syn keyword dOpOverload	opShlAssign opShrAssign opUShrAssign opCatAssign
+  syn keyword dOpOverload	opIndex opIndexAssign opCall opSlice
+  syn keyword dOpOverload	opAdd_r opMul_r opAnd_r opOr_r opXor_r 
 endif
-syn keyword dType	     ushort int uint long ulong float
-syn keyword dType	     void byte ubyte double bit char wchar ucent cent
-syn keyword dType	     short bool dchar
-syn keyword dType	     real ireal ifloat idouble creal cfloat cdouble
-syn keyword dDebug	     deprecated unittest
-syn keyword dExceptions      throw try catch finally
-syn keyword dScopeDecl       public protected private export
-syn keyword dStatement       version debug return with invariant body
-syn keyword dStatement       in out inout asm mixin
-syn keyword dStatement       function delegate
-syn keyword dStorageClass    auto static override final const abstract volatile
-syn keyword dStorageClass    synchronized
-syn keyword dPragma	     pragma
+syn keyword dType		ushort int uint long ulong float
+syn keyword dType		void byte ubyte double bit char wchar ucent cent
+syn keyword dType		short bool dchar
+syn keyword dType		real ireal ifloat idouble creal cfloat cdouble
+syn keyword dDebug		deprecated unittest
+syn keyword dExceptions		throw try catch finally
+syn keyword dScopeDecl		public protected private export
+syn keyword dStatement		version debug return with invariant body
+syn keyword dStatement		in out inout asm mixin
+syn keyword dStatement		function delegate
+syn keyword dStorageClass	auto static override final const abstract volatile
+syn keyword dStorageClass	synchronized
+syn keyword dPragma		pragma
 
 
 " Assert is a statement and a module name.
@@ -81,34 +81,34 @@
 " Labels
 "
 " We contain dScopeDecl so public: private: etc. are not highlighted like labels
-syn match   dUserLabel       "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl
-syn keyword dLabel	     case default
+syn match dUserLabel	"^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=dLabel,dScopeDecl
+syn keyword dLabel	case default
 
 " Comments
 "
-syn keyword dTodo	      contained TODO FIXME TEMP XXX
-syn match   dCommentStar      contained "^\s*\*[^/]"me=e-1
-syn match   dCommentStar      contained "^\s*\*$"
-syn match   dCommentPlus      contained "^\s*+[^/]"me=e-1
-syn match   dCommentPlus      contained "^\s*+$"
+syn keyword dTodo	contained TODO FIXME TEMP XXX
+syn match dCommentStar	contained "^\s*\*[^/]"me=e-1
+syn match dCommentStar	contained "^\s*\*$"
+syn match dCommentPlus	contained "^\s*+[^/]"me=e-1
+syn match dCommentPlus	contained "^\s*+$"
 if exists("d_comment_strings")
-  syn region  dBlockCommentString   contained  start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
-  syn region  dNestedCommentString  contained  start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
-  syn region  dLineCommentString    contained start=+"+  end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
-  syn region  dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
-  syn region  dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
-  syn match   dLineComment      "//.*" contains=dLineCommentString,dTodo,@Spell
+  syn region dBlockCommentString	contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
+  syn region dNestedCommentString	contained start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
+  syn region dLineCommentString		contained start=+"+ end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
+  syn region dBlockComment	start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
+  syn region dNestedComment	start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+  syn match  dLineComment	"//.*" contains=dLineCommentString,dTodo,@Spell
 else
-  syn region  dBlockComment     start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
-  syn region  dNestedComment    start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
-  syn match   dLineComment      "//.*" contains=dLineCommentString,dTodo,@Spell
+  syn region dBlockComment	start="/\*"  end="\*/" contains=dBlockCommentString,dTodo,@Spell
+  syn region dNestedComment	start="/+"  end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+  syn match  dLineComment	"//.*" contains=dLineCommentString,dTodo,@Spell
 endif
 
-hi link dLineCommentString dBlockCommentString
-hi link dBlockCommentString dString
-hi link dNestedCommentString dString
-hi link dCommentStar  dBlockComment
-hi link dCommentPlus  dNestedComment
+hi link dLineCommentString	dBlockCommentString
+hi link dBlockCommentString	dString
+hi link dNestedCommentString	dString
+hi link dCommentStar		dBlockComment
+hi link dCommentPlus		dNestedComment
 
 syn sync minlines=25
 
@@ -118,54 +118,54 @@
 
 " Escape sequences (oct,specal char,hex,wchar). These are not contained
 " because they are considered string litterals
-syn match dEscSequence "\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
-syn match dCharacter  "'[^']*'" contains=dEscSequence,dSpecialCharError
-syn match dCharacter  "'\\''" contains=dEscSequence
-syn match dCharacter  "'[^\\]'"
+syn match dEscSequence	"\\\(\o\{1,3}\|[\"\\'\\?ntbrfva]\|u\x\{4}\|U\x\{8}\|x\x\x\)"
+syn match dCharacter	"'[^']*'" contains=dEscSequence,dSpecialCharError
+syn match dCharacter	"'\\''" contains=dEscSequence
+syn match dCharacter	"'[^\\]'"
 
 " Unicode characters
 "
-syn match   dUnicode "\\u\d\{4\}"
+syn match dUnicode "\\u\d\{4\}"
 
 " String.
 "
-syn region  dString start=+"+ end=+"+ contains=dEscSequence,@Spell
-syn region  dRawString start=+`+ skip=+\\`+ end=+`+ contains=@Spell
-syn region  dRawString start=+r"+ skip=+\\"+ end=+"+ contains=@Spell
-syn region  dHexString start=+x"+ skip=+\\"+ end=+"+
+syn region dString	start=+"+ end=+"+ contains=dEscSequence,@Spell
+syn region dRawString	start=+`+ skip=+\\`+ end=+`+ contains=@Spell
+syn region dRawString	start=+r"+ skip=+\\"+ end=+"+ contains=@Spell
+syn region dHexString	start=+x"+ skip=+\\"+ end=+"+
 
 " Numbers
 "
 syn case ignore
-syn match dInt        display "\<\d[0-9_]*\(u\=l\=\|l\=u\=\)\>"
+syn match dInt		display "\<\d[0-9_]*\(u\=l\=\|l\=u\=\)\>"
 " Hex number
-syn match dHex        display "\<0x[0-9a-f_]\+\(u\=l\=\|l\=u\=\)\>"
-syn match dHex        display "\<\x[0-9a-f_]*h\(u\=l\=\|l\=u\=\)\>"
+syn match dHex		display "\<0x[0-9a-f_]\+\(u\=l\=\|l\=u\=\)\>"
+syn match dHex		display "\<\x[0-9a-f_]*h\(u\=l\=\|l\=u\=\)\>"
 " Flag the first zero of an octal number as something special
-syn match dOctal      display "\<0[0-7_]\+\(u\=l\=\|l\=u\=\)\>" contains=cOctalZero
-syn match dOctalZero  display contained "\<0"
+syn match dOctal	display "\<0[0-7_]\+\(u\=l\=\|l\=u\=\)\>" contains=cOctalZero
+syn match dOctalZero	display contained "\<0"
 
 "floating point without the dot
-syn match dFloat      display "\<\d[0-9_]*\(fi\=\|l\=i\)\>"
+syn match dFloat	display "\<\d[0-9_]*\(fi\=\|l\=i\)\>"
 "floating point number, with dot, optional exponent
-syn match dFloat      display "\<\d[0-9_]*\.[0-9_]*\(e[-+]\=[0-9_]\+\)\=[fl]\=i\="
+syn match dFloat	display "\<\d[0-9_]*\.[0-9_]*\(e[-+]\=[0-9_]\+\)\=[fl]\=i\="
 "floating point number, starting with a dot, optional exponent
-syn match dFloat      display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>"
+syn match dFloat	display "\(\.[0-9_]\+\)\(e[-+]\=[0-9_]\+\)\=[fl]\=i\=\>"
 "floating point number, without dot, with exponent
-"syn match dFloat      display "\<\d\+e[-+]\=\d\+[fl]\=\>"
-syn match dFloat      display "\<\d[0-9_]*e[-+]\=[0-9_]\+[fl]\=\>"
+"syn match dFloat	display "\<\d\+e[-+]\=\d\+[fl]\=\>"
+syn match dFloat	display "\<\d[0-9_]*e[-+]\=[0-9_]\+[fl]\=\>"
 
 "floating point without the dot
-syn match dHexFloat      display "\<0x\x\+\(fi\=\|l\=i\)\>"
+syn match dHexFloat	display "\<0x\x\+\(fi\=\|l\=i\)\>"
 "floating point number, with dot, optional exponent
-syn match dHexFloat      display "\<0x\x\+\.\x*\(p[-+]\=\x\+\)\=[fl]\=i\="
+syn match dHexFloat	display "\<0x\x\+\.\x*\(p[-+]\=\x\+\)\=[fl]\=i\="
 "floating point number, without dot, with exponent
-syn match dHexFloat      display "\<0x\x\+p[-+]\=\x\+[fl]\=\>"
+syn match dHexFloat	display "\<0x\x\+p[-+]\=\x\+[fl]\=\>"
 
 " binary numbers
-syn match dBinary     display "\<0b[01_]\+\>"
+syn match dBinary	display "\<0b[01_]\+\>"
 " flag an octal number with wrong digits
-syn match dOctalError display "0\o*[89]\d*"
+syn match dOctalError	display "0\o*[89]\d*"
 syn case match
 
 " Pragma (preprocessor) support
diff --git a/runtime/syntax/iss.vim b/runtime/syntax/iss.vim
index 557cd0a..f94c7cd 100644
--- a/runtime/syntax/iss.vim
+++ b/runtime/syntax/iss.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
-" Language:	Inno Setup File (iss file) and My InnoSetup extension
-" Maintainer:	Dominique Stéphan (dominique@mggen.com)
-" Last change:	2004 July 5
+" Language:             Inno Setup File (iss file) and My InnoSetup extension
+" Maintainer:           Jason Mills (jmills@cs.mun.ca)
+" Previous Maintainer:  Dominique Stéphan (dominique@mggen.com)
+" Last Change:          2004 Jul 13
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -14,37 +15,40 @@
 " shut case off
 syn case ignore
 
+" Preprocessor
+syn region issPreProc start="^\s*#" end="$"
+
 " Section
-syn region issHeader		start="\[" end="\]"
+syn region issHeader            start="\[" end="\]"
 
 " Label in the [Setup] Section
-syn match  issLabel		"^[^=]\+="
+syn match  issLabel             "^[^=]\+="
 
 " URL
-syn match  issURL		"http[s]\=:\/\/.*$"
+syn match  issURL       "http[s]\=:\/\/.*$"
 
-" syn match  issName		"[^: ]\+:"
-syn match  issName		"Name:"
-syn match  issName		"MinVersion:\|OnlyBelowVersion:\|Languages:"
-syn match  issName		"Source:\|DestDir:\|DestName:\|CopyMode:"
-syn match  issName		"Attribs:\|Permissions:\|FontInstall:\|Flags:"
-syn match  issName		"FileName:\|Parameters:\|WorkingDir:\|HotKey:\|Comment:"
-syn match  issName		"IconFilename:\|IconIndex:"
-syn match  issName		"Section:\|Key:\|String:"
-syn match  issName		"Root:\|SubKey:\|ValueType:\|ValueName:\|ValueData:"
-syn match  issName		"RunOnceId:"
-syn match  issName		"Type:"
-syn match  issName		"Components:\|Description:\|GroupDescription:\|Types:\|ExtraDiskSpaceRequired:"
-syn match  issName              "StatusMsg:\|RunOnceId:\|Tasks:"
-syn match  issName              "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:"
+" syn match  issName    "[^: ]\+:"
+syn match  issName      "Name:"
+syn match  issName      "MinVersion:\|OnlyBelowVersion:\|Languages:"
+syn match  issName      "Source:\|DestDir:\|DestName:\|CopyMode:"
+syn match  issName      "Attribs:\|Permissions:\|FontInstall:\|Flags:"
+syn match  issName      "FileName:\|Parameters:\|WorkingDir:\|HotKey:\|Comment:"
+syn match  issName      "IconFilename:\|IconIndex:"
+syn match  issName      "Section:\|Key:\|String:"
+syn match  issName      "Root:\|SubKey:\|ValueType:\|ValueName:\|ValueData:"
+syn match  issName      "RunOnceId:"
+syn match  issName      "Type:"
+syn match  issName      "Components:\|Description:\|GroupDescription:\|Types:\|ExtraDiskSpaceRequired:"
+syn match  issName      "StatusMsg:\|RunOnceId:\|Tasks:"
+syn match  issName      "MessagesFile:\|LicenseFile:\|InfoBeforeFile:\|InfoAfterFile:"
 
-syn match  issComment		"^;.*$"
+syn match  issComment   "^;.*$"
 
 " folder constant
-syn match  issFolder		"{[^{]*}"
+syn match  issFolder    "{[^{]*}"
 
 " string
-syn region issString	start=+"+  end=+"+ contains=issFolder
+syn region issString    start=+"+  end=+"+ contains=issFolder
 
 " [Dirs]
 syn keyword issDirsFlags deleteafterinstall uninsalwaysuninstall uninsneveruninstall
@@ -104,31 +108,30 @@
   endif
 
    " The default methods for highlighting.  Can be overridden later
-   HiLink issHeader	Special
-   HiLink issComment	Comment
-   HiLink issLabel	Type
-   HiLink issName	Type
-   HiLink issFolder	Special
-   HiLink issString	String
-   HiLink issValue	String
-   HiLink issURL	Include
+   HiLink issHeader     Special
+   HiLink issComment    Comment
+   HiLink issLabel      Type
+   HiLink issName       Type
+   HiLink issFolder     Special
+   HiLink issString     String
+   HiLink issValue      String
+   HiLink issURL        Include
+   HiLink issPreProc    PreProc 
 
-   HiLink issDirsFlags		Keyword
-   HiLink issFilesCopyMode	Keyword
-   HiLink issFilesAttribs	Keyword
-   HiLink issFilesPermissions	Keyword
-   HiLink issFilesFlags		Keyword
-   HiLink issIconsFlags		Keyword
-   HiLink issINIFlags		Keyword
-   HiLink issRegRootKey		Keyword
-   HiLink issRegValueType	Keyword
-   HiLink issRegFlags		Keyword
-   HiLink issRunFlags		Keyword
-   HiLink issTypesFlags		Keyword
-   HiLink issComponentsFlags	Keyword
-   HiLink issInstallDeleteType	Keyword
-   HiLink issTasksFlags 	Keyword
-
+   HiLink issDirsFlags          Keyword
+   HiLink issFilesCopyMode      Keyword
+   HiLink issFilesAttribs       Keyword
+   HiLink issFilesFlags         Keyword
+   HiLink issIconsFlags         Keyword
+   HiLink issINIFlags           Keyword
+   HiLink issRegRootKey         Keyword
+   HiLink issRegValueType       Keyword
+   HiLink issRegFlags           Keyword
+   HiLink issRunFlags           Keyword
+   HiLink issTypesFlags         Keyword
+   HiLink issComponentsFlags    Keyword
+   HiLink issInstallDeleteType  Keyword
+   HiLink issTasksFlags         Keyword
 
   delcommand HiLink
 endif
diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim
index d3de35b..1d4f55d 100644
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -1,11 +1,14 @@
 " Vim syntax file
 " Language:	Scheme (R5RS)
-" Maintainer:	Dirk van Deun <dirk@igwe.vub.ac.be>
-" Last Change:	April 30, 1998
+" Last Change:	July 14, 2004
+" Maintainer:	Sergey Khorev <iamphet@nm.ru>
+" Original author:	Dirk van Deun <dirk@igwe.vub.ac.be>
 
 " This script incorrectly recognizes some junk input as numerals:
 " parsing the complete system of Scheme numerals using the pattern
 " language is practically impossible: I did a lax approximation.
+ 
+" MzScheme extensions can be activated with setting is_mzscheme variable
 
 " Suggestions and bug reports are solicited by the author.
 
@@ -23,12 +26,12 @@
 
 " Fascist highlighting: everything that doesn't fit the rules is an error...
 
-syn match	schemeError	oneline    ![^ \t()";]*!
+syn match	schemeError	oneline    ![^ \t()\[\]";]*!
 syn match	schemeError	oneline    ")"
 
 " Quoted and backquoted stuff
 
-syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn region schemeQuoted matchgroup=Delimiter start="['`]" end=![ \t()\[\]";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 
 syn region schemeQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 syn region schemeQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
@@ -36,15 +39,26 @@
 syn region schemeStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 syn region schemeStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 
-syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+" Popular Scheme extension:
+" using [] as well as ()
+syn region schemeStrucRestricted matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn region schemeStrucRestricted matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 
-syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
-syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn region schemeUnquote matchgroup=Delimiter start="," end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn region schemeUnquote matchgroup=Delimiter start=",@" end=![ \t\[\]()";]!me=e-1 contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+
+syn region schemeUnquote matchgroup=Delimiter start=",(" end=")" contains=ALL
+syn region schemeUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALL
 
 syn region schemeUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 syn region schemeUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
 
+syn region schemeUnquote matchgroup=Delimiter start=",\[" end="\]" contains=ALL
+syn region schemeUnquote matchgroup=Delimiter start=",@\[" end="\]" contains=ALL
+
+syn region schemeUnquote matchgroup=Delimiter start=",#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+syn region schemeUnquote matchgroup=Delimiter start=",@#\[" end="\]" contains=ALLBUT,schemeStruc,schemeSyntax,schemeFunc
+
 " R5RS Scheme Functions and Syntax:
 
 if version < 600
@@ -96,63 +110,126 @@
 syn keyword schemeFunc scheme-report-environment null-environment
 syn keyword schemeFunc interaction-environment
 
-" Writing out the complete description of Scheme numerals without
-" using variables is a day's work for a trained secretary...
-" This is a useful lax approximation:
-
-syn match	schemeNumber	oneline    "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
-syn match	schemeError	oneline    ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*!
-
-syn match	schemeOther	oneline    ![+-][ \t()";]!me=e-1
-syn match	schemeOther	oneline    ![+-]$!
 " ... so that a single + or -, inside a quoted context, would not be
 " interpreted as a number (outside such contexts, it's a schemeFunc)
 
-syn match	schemeDelimiter	oneline    !\.[ \t()";]!me=e-1
+syn match	schemeDelimiter	oneline    !\.[ \t\[\]()";]!me=e-1
 syn match	schemeDelimiter	oneline    !\.$!
 " ... and a single dot is not a number but a delimiter
 
-" Simple literals:
-
-syn match	schemeBoolean	oneline    "#[tf]"
-syn match	schemeError	oneline    !#[tf][^ \t()";]\+!
-
-syn match	schemeChar	oneline    "#\\"
-syn match	schemeChar	oneline    "#\\."
-syn match       schemeError	oneline    !#\\.[^ \t()";]\+!
-syn match	schemeChar	oneline    "#\\space"
-syn match	schemeError	oneline    !#\\space[^ \t()";]\+!
-syn match	schemeChar	oneline    "#\\newline"
-syn match	schemeError	oneline    !#\\newline[^ \t()";]\+!
-
 " This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
 
-syn match	schemeOther	oneline    ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*,
-syn match	schemeError	oneline    ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+syn match	schemeOther	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*,
+syn match	schemeError	oneline    ,[a-z!$%&*/:<=>?^_~+@#%-][-a-z!$%&*/:<=>?^_~0-9+.@#%]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
 syn match	schemeOther	oneline    "\.\.\."
-syn match	schemeError	oneline    !\.\.\.[^ \t()";]\+!
+syn match	schemeError	oneline    !\.\.\.[^ \t\[\]()";]\+!
 " ... a special identifier
 
-syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1
+syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t\[\]()";],me=e-1
 syn match	schemeConstant	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
-syn match	schemeError	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+syn match	schemeError	oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
-syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1
+syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t\[\]()";],me=e-1
 syn match	schemeConstant	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
-syn match	schemeError	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
+syn match	schemeError	oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t\[\]()";]\+[^ \t\[\]()";]*,
 
 " Non-quoted lists, and strings:
 
 syn region schemeStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL
 syn region schemeStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL
 
+syn region schemeStruc matchgroup=Delimiter start="\[" matchgroup=Delimiter end="\]" contains=ALL
+syn region schemeStruc matchgroup=Delimiter start="#\[" matchgroup=Delimiter end="\]" contains=ALL
+
+" Simple literals:
 syn region	schemeString	start=+"+  skip=+\\[\\"]+ end=+"+
 
 " Comments:
 
 syn match	schemeComment	";.*$"
 
+
+" Writing out the complete description of Scheme numerals without
+" using variables is a day's work for a trained secretary...
+
+syn match	schemeOther	oneline    ![+-][ \t\[\]()";]!me=e-1
+syn match	schemeOther	oneline    ![+-]$!
+"
+" This is a useful lax approximation:
+syn match	schemeNumber	oneline    "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
+syn match	schemeError	oneline    ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t\[\]()";][^ \t\[\]()";]*!
+
+syn match	schemeBoolean	oneline    "#[tf]"
+syn match	schemeError	oneline    !#[tf][^ \t\[\]()";]\+!
+
+syn match	schemeChar	oneline    "#\\"
+syn match	schemeChar	oneline    "#\\."
+syn match       schemeError	oneline    !#\\.[^ \t\[\]()";]\+!
+syn match	schemeChar	oneline    "#\\space"
+syn match	schemeError	oneline    !#\\space[^ \t\[\]()";]\+!
+syn match	schemeChar	oneline    "#\\newline"
+syn match	schemeError	oneline    !#\\newline[^ \t\[\]()";]\+!
+
+if exists("b:is_mzscheme") || exists("is_mzscheme")
+    " MzScheme extensions added by Sergey Khorev
+    " multiline comment
+    syntax region schemeMultilineComment start=/#|/ end=/|#/
+    " #%xxx are the special MzScheme identifiers
+    syn match schemeOther oneline    "#%[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    " anything limited by |'s is identifier
+    syn match schemeOther oneline    "|[^|]\+|"
+
+    syn match	schemeChar	oneline    "#\\return"
+
+    " Modules require stmt
+    syn keyword schemeExtSyntax module require dynamic-require lib prefix all-except prefix-all-except rename
+    " modules provide stmt
+    syn keyword schemeExtSyntax provide struct all-from all-from-except all-defined all-defined-except
+    " Other from MzScheme
+    syn keyword schemeExtSyntax with-handlers when unless instantiate define-struct case-lambda syntax-case
+    syn keyword schemeExtSyntax free-identifier=? bound-identifier=? module-identifier=? syntax-object->datum
+    syn keyword schemeExtSyntax datum->syntax-object
+    syn keyword schemeExtSyntax let-values let*-values letrec-values set!-values fluid-let parameterize begin0
+    syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature 
+    syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
+    syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
+    hi def link schemeExtSyntax Type
+
+    syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
+    syn keyword schemeExtFunc use-standard-linker use-standard-compiler
+    syn keyword schemeExtFunc find-executable-path append-object-suffix append-extension-suffix
+    syn keyword schemeExtFunc current-library-collection-paths current-extension-compiler-flags make-parameter
+    syn keyword schemeExtFunc current-directory build-path normalize-path current-extension-linker-flags
+    syn keyword schemeExtFunc file-exists? directory-exists? delete-directory/files delete-directory delete-file
+    syn keyword schemeExtFunc system compile-file system-library-subpath getenv putenv current-standard-link-libraries
+    syn keyword schemeExtFunc remove* file-size find-files fold-files directory-list shell-execute split-path
+    syn keyword schemeExtFunc current-error-port process/ports process printf fprintf open-input-string open-output-string
+    syn keyword schemeExtFunc get-output-string
+    " exceptions
+    syn keyword schemeExtFunc exn exn:application:arity exn:application:continuation exn:application:fprintf:mismatch
+    syn keyword schemeExtFunc exn:application:mismatch exn:application:type exn:application:mismatch exn:break exn:i/o:filesystem exn:i/o:port
+    syn keyword schemeExtFunc exn:i/o:port:closed exn:i/o:tcp exn:i/o:udp exn:misc exn:misc:application exn:misc:unsupported exn:module exn:read
+    syn keyword schemeExtFunc exn:read:non-char exn:special-comment exn:syntax exn:thread exn:user exn:variable exn:application:mismatch
+    syn keyword schemeExtFunc exn? exn:application:arity? exn:application:continuation? exn:application:fprintf:mismatch? exn:application:mismatch?
+    syn keyword schemeExtFunc exn:application:type? exn:application:mismatch? exn:break? exn:i/o:filesystem? exn:i/o:port? exn:i/o:port:closed?
+    syn keyword schemeExtFunc exn:i/o:tcp? exn:i/o:udp? exn:misc? exn:misc:application? exn:misc:unsupported? exn:module? exn:read? exn:read:non-char?
+    syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
+    " Command-line parsing
+    syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each 
+    hi def link schemeExtFunc PreProc
+
+    " syntax quoting, unquoting and quasiquotation
+    syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
+    syn region schemeUnquote matchgroup=Delimiter start="#,@" end=![ \t\[\]()";]!me=e-1 contains=ALL
+    syn region schemeUnquote matchgroup=Delimiter start="#,(" end=")" contains=ALL
+    syn region schemeUnquote matchgroup=Delimiter start="#,@(" end=")" contains=ALL
+    syn region schemeUnquote matchgroup=Delimiter start="#,\[" end="\]" contains=ALL
+    syn region schemeUnquote matchgroup=Delimiter start="#,@\[" end="\]" contains=ALL
+    syn region schemeQuoted matchgroup=Delimiter start="#['`]" end=![ \t()\[\]";]!me=e-1 contains=ALL
+    syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
+endif
+
 " Synchronization and the wrapping up...
 
 syn sync match matchPlace grouphere NONE "^[^ \t]"
@@ -181,6 +258,7 @@
   HiLink schemeConstant	Constant
 
   HiLink schemeComment		Comment
+  HiLink schemeMultilineComment	Comment
   HiLink schemeError		Error
 
   delcommand HiLink