updated for version 7.2c-000
diff --git a/runtime/syntax/2html.vim b/runtime/syntax/2html.vim
index bd40166..ee66bf6 100644
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2007 Aug 31
+" Last Change: 2008 Jul 17
 "	       (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
 "	       (XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>)
 "	       (made w3 compliant by Edd Barrett <vext01@gmail.com>)
@@ -238,7 +238,7 @@
 let s:HtmlEndline = ''
 if exists("html_no_pre")
   let s:HtmlEndline = '<br' . s:tag_close
-    let s:LeadingSpace = '&nbsp;'
+  let s:LeadingSpace = '&nbsp;'
   let s:HtmlSpace = '\' . s:LeadingSpace
 endif
 
diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim
index bbefd6f..42d4cfd 100644
--- a/runtime/syntax/autohotkey.vim
+++ b/runtime/syntax/autohotkey.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         AutoHotkey script file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-06-01
+" Latest Revision:  2008-06-22
 
 if exists("b:current_syntax")
   finish
@@ -246,6 +246,15 @@
       \ true
       \ false
 
+" TODO: Shouldn't we look for g:, b:,  variables before defaulting to
+" something?
+if exists("g:autohotkey_syntax_sync_minlines")
+  let b:autohotkey_syntax_sync_minlines = g:autohotkey_syntax_sync_minlines
+else
+  let b:autohotkey_syntax_sync_minlines = 50
+endif
+exec "syn sync ccomment autohotkeyComment minlines=" . b:autohotkey_syntax_sync_minlines
+
 hi def link autohotkeyTodo                Todo
 hi def link autohotkeyComment             Comment
 hi def link autohotkeyCommentStart        autohotkeyComment
diff --git a/runtime/syntax/bzr.vim b/runtime/syntax/bzr.vim
index afbae1a..2968f79 100644
--- a/runtime/syntax/bzr.vim
+++ b/runtime/syntax/bzr.vim
@@ -4,7 +4,7 @@
 " URL:          http://www.hlabs.spb.ru/vim/bzr.vim
 " Revision:     $Id$
 " Filenames:    bzr_log.*
-" Version:      1.0
+" Version:      1.1
 
 " For version 5.x: Clear all syntax items.
 " For version 6.x: Quit when a syntax file was already loaded.
@@ -14,7 +14,7 @@
   finish
 endif
 
-syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL
+syn region bzrRegion   start="^-\{14} This line and the following will be ignored -\{14}$" end="\%$" contains=ALL contains=@NoSpell
 syn match bzrRemoved   "^removed:$" contained
 syn match bzrAdded     "^added:$" contained
 syn match bzrRenamed   "^renamed:$" contained
diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim
index 4916b4d..fb4d3cc 100644
--- a/runtime/syntax/doxygen.vim
+++ b/runtime/syntax/doxygen.vim
@@ -1,11 +1,11 @@
 " DoxyGen syntax hilighting extension for c/c++/idl/java
-" Language:     doxygen on top of c, cpp, idl, java
+" Language:     doxygen on top of c, cpp, idl, java, php
 " Maintainer:   Michael Geddes <vimmer@frog.wheelycreek.net>
 " Author:       Michael Geddes
-" Last Change:  April 2007
-" Version:      1.20
+" Last Change:  July 2008
+" Version:      1.22
 "
-" Copyright 2004-2006 Michael Geddes
+" Copyright 2004-2008 Michael Geddes
 " Please feel free to use, modify & distribute all or part of this script,
 " providing this copyright message remains.
 " I would appreciate being acknowledged in any derived scripts, and would
@@ -30,12 +30,14 @@
 " also be set to any highlight attribute. Alternatively, a highlight for doxygenCodeWord
 " can be used to override it.
 "
-" By default, highlighting is done assumng you have the JAVADOC_AUTOBRIEF
+" By default, highlighting is done assuming you have the JAVADOC_AUTOBRIEF
 " setting turned on in your Doxygen configuration.  If you don't, you
 " can set the variable g:doxygen_javadoc_autobrief to 0 to have the
 " highlighting more accurately reflect the way Doxygen will interpret your
 " comments.
 "
+" Support for cpp, c, idl, doxygen and php.
+"
 " Special thanks to:  Wu Yongwei, Toby Allsopp
 "
 
@@ -56,10 +58,10 @@
   "
 
   " C/C++ Style line comments
-  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend fold
-  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL keepend skipwhite skipnl nextgroup=doxygenComment2 fold
-  syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL keepend skipwhite skipnl fold
-  syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial fold
+  syn region doxygenComment start=+/\*\(\*/\)\@![*!]+  end=+\*/+ contains=doxygenSyncStart,doxygenStart,doxygenTODO keepend fold containedin=phpRegion
+  syn region doxygenCommentL start=+//[/!]<\@!+me=e-1 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl nextgroup=doxygenComment2 fold containedin=phpRegion
+  syn region doxygenCommentL start=+//[/!]<+me=e-2 end=+$+ contains=doxygenStartL,@Spell keepend skipwhite skipnl fold containedin=phpRegion
+  syn region doxygenCommentL start=+//@\ze[{}]+ end=+$+ contains=doxygenGroupDefine,doxygenGroupDefineSpecial,@Spell fold containedin=phpRegion
 
   " Single line brief followed by multiline comment.
   syn region doxygenComment2 start=+/\*\(\*/\)\@![*!]+ end=+\*/+ contained contains=doxygenSyncStart2,doxygenStart2,doxygenTODO keepend fold
@@ -98,7 +100,7 @@
   " This helps with sync-ing as for some reason, syncing behaves differently to a normal region, and the start pattern does not get matched.
   syn match doxygenSyncStart +\ze[^*/]+ contained nextgroup=doxygenBrief,doxygenPrev,doxygenStartSpecial,doxygenFindBriefSpecial,doxygenStartSkip,doxygenPage skipwhite skipnl
 
-  syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink  skipwhite keepend
+  syn region doxygenBriefLine contained start=+\<\k+ end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ contains=doxygenContinueComment,doxygenFindBriefSpecial,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell  skipwhite keepend
 
   " Match a '<' for applying a comment to the previous element.
   syn match doxygenPrev +<+ contained nextgroup=doxygenBrief,doxygenBody,doxygenSpecial,doxygenStartSkip skipwhite
diff --git a/runtime/syntax/forth.vim b/runtime/syntax/forth.vim
index a61f7db..8713a72 100644
--- a/runtime/syntax/forth.vim
+++ b/runtime/syntax/forth.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    FORTH
 " Maintainer:  Christian V. J. Brüssow <cvjb@cvjb.de>
-" Last Change: Sa 14 Jul 2007 21:39:53 CEST
+" Last Change: Sa 09 Feb 2008 13:27:29 CET
 " Filenames:   *.fs,*.ft
 " URL:	       http://www.cvjb.de/comp/vim/forth.vim
 
@@ -10,9 +10,17 @@
 " The list of keywords is incomplete, compared with the offical ANS
 " wordlist. If you use this language, please improve it, and send me
 " the patches.
+"
+" Before sending me patches, please download the newest version of this file
+" from http://www.cvjb.de/comp/vim/forth.vim or http://www.vim.org/ (search
+" for forth.vim).
 
 " Many Thanks to...
 "
+" 2008-02-09:
+" Shawn K. Quinn <sjquinn at speakeasy dot net> send a big patch with
+" new words commonly used in Forth programs or defined by GNU Forth.
+"
 " 2007-07-11:
 " Benjamin Krill <ben at codiert dot org> send me a patch
 " to highlight space errors.
@@ -79,7 +87,7 @@
 syn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\='
 
 " Characters allowed in keywords
-" I don't know if 128-255 are allowed in ANS-FORHT
+" I don't know if 128-255 are allowed in ANS-FORTH
 if version >= 600
     setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
 else
@@ -100,21 +108,27 @@
 
 " basic mathematical and logical operators
 syn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX
-syn keyword forthOperators AND OR XOR NOT INVERT 2* 2/ 1+ 1- 2+ 2- 8*
+syn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+
+syn keyword forthOperators 1- 2+ 2- 8* UNDER+
 syn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM
-syn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX
+syn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/
 syn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND
 syn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN
 syn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH
-syn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH
-syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >=
-syn keyword forthOperators ?NEGATE ?DNEGATE
+syn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F
+syn keyword forthOperators F~REL F~ABS F~
+syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<=
+syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<>
+syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE
+syn keyword forthOperators ?DNEGATE 
 
 " stack manipulations
 syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL
-syn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT
-syn keyword forthStack 3DUP 4DUP
+syn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT
+syn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT
+syn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP
 syn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP
+syn keyword forthRstack 4>R 4R> 4R@ 4RDROP
 syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT
 
 " stack pointer manipulations
@@ -139,24 +153,40 @@
 syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT
 
 " new words
+syn match forthClassDef '\<:class\s*[^ \t]\+\>'
+syn match forthObjectDef '\<:object\s*[^ \t]\+\>'
 syn match forthColonDef '\<:m\?\s*[^ \t]\+\>'
 syn keyword forthEndOfColonDef ; ;M ;m
-syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE CREATE
-syn keyword forthDefine USER VALUE TO DEFER IS DOES> IMMEDIATE COMPILE-ONLY
-syn keyword forthDefine COMPILE RESTRICT INTERPRET POSTPONE EXECUTE LITERAL
-syn keyword forthDefine CREATE-INTERPRET/COMPILE INTERPRETATION> <INTERPRETATION
-syn keyword forthDefine COMPILATION> <COMPILATION ] LASTXT COMP' POSTPONE,
-syn keyword forthDefine FIND-NAME NAME>INT NAME?INT NAME>COMP NAME>STRING STATE
-syn keyword forthDefine C; CVARIABLE
+syn keyword forthEndOfClassDef ;class
+syn keyword forthEndOfObjectDef ;object
+syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
+syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE
+syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
+syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
+syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
+syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
+syn keyword forthDefine NAME>STRING STATE C; CVARIABLE
+syn keyword forthDefine , 2, F, C, 
+syn match forthDefine "\[IFDEF]"
+syn match forthDefine "\[IFUNDEF]"
+syn match forthDefine "\[THEN]"
+syn match forthDefine "\[ENDIF]"
+syn match forthDefine "\[ELSE]"
+syn match forthDefine "\[?DO]"
+syn match forthDefine "\[DO]"
+syn match forthDefine "\[LOOP]"
+syn match forthDefine "\[+LOOP]"
+syn match forthDefine "\[NEXT]"
+syn match forthDefine "\[BEGIN]"
+syn match forthDefine "\[UNTIL]"
+syn match forthDefine "\[AGAIN]"
+syn match forthDefine "\[WHILE]"
+syn match forthDefine "\[REPEAT]"
 syn match forthDefine "\[COMP']"
 syn match forthDefine "'"
 syn match forthDefine '\<\[\>'
 syn match forthDefine "\[']"
 syn match forthDefine '\[COMPILE]'
-syn match forthClassDef '\<:class\s*[^ \t]\+\>'
-syn match forthObjectDef '\<:object\s*[^ \t]\+\>'
-syn keyword forthEndOfClassDef ';class'
-syn keyword forthEndOfObjectDef ';object'
 
 " debugging
 syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE
@@ -175,27 +205,48 @@
 syn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+
 
 " char-number conversion
-syn keyword forthConversion <# # #> #S (NUMBER) (NUMBER?) CONVERT D>F D>S DIGIT
-syn keyword forthConversion DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
+syn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F 
+syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
+syn keyword forthConversion F>S S>F
 
 " interptreter, wordbook, compiler
 syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
 syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
-syn keyword forthForth BODY>
+syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
 syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+
 
 " vocabularies
 syn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS
 syn keyword forthVocs VOCABULARY DEFINITIONS
 
+" File keywords
+syn keyword forthFileMode R/O R/W W/O BIN 
+syn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE
+syn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE
+syn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE
+syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION
+syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE
+syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR
+syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET
+syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK
+syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED?
+syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU
+syn keyword forthBlocks BLOCK-INCLUDED
+
 " numbers
 syn keyword forthMath DECIMAL HEX BASE
 syn match forthInteger '\<-\=[0-9.]*[0-9.]\+\>'
+syn match forthInteger '\<&-\=[0-9.]*[0-9.]\+\>'
 " recognize hex and binary numbers, the '$' and '%' notation is for gforth
 syn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess
 syn match forthInteger '\<\x*\d\x*\>'  " *2* --- this order!
 syn match forthInteger '\<%[0-1]*[0-1]\+\>'
-syn match forthFloat '\<-\=\d*[.]\=\d\+[Ee]\d\+\>'
+syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>'
+syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
+
+" XXX If you find this overkill you can remove it. this has to come after the
+" highlighting for numbers otherwise it has no effect.
+syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
 
 " Strings
 syn region forthString start=+\.*\"+ end=+"+ end=+$+
@@ -212,9 +263,15 @@
 
 " Include files
 syn match forthInclude '^INCLUDE\s\+\k\+'
+syn match forthInclude '^require\s\+\k\+'
 syn match forthInclude '^fload\s\+'
 syn match forthInclude '^needs\s\+'
 
+" Locals definitions
+syn region forthLocals start='{\s' start='{$' end='\s}' end='^}'
+syn match forthLocals '{ }' " otherwise, at least two spaces between
+syn region forthDeprecated start='locals|' end='|'
+
 " 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
@@ -257,6 +314,11 @@
     HiLink forthObjectDef Define
     HiLink forthEndOfObjectDef Define
     HiLink forthInclude Include
+    HiLink forthLocals Type " nothing else uses type and locals must stand out
+    HiLink forthDeprecated Error " if you must, change to Type
+    HiLink forthFileMode Function
+    HiLink forthFileWords Statement
+    HiLink forthBlocks Statement
     HiLink forthSpaceError Error
 
     delcommand HiLink
diff --git a/runtime/syntax/mailaliases.vim b/runtime/syntax/mailaliases.vim
index de85a17..743068f 100644
--- a/runtime/syntax/mailaliases.vim
+++ b/runtime/syntax/mailaliases.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         aliases(5) local alias database file
 " Maintainer:       Nikolai Weibull <nikolai@bitwi.se>
-" Latest Revision:  2006-01-14
+" Latest Revision:  2008-04-14
 
 if exists("b:current_syntax")
   finish
@@ -19,7 +19,7 @@
                                     \ nextgroup=mailaliasesName,
                                     \ mailaliasesComment
 
-syn match   mailaliasesName         contained '[0-9A-Za-z_-]\+'
+syn match   mailaliasesName         contained '[[:alnum:]\._-]\+'
                                     \ nextgroup=mailaliasesColon
 
 syn region  mailaliasesName         contained oneline start=+"+
diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim
index 5e72f4e..e9d7ee9 100644
--- a/runtime/syntax/make.vim
+++ b/runtime/syntax/make.vim
@@ -2,7 +2,7 @@
 " Language:	Makefile
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/make.vim
-" Last Change:	2007 Apr 30
+" Last Change:	2008 Aug 04
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -63,7 +63,7 @@
 
 
 " Statements / Functions (GNU make)
-syn match makeStatement contained "(\(subst\|addprefix\|addsuffix\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|foreach\|if\|join\|notdir\|origin\|patsubst\|shell\|sort\|strip\|suffix\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
+syn match makeStatement contained "(\(subst\|abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
 
 " Comment
 if exists("make_microsoft")
diff --git a/runtime/syntax/modconf.vim b/runtime/syntax/modconf.vim
index d4e8827..54b6593 100644
--- a/runtime/syntax/modconf.vim
+++ b/runtime/syntax/modconf.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         modules.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-06-17
+" Latest Revision:  2007-10-25
 
 if exists("b:current_syntax")
   finish
@@ -21,7 +21,7 @@
 
 syn keyword modconfPreProc      alias define include keep prune
                                 \ post-install post-remove pre-install
-                                \ pre-remove persistdir
+                                \ pre-remove persistdir blacklist
 
 syn keyword modconfKeyword      add above below install options probe probeall
                                 \ remove
diff --git a/runtime/syntax/natural.vim b/runtime/syntax/natural.vim
index f7f140f..2628151 100644
--- a/runtime/syntax/natural.vim
+++ b/runtime/syntax/natural.vim
@@ -1,205 +1,209 @@
 " Vim syntax file
 "
-" Language:		NATURAL
-" Version:		2.0.26.17
-" Maintainer:	Marko Leipert <vim@mleipert.de>
-" Last Changed:	2002-02-28 09:50:36
-" Support:		http://www.winconsole.de/vim/syntax.html
+" Language:	NATURAL
+" Version:	2.1.0.3
+" Maintainer:	Marko von Oppen <marko@von-oppen.com>
+" Last Changed:	2008-07-29 01:40:52
+" Support:	http://www.von-oppen.com/
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when this syntax file was already loaded
 if v:version < 600
-	syntax clear
-	set iskeyword+=-,*,#,+,_,/
+  syntax clear
+  set iskeyword+=-,*,#,+,_,/
 elseif exists("b:current_syntax")
-	finish
+  finish
 else
-	setlocal iskeyword+=-,*,#,+,_,/
+  setlocal iskeyword+=-,*,#,+,_,/
 endif
 
 " NATURAL is case insensitive
 syntax case ignore
 
 " preprocessor
-syn keyword naturalInclude		include nextgroup=naturalObjName skipwhite
+syn keyword naturalInclude	include nextgroup=naturalObjName skipwhite
 
 " define data
-syn keyword naturalKeyword		define data end-define
-syn keyword naturalKeyword		independent global parameter local redefine view
-syn keyword naturalKeyword		const[ant] init initial
+syn keyword naturalKeyword	define data end-define
+syn keyword naturalKeyword	independent global parameter local redefine view
+syn keyword naturalKeyword	const[ant] init initial
 
 " loops
-syn keyword naturalLoop			read end-read end-work find end-find histogram end-histogram
-syn keyword naturalLoop			end-all sort end-sort sorted descending ascending
-syn keyword naturalRepeat		repeat end-repeat while until for step end-for
-syn keyword naturalKeyword		in file with field starting from ending at thru by isn where
-syn keyword naturalError		on error end-error
-syn keyword naturalKeyword		accept reject end-enddata number unique retain as release
-syn keyword naturalKeyword		start end-start break end-break physical page top sequence
-syn keyword naturalKeyword		end-toppage end-endpage end-endfile before processing
-syn keyword naturalKeyword		end-before
+syn keyword naturalLoop		read end-read end-work find end-find histogram end-histogram
+syn keyword naturalLoop		end-all sort end-sort sorted descending ascending
+syn keyword naturalRepeat	repeat end-repeat while until for step end-for
+syn keyword naturalKeyword	in file with field starting from ending at thru by isn where
+syn keyword naturalError	on error end-error
+syn keyword naturalKeyword	accept reject end-enddata number unique retain as release
+syn keyword naturalKeyword	start end-start break end-break physical page top sequence
+syn keyword naturalKeyword	end-toppage end-endpage end-endfile before processing
+syn keyword naturalKeyword	end-before
 
 " conditionals
 syn keyword naturalConditional	if then else end-if end-norec
 syn keyword naturalConditional	decide end-decide value when condition none any
 
 " assignment / calculation
-syn keyword naturalKeyword		reset assign move left right justified compress to into edited
-syn keyword naturalKeyword		add subtract multiply divide compute name
-syn keyword naturalKeyword		all giving remainder rounded leaving space
-syn keyword naturalKeyword		examine full replace giving separate delimiter modified
-syn keyword naturalKeyword		suspend identical suppress
+syn keyword naturalKeyword	reset assign move left right justified compress to into edited
+syn keyword naturalKeyword	add subtract multiply divide compute name
+syn keyword naturalKeyword	all giving remainder rounded leaving space numeric
+syn keyword naturalKeyword	examine full replace giving separate delimiter modified
+syn keyword naturalKeyword	suspend identical suppress
 
 " program flow
-syn keyword naturalFlow			callnat fetch return enter escape bottom top stack formatted
-syn keyword naturalFlow			command call
-syn keyword naturalflow			end-subroutine routine
+syn keyword naturalFlow		callnat fetch return enter escape bottom top stack formatted
+syn keyword naturalFlow		command call
+syn keyword naturalflow		end-subroutine routine
 
 " file operations
-syn keyword naturalKeyword		update store get delete end transaction work once close
+syn keyword naturalKeyword	update store get delete end transaction work once close
 
 " other keywords
-syn keyword naturalKeyword		first every of no record[s] found ignore immediate
-syn keyword naturalKeyword		set settime key control stop terminate
+syn keyword naturalKeyword	first every of no record[s] found ignore immediate
+syn keyword naturalKeyword	set settime key control stop terminate
 
 " in-/output
-syn keyword naturalKeyword		write display input reinput notitle nohdr map newpage mark
-syn keyword naturalKeyword		alarm text help eject index
-syn keyword naturalKeyword		format printer skip lines
+syn keyword naturalKeyword	write display input reinput notitle nohdr map newpage
+syn keyword naturalKeyword	alarm text help eject index window base size
+syn keyword naturalKeyword	format printer skip lines
 
 " functions
-syn keyword naturalKeyword		abs atn cos exp frac int log sgn sin sqrt tan val old
+syn keyword naturalKeyword	abs atn cos exp frac int log sgn sin sqrt tan val old
+syn keyword naturalKeyword	pos
 
 " report mode keywords
 syn keyword naturalRMKeyword	same loop obtain indexed do doend
 
 " Subroutine name
-syn keyword	naturalFlow			perform subroutine nextgroup=naturalFunction skipwhite
-syn match	naturalFunction		"\<[a-z][-_a-z0-9]*\>"
+syn keyword naturalFlow		perform subroutine nextgroup=naturalFunction skipwhite
+syn match   naturalFunction	"\<[a-z][-_a-z0-9]*\>"
 
-syn keyword	naturalFlow			using nextgroup=naturalKeyword,naturalObjName skipwhite
-syn match	naturalObjName		"\<[a-z][-_a-z0-9]\{,7}\>"
+syn keyword naturalFlow		using nextgroup=naturalKeyword,naturalObjName skipwhite
+syn match   naturalObjName	"\<[a-z][-_a-z0-9]\{,7}\>"
 
 " Labels
-syn match	naturalLabel		"\<[+#a-z][-_#a-z0-9]*\."
-syn match	naturalRef			"\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>"
+syn match   naturalLabel	"\<[+#a-z][-_#a-z0-9]*\."
+syn match   naturalRef		"\<[+#a-z][-_#a-z0-9]*\>\.\<[+#a-z][*]\=[-_#a-z0-9]*\>"
+
+" mark keyword special handling
+syn keyword naturalKeyword	mark nextgroup=naturalMark skipwhite
+syn match   naturalMark		"\<\*[a-z][-_#.a-z0-9]*\>"
 
 " System variables
-syn match	naturalSysVar		"\<\*[a-z][-a-z0-9]*\>"
+syn match   naturalSysVar	"\<\*[a-z][-a-z0-9]*\>"
 
 "integer number, or floating point number without a dot.
-syn match	naturalNumber		"\<-\=\d\+\>"
+syn match   naturalNumber	"\<-\=\d\+\>"
 "floating point number, with dot
-syn match	naturalNumber		"\<-\=\d\+\.\d\+\>"
+syn match   naturalNumber	"\<-\=\d\+\.\d\+\>"
 "floating point number, starting with a dot
-syn match	naturalNumber		"\.\d\+"
+syn match   naturalNumber	"\.\d\+"
 
 " Formats in write statement
-syn match	naturalFormat		"\<\d\+[TX]\>"
+syn match   naturalFormat	"\<\d\+[TX]\>"
 
 " String and Character contstants
-syn match	naturalString		"H'\x\+'"
-syn region  naturalString		start=+"+ end=+"+
-syn region	naturalString		start=+'+ end=+'+
+syn match   naturalString	"H'\x\+'"
+syn region  naturalString	start=+"+ end=+"+
+syn region  naturalString	start=+'+ end=+'+
 
 " Type definition
-syn match	naturalAttribute	"\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>"
-syn match	naturalType			contained "\<[ABINP]\d\+\(,\d\+\)\=\>"
-syn match	naturalType			contained "\<[CL]\>"
+syn match   naturalAttribute	"\<[-a-z][a-z]=[-a-z0-9_\.,]\+\>"
+syn match   naturalType		contained "\<[ABINP]\d\+\(,\d\+\)\=\>"
+syn match   naturalType		contained "\<[CL]\>"
 
 " "TODO" / other comments
-syn keyword naturalTodo			contained todo test
-syn match	naturalCommentMark	contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1
+syn keyword naturalTodo		contained todo test
+syn match   naturalCommentMark	contained "[a-z][^ \t/:|]*\(\s[^ \t/:'"|]\+\)*:\s"he=e-1
 
 " comments
-syn region	naturalComment		start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
-syn region	naturalComment		start="^\*[\ \*]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
-syn region	naturalComment		start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
-syn match	naturalComment		"^*$"
-syn match	naturalComment		"^\d\{4} \*$"lc=5
+syn region  naturalComment	start="/\*" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn region  naturalComment	start="^\*[ *]" end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn region  naturalComment	start="^\d\{4} \*[\ \*]"lc=5 end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn match   naturalComment	"^\*$"
+syn match   naturalComment	"^\d\{4} \*$"lc=5
 " /* is legal syntax in parentheses e.g. "#ident(label./*)"
-syn region	naturalPComment		contained start="/\*\s*[^),]"  end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
+syn region  naturalPComment	contained start="/\*\s*[^),]"  end="$" contains=naturalTodo,naturalLineRef,naturalCommentMark
 
 " operators
-syn keyword	naturalOperator		and or not eq ne gt lt ge le mask scan
+syn keyword naturalOperator	and or not eq ne gt lt ge le mask scan modified
 
 " constants
-syn keyword naturalBoolean		true false
-
-syn match	naturalLineNo		"^\d\{4}"
+syn keyword naturalBoolean	true false
+syn match   naturalLineNo	"^\d\{4}"
 
 " identifiers
-syn match	naturalIdent		"\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1
-syn match	naturalIdent		"\<[+#a-z][-_#a-z0-9]*$"
-syn match	naturalLegalIdent	"[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*"
+syn match   naturalIdent	"\<[+#a-z][-_#a-z0-9]*\>[^\.']"me=e-1
+syn match   naturalIdent	"\<[+#a-z][-_#a-z0-9]*$"
+syn match   naturalLegalIdent	"[+#a-z][-_#a-z0-9]*/[-_#a-z0-9]*"
 
 " parentheses
-syn region  naturalPar			matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment
-syn match	naturalLineRef		"(\d\{4})"
+syn region  naturalPar		matchgroup=naturalParGui start="(" end=")" contains=naturalLabel,naturalRef,naturalOperator,@naturalConstant,naturalType,naturalSysVar,naturalPar,naturalLineNo,naturalPComment
+syn match   naturalLineRef	"(\d\{4})"
 
 " build syntax groups
 syntax cluster naturalConstant	contains=naturalString,naturalNumber,naturalAttribute,naturalBoolean
 
 " folding
 if v:version >= 600
-	set foldignore=*
+  set foldignore=*
 endif
 
 
 if v:version >= 508 || !exists("did_natural_syntax_inits")
-	if v:version < 508
-		let did_natural_syntax_inits = 1
-		command -nargs=+ HiLink hi link <args>
-	else
-		command -nargs=+ HiLink hi def link <args>
-	endif
-	" The default methods for highlighting.  Can be overridden later
+  if v:version < 508
+    let did_natural_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+  " The default methods for highlighting.  Can be overridden later
 
-	" Constants
-	HiLink naturalFormat		Constant
-	HiLink naturalAttribute		Constant
-	HiLink naturalNumber		Number
-	HiLink naturalString		String
-	HiLink naturalBoolean		Boolean
+  " Constants
+  HiLink naturalFormat		Constant
+  HiLink naturalAttribute	Constant
+  HiLink naturalNumber		Number
+  HiLink naturalString		String
+  HiLink naturalBoolean		Boolean
 
-	" All kinds of keywords
-	HiLink naturalConditional	Conditional
-	HiLink naturalRepeat		Repeat
-	HiLink naturalLoop			Repeat
-	HiLink naturalFlow			Keyword
-	HiLink naturalError			Keyword
-	HiLink naturalKeyword		Keyword
-	HiLink naturalOperator		Operator
-	HiLink naturalParGui		Operator
+  " All kinds of keywords
+  HiLink naturalConditional	Conditional
+  HiLink naturalRepeat		Repeat
+  HiLink naturalLoop		Repeat
+  HiLink naturalFlow		Keyword
+  HiLink naturalError		Keyword
+  HiLink naturalKeyword		Keyword
+  HiLink naturalOperator	Operator
+  HiLink naturalParGui		Operator
 
-	" Labels
-	HiLink naturalLabel			Label
-	HiLink naturalRefLabel		Label
+  " Labels
+  HiLink naturalLabel		Label
+  HiLink naturalRefLabel	Label
 
-	" Comments
-	HiLink naturalPComment		Comment
-	HiLink naturalComment		Comment
-	HiLink naturalTodo			Todo
-	HiLink naturalCommentMark	PreProc
+  " Comments
+  HiLink naturalPComment	Comment
+  HiLink naturalComment		Comment
+  HiLink naturalTodo		Todo
+  HiLink naturalCommentMark	PreProc
 
-	HiLink naturalInclude		Include
-	HiLink naturalSysVar		Identifier
-	HiLink naturalLineNo		LineNr
-	HiLink naturalLineRef		Error
-	HiLink naturalSpecial		Special
-	HiLink naturalComKey		Todo
+  HiLink naturalInclude		Include
+  HiLink naturalSysVar		Identifier
+  HiLink naturalLineNo		LineNr
+  HiLink naturalLineRef		Error
+  HiLink naturalSpecial		Special
+  HiLink naturalComKey		Todo
 
-	" illegal things
-	HiLink naturalRMKeyword		Error
-	HiLink naturalLegalIdent	Error
+  " illegal things
+  HiLink naturalRMKeyword	Error
+  HiLink naturalLegalIdent	Error
 
-	HiLink naturalType			Type
-	HiLink naturalFunction		Function
-	HiLink naturalObjName		Function
+  HiLink naturalType		Type
+  HiLink naturalFunction	Function
+  HiLink naturalObjName		PreProc
 
-	delcommand HiLink
+  delcommand HiLink
 endif
 
 let b:current_syntax = "natural"
 
-" vim:set ts=4 sw=4 noet ft=vim list:
+" vim:set ts=8 sw=8 noet ft=vim:
diff --git a/runtime/syntax/racc.vim b/runtime/syntax/racc.vim
index 795b652..d412227 100644
--- a/runtime/syntax/racc.vim
+++ b/runtime/syntax/racc.vim
@@ -1,7 +1,7 @@
 " Vim default file
 " Language:         Racc input file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-07-09
+" Latest Revision:  2008-06-22
 
 if exists("b:current_syntax")
   finish
@@ -31,7 +31,7 @@
                             \ nextgroup=raccPrecToken,raccPrecString skipwhite
                             \ skipnl
 
-syn match   raccPrecToken   contained '\<\u[A-Z0-9]*\>'
+syn match   raccPrecToken   contained '\<\u[A-Z0-9_]*\>'
                             \ nextgroup=raccPrecToken,raccPrecString skipwhite
                             \ skipnl
 
@@ -48,7 +48,7 @@
 syn keyword raccTokenDecl   contained token
                             \ nextgroup=raccTokenR skipwhite skipnl
 
-syn match   raccTokenR      contained '\<\u[A-Z0-9]*\>'
+syn match   raccTokenR      contained '\<\u[A-Z0-9_]*\>'
                             \ nextgroup=raccTokenR skipwhite skipnl
 
 syn keyword raccExpect      contained expect
@@ -67,13 +67,13 @@
                             \ contains=raccComment,raccConvToken skipwhite
                             \ skipnl
 
-syn match   raccConvToken   contained '\<\u[A-Z0-9]*\>'
+syn match   raccConvToken   contained '\<\u[A-Z0-9_]*\>'
                             \ nextgroup=raccString skipwhite skipnl
 
 syn keyword raccStart       contained start
                             \ nextgroup=raccTargetS skipwhite skipnl
 
-syn match   raccTargetS     contained '\<\l[a-z0-9]*\>'
+syn match   raccTargetS     contained '\<\l[a-z0-9_]*\>'
 
 syn match   raccSpecial     contained '\\["'\\]'
 
@@ -87,11 +87,11 @@
                             \ raccNumber,raccToken,raccTarget,raccDelimiter,
                             \ raccAction
 
-syn match   raccTarget      contained '\<\l[a-z0-9]*\>'
+syn match   raccTarget      contained '\<\l[a-z0-9_]*\>'
 
 syn match   raccDelimiter   contained '[:|]'
 
-syn match   raccToken       contained '\<\u[A-Z0-9]*\>'
+syn match   raccToken       contained '\<\u[A-Z0-9_]*\>'
 
 syn include @raccRuby       syntax/ruby.vim
 
diff --git a/runtime/syntax/sas.vim b/runtime/syntax/sas.vim
index 68e8788..976dca2 100644
--- a/runtime/syntax/sas.vim
+++ b/runtime/syntax/sas.vim
@@ -1,7 +1,11 @@
 " Vim syntax file
 " Language:	SAS
 " Maintainer:	James Kidd <james.kidd@covance.com>
-" Last Change:	02 Jun 2003
+" Last Change:  18 Jul 2008 by Paulo Tanimoto <ptanimoto@gmail.com>
+"               Fixed comments with * taking multiple lines.
+"               Fixed highlighting of macro keywords.
+"               Added words to cases that didn't fit anywhere.
+"             	02 Jun 2003
 "		Added highlighting for additional keywords and such;
 "		Attempted to match SAS default syntax colors;
 "		Changed syncing so it doesn't lose colors on large blocks;
@@ -25,18 +29,18 @@
 
 syn match sasNumber	"-\=\<\d*\.\=[0-9_]\>"
 
+" Block comment
 syn region sasComment	start="/\*"  end="\*/" contains=sasTodo
+
 " Ignore misleading //JCL SYNTAX... (Bob Heckel)
 syn region sasComment	start="[^/][^/]/\*"  end="\*/" contains=sasTodo
 
-" Allow highlighting of embedded TODOs (Bob Heckel)
-syn match sasComment	"^\s*\*.*;" contains=sasTodo
+" Previous code for comments was written by Bob Heckel
+" Comments with * may take multiple lines (Paulo Tanimoto)
+syn region sasComment start=";\s*\*"hs=s+1 end=";" contains=sasTodo
 
-" Allow highlighting of embedded TODOs (Bob Heckel)
-syn match sasComment	";\s*\*.*;"hs=s+1 contains=sasTodo
-
-" Handle macro comments too (Bob Heckel).
-syn match sasComment	"^\s*%*\*.*;" contains=sasTodo
+" Comments with * starting after a semicolon (Paulo Tanimoto)
+syn region sasComment start="^\s*\*" end=";" contains=sasTodo
 
 " This line defines macro variables in code.  HiLink at end of file
 " defines the color scheme. Begin region with ampersand and end with
@@ -84,24 +88,71 @@
 syn keyword sasStatement	RESET RESTRICT SELECT SET TABLE
 syn keyword sasStatement	UNIQUE UPDATE VALIDATE VIEW WHERE
 
+" Match declarations have to appear one per line (Paulo Tanimoto)
+syn match sasStatement	"FOOTNOTE\d"
+syn match sasStatement	"TITLE\d"
 
-syn match sasStatement	"FOOTNOTE\d" "TITLE\d"
-
-syn match sasMacro	"%BQUOTE" "%NRBQUOTE" "%CMPRES" "%QCMPRES"
-syn match sasMacro	"%COMPSTOR" "%DATATYP" "%DISPLAY" "%DO"
-syn match sasMacro	"%ELSE" "%END" "%EVAL" "%GLOBAL"
-syn match sasMacro	"%GOTO" "%IF" "%INDEX" "%INPUT"
-syn match sasMacro	"%KEYDEF" "%LABEL" "%LEFT" "%LENGTH"
-syn match sasMacro	"%LET" "%LOCAL" "%LOWCASE" "%MACRO"
-syn match sasMacro	"%MEND" "%NRBQUOTE" "%NRQUOTE" "%NRSTR"
-syn match sasMacro	"%PUT" "%QCMPRES" "%QLEFT" "%QLOWCASE"
-syn match sasMacro	"%QSCAN" "%QSUBSTR" "%QSYSFUNC" "%QTRIM"
-syn match sasMacro	"%QUOTE" "%QUPCASE" "%SCAN" "%STR"
-syn match sasMacro	"%SUBSTR" "%SUPERQ" "%SYSCALL" "%SYSEVALF"
-syn match sasMacro	"%SYSEXEC" "%SYSFUNC" "%SYSGET" "%SYSLPUT"
-syn match sasMacro	"%SYSPROD" "%SYSRC" "%SYSRPUT" "%THEN"
-syn match sasMacro	"%TO" "%TRIM" "%UNQUOTE" "%UNTIL"
-syn match sasMacro	"%UPCASE" "%VERIFY" "%WHILE" "%WINDOW"
+" Match declarations have to appear one per line (Paulo Tanimoto)
+syn match sasMacro "%BQUOTE"
+syn match sasMacro "%NRBQUOTE"
+syn match sasMacro "%CMPRES"
+syn match sasMacro "%QCMPRES"
+syn match sasMacro "%COMPSTOR"
+syn match sasMacro "%DATATYP"
+syn match sasMacro "%DISPLAY"
+syn match sasMacro "%DO"
+syn match sasMacro "%ELSE"
+syn match sasMacro "%END"
+syn match sasMacro "%EVAL"
+syn match sasMacro "%GLOBAL"
+syn match sasMacro "%GOTO"
+syn match sasMacro "%IF"
+syn match sasMacro "%INDEX"
+syn match sasMacro "%INPUT"
+syn match sasMacro "%KEYDEF"
+syn match sasMacro "%LABEL"
+syn match sasMacro "%LEFT"
+syn match sasMacro "%LENGTH"
+syn match sasMacro "%LET"
+syn match sasMacro "%LOCAL"
+syn match sasMacro "%LOWCASE"
+syn match sasMacro "%MACRO"
+syn match sasMacro "%MEND"
+syn match sasMacro "%NRBQUOTE"
+syn match sasMacro "%NRQUOTE"
+syn match sasMacro "%NRSTR"
+syn match sasMacro "%PUT"
+syn match sasMacro "%QCMPRES"
+syn match sasMacro "%QLEFT"
+syn match sasMacro "%QLOWCASE"
+syn match sasMacro "%QSCAN"
+syn match sasMacro "%QSUBSTR"
+syn match sasMacro "%QSYSFUNC"
+syn match sasMacro "%QTRIM"
+syn match sasMacro "%QUOTE"
+syn match sasMacro "%QUPCASE"
+syn match sasMacro "%SCAN"
+syn match sasMacro "%STR"
+syn match sasMacro "%SUBSTR"
+syn match sasMacro "%SUPERQ"
+syn match sasMacro "%SYSCALL"
+syn match sasMacro "%SYSEVALF"
+syn match sasMacro "%SYSEXEC"
+syn match sasMacro "%SYSFUNC"
+syn match sasMacro "%SYSGET"
+syn match sasMacro "%SYSLPUT"
+syn match sasMacro "%SYSPROD"
+syn match sasMacro "%SYSRC"
+syn match sasMacro "%SYSRPUT"
+syn match sasMacro "%THEN"
+syn match sasMacro "%TO"
+syn match sasMacro "%TRIM"
+syn match sasMacro "%UNQUOTE"
+syn match sasMacro "%UNTIL"
+syn match sasMacro "%UPCASE"
+syn match sasMacro "%VERIFY"
+syn match sasMacro "%WHILE"
+syn match sasMacro "%WINDOW"
 
 " SAS Functions
 
@@ -159,13 +210,17 @@
 syn keyword sasTodo	TODO TBD FIXME contained
 
 " These don't fit anywhere else (Bob Heckel).
-syn match sasUnderscore	"_NULL_"
+" Added others that were missing.
+syn match sasUnderscore	"_ALL_"
+syn match sasUnderscore "_AUTOMATIC_"
+syn match sasUnderscore	"_CHARACTER_"
 syn match sasUnderscore	"_INFILE_"
 syn match sasUnderscore	"_N_"
-syn match sasUnderscore	"_WEBOUT_"
+syn match sasUnderscore "_NAME_"
+syn match sasUnderscore	"_NULL_"
 syn match sasUnderscore	"_NUMERIC_"
-syn match sasUnderscore	"_CHARACTER_"
-syn match sasUnderscore	"_ALL_"
+syn match sasUnderscore "_USER_"
+syn match sasUnderscore	"_WEBOUT_"
 
 " End of SAS Functions
 
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index cb92bbd..5fa8d93 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Jul 01, 2008
-" Version:		100
+" Last Change:		Jul 11, 2008
+" Version:		102
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from Éric Brunet (eric.brunet@ens.fr)
@@ -42,9 +42,6 @@
   endif
 endif
 
-" adjust iskeyword for shell characters
-"setlocal isk=@,48-57,_,192-255,#,.,/
-
 " set up default g:sh_fold_enabled {{{1
 if !exists("g:sh_fold_enabled")
  let g:sh_fold_enabled= 0
@@ -275,7 +272,7 @@
 endif
 syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial,@Spell
 syn region  shDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
-syn match   shStringSpecial	"[^[:print:]]"	contained
+syn match   shStringSpecial	"[^[:print:] \t]"	contained
 syn match   shStringSpecial	"\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"
diff --git a/runtime/syntax/sieve.vim b/runtime/syntax/sieve.vim
index f651cbd..4bb4417 100644
--- a/runtime/syntax/sieve.vim
+++ b/runtime/syntax/sieve.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         Sieve filtering language input file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2007-10-25
 
 if exists("b:current_syntax")
   finish
@@ -33,7 +33,7 @@
                               \ not size true
 syn keyword sievePreProc      require stop
 syn keyword sieveAction       reject fileinto redirect keep discard
-syn match   sieveKeyword      '\<\h\w*\>'
+syn keyword sieveKeyword      vacation
 
 syn case match
 
@@ -46,7 +46,7 @@
 hi def link sieveConditional Conditional
 hi def link sieveTest        Keyword
 hi def link sievePreProc     PreProc
-hi def link sieveAction      Keyword
+hi def link sieveAction      Function
 hi def link sieveKeyword     Keyword
 
 let b:current_syntax = "sieve"
diff --git a/runtime/syntax/svn.vim b/runtime/syntax/svn.vim
index d691ba1..bb4f594 100644
--- a/runtime/syntax/svn.vim
+++ b/runtime/syntax/svn.vim
@@ -4,10 +4,11 @@
 " URL:          http://www.hlabs.spb.ru/vim/svn.vim
 " Revision:     $Id$
 " Filenames:    svn-commit*.tmp
-" Version:      1.5
+" Version:      1.6
 
 " Contributors:
 "   Stefano Zacchiroli
+"   A. S. Budden
 
 " For version 5.x: Clear all syntax items.
 " For version 6.x: Quit when a syntax file was already loaded.
@@ -17,7 +18,7 @@
   finish
 endif
 
-syn region svnRegion    start="^--.*--$" end="\%$" contains=ALL
+syn region svnRegion    start="^--.*--$" end="\%$" contains=ALL contains=@NoSpell
 syn match svnRemoved    "^D    .*$" contained
 syn match svnAdded      "^A[ M]   .*$" contained
 syn match svnModified   "^M[ M]   .*$" contained
diff --git a/runtime/syntax/updatedb.vim b/runtime/syntax/updatedb.vim
index dd8e6f7..4f912d4 100644
--- a/runtime/syntax/updatedb.vim
+++ b/runtime/syntax/updatedb.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         updatedb.conf(5) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2007-10-25
 
 if exists("b:current_syntax")
   finish
@@ -18,7 +18,7 @@
 syn match   updatedbBegin   display '^'
                             \ nextgroup=updatedbName,updatedbComment skipwhite
 
-syn keyword updatedbName    contained PRUNEFS PRUNEPATHS
+syn keyword updatedbName    contained PRUNEFS PRUNEPATHS PRUNE_BIND_MOUNTS
                             \ nextgroup=updatedbNameEq
 
 syn match   updatedbNameEq  contained display '=' nextgroup=updatedbValue
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index c220f9d..5bfcd66 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.2 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	Jul 10, 2008
-" Version:	7.2-79+
+" Last Change:	July 29, 2008
+" Version:	7.2-82
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -16,11 +16,11 @@
 syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
-syn keyword vimCommand contained	ab[breviate] argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo ca[bbrev] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpg[rep] iabc[lear] inorea[bbrev] ju[mps] laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
-syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpt[ags] if is[earch] k lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
-syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] cnorea[bbrev] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for ha[rdcopy] hid[e] ij[ump] isp[lit] keepalt laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
-syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] h[elp] his[tory] il[ist] iuna[bbrev] keepj[umps] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] norea[bbrev] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
-syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] helpf[ind] ia[bbrev] imapc[lear] j[oin] kee[pmarks] 
+syn keyword vimCommand contained	abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exu[sage] fin[d] foldc[lose] fu[nction] ha[rdcopy] helpt[ags] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lla[st] lmapc[lear] lnf[ile] loc[kmarks] lpf[ile] lt[ag] mak[e] menut[ranslate] mkvie[w] mzf[ile] n[ext] nu[mber] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sn[ext] snor[emap] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] verb[ose] vim[grep] vmapc[lear] wh[ile] win[size] wq wv[iminfo] xm[ap] XMLent xnoremenu
+syn keyword vimCommand contained	abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fini[sh] folddoc[losed] go[to] h[elp] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] lh[elpgrep] lli[st] lnew[er] lNf[ile] lockv[ar] lp[revious] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] N[ext] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] smapc[lear] sN[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] ve[rsion] vimgrepa[dd] vne[w] winc[md] wn[ext] wqa[ll] X xmapc[lear] XMLns xunme
+syn keyword vimCommand contained	al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fir[st] foldd[oopen] gr[ep] helpf[ind] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] l[ist] lmak[e] lne[xt] ln[oremap] lol[der] lr[ewind] lvimgrepa[dd] marks mks[ession] mod[e] nbkey nmapc[lear] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] sme sni[ff] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] vert[ical] vi[sual] vs[plit] windo wN[ext] w[rite] xa[ll] xme xn[oremap] xunmenu
+syn keyword vimCommand contained	arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fix[del] foldo[pen] grepa[dd] helpg[rep] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] ll lm[ap] lN[ext] lo[adview] lop[en] ls lw[indow] mat[ch] mksp[ell] m[ove] new noh[lsearch] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] smenu sno[magic] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] up[date] vie[w] viu[sage] wa[ll] winp[os] wp[revious] ws[verb] x[it] xmenu xnoreme y[ank]
+syn keyword vimCommand contained	argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif] exi[t] fina[lly] fo[ld] for 
 syn match   vimCommand contained	"\<z[-+^.=]"
 
 " vimOptions are caught only when contained in a vimSet {{{2
@@ -292,6 +292,10 @@
 " ===
 syn keyword vimLet	let	unl[et]	skipwhite nextgroup=vimVar
 
+" Abbreviations {{{2
+" =============
+syn keyword vimAbb	ab[breviate] ca[bbrev] inorea[bbrev] cnorea[bbrev] norea[bbrev] ia[bbrev] skipwhite nextgroup=vimMapMod,vimMapLhs
+
 " Autocmd {{{2
 " =======
 syn match   vimAutoEventList	contained	"\(!\s\+\)\=\(\a\+,\)*\a\+"	contains=vimAutoEvent nextgroup=vimAutoCmdSpace
@@ -664,6 +668,7 @@
  hi def link vimBufnrWarn	vimWarn
 endif
 
+hi def link vimAbb	vimCommand
 hi def link vimAddress	vimMark
 hi def link vimAugroupKey	vimCommand
 hi def link vimAutoCmdOpt	vimOption
diff --git a/runtime/syntax/yaml.vim b/runtime/syntax/yaml.vim
index abda3f8..9ebab70 100644
--- a/runtime/syntax/yaml.vim
+++ b/runtime/syntax/yaml.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         YAML (YAML Ain't Markup Language)
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-06-27
+" Latest Revision:  2006-04-19
 
 if exists("b:current_syntax")
   finish
@@ -10,140 +10,53 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
-syn keyword yamlTodo
-      \ contained
-      \ TODO
-      \ FIXME
-      \ XXX
-      \ NOTE
+syn keyword yamlTodo            contained TODO FIXME XXX NOTE
 
-syn region  yamlComment
-      \ display
-      \ oneline
-      \ start='%(^|s)#'
-      \ end='$'
-      \ contains=yamlTodo,@Spell
+syn region  yamlComment         display oneline start='\%(^\|\s\)#' end='$'
+                                \ contains=yamlTodo,@Spell
 
-syn match   yamlNodeProperty
-      \ '!\%(![^\\^% \t]\+\|[^!][^:/ \t]*\)'
+syn match   yamlNodeProperty    '!\%(![^\\^%     ]\+\|[^!][^:/   ]*\)'
 
-syn match   yamlAnchor
-      \ '&.+'
+syn match   yamlAnchor          '&.\+'
 
-syn match   yamlAlias
-      \ '*.+'
+syn match   yamlAlias           '\*.\+'
 
-syn match   yamlDelimiter
-      \ '[-,:]'
-syn match   yamlBlock
-      \ '[[]{}>|]'
-syn match   yamlOperator
-      \ '[?+-]'
-syn match   yamlKey
-      \ 'w+(s+w+)*zes*:'
+syn match   yamlDelimiter       '[-,:]'
+syn match   yamlBlock           '[\[\]{}>|]'
+syn match   yamlOperator        '[?+-]'
+syn match   yamlKey             '\w\+\(\s\+\w\+\)*\ze\s*:'
 
-syn region  yamlString
-      \ start=+"+
-      \ skip=+\"+
-      \ end=+"+
-      \ contains=yamlEscape
-syn region  yamlString
-      \ start=+'+
-      \ skip=+''+
-      \ end=+'+
-      \ contains=yamlSingleEscape
-syn match   yamlEscape
-      \ contained
-      \ display
-      \ +\[\"abefnrtv^0_ NLP]+
-syn match   yamlEscape
-      \ contained
-      \ display
-      \ '\xx{2}'
-syn match   yamlEscape
-      \ contained
-      \ display
-      \ '\ux{4}'
-syn match   yamlEscape
-      \ contained
-      \ display
-      \ '\Ux{8}'
-
+syn region  yamlString          start=+"+ skip=+\\"+ end=+"+
+                                \ contains=yamlEscape
+syn region  yamlString          start=+'+ skip=+''+ end=+'+
+                                \ contains=yamlSingleEscape
+syn match   yamlEscape          contained display +\\[\\"abefnrtv^0_ NLP]+
+syn match   yamlEscape          contained display '\\x\x\{2}'
+syn match   yamlEscape          contained display '\\u\x\{4}'
+syn match   yamlEscape          contained display '\\U\x\{8}'
 " TODO: how do we get 0x85, 0x2028, and 0x2029 into this?
-" XXX: Em, what is going on here?  This can't be right.  Leave out until we
-" figure out what this is meant to do.
-"syn match   yamlEscape
-"      \ contained
-"      \ display
-"      \ '\%(rn|[rn])'
-syn match   yamlSingleEscape
-      \ contained
-      \ display
-      \ +''+
+syn match   yamlEscape          display '\\\%(\r\n\|[\r\n]\)'
+syn match   yamlSingleEscape    contained display +''+
 
 " TODO: sexagecimal and fixed (20:30.15 and 1,230.15)
-syn match   yamlNumber
-      \ display
-      \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
-syn match   yamlNumber
-      \ display
-      \ '0o+'
-syn match   yamlNumber
-      \ display
-      \ '0xx+'
-syn match   yamlNumber
-      \ display
-      \ '([+-]=[iI]nf)'
-syn match   yamlNumber
-      \ display
-      \ '(NaN)'
+syn match   yamlNumber          display
+                                \ '\<[+-]\=\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\='
+syn match   yamlNumber          display '0\o\+'
+syn match   yamlNumber          display '0x\x\+'
+syn match   yamlNumber          display '([+-]\=[iI]nf)'
+syn match   yamlNumber          display '(NaN)'
 
-syn match   yamlConstant
-      \ '<[~yn]>'
-syn keyword yamlConstant
-      \ true
-      \ True
-      \ TRUE
-      \ false
-      \ False
-      \ FALSE
-syn keyword yamlConstant
-      \ yes
-      \ Yes
-      \ on
-      \ ON
-      \ no
-      \ No
-      \ off
-      \ OFF
-syn keyword yamlConstant
-      \ null
-      \ Null
-      \ NULL
-      \ nil
-      \ Nil
-      \ NIL
+syn match   yamlConstant        '\<[~yn]\>'
+syn keyword yamlConstant        true True TRUE false False FALSE
+syn keyword yamlConstant        yes Yes on ON no No off OFF
+syn keyword yamlConstant        null Null NULL nil Nil NIL
 
-syn match   yamlTimestamp
-      \ '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
+syn match   yamlTimestamp       '\d\d\d\d-\%(1[0-2]\|\d\)-\%(3[0-2]\|2\d\|1\d\|\d\)\%( \%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d [+-]\%([01]\d\|2[0-3]\):[0-5]\d\|t\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\d\d[+-]\%([01]\d\|2[0-3]\):[0-5]\d\|T\%([01]\d\|2[0-3]\):[0-5]\d:[0-5]\d.\dZ\)\='
 
-syn region  yamlDocumentHeader
-      \ start='---'
-      \ end='$'
-      \ contains=yamlDirective
-syn match   yamlDocumentEnd
-      \ '\.\.\.'
+syn region  yamlDocumentHeader  start='---' end='$' contains=yamlDirective
+syn match   yamlDocumentEnd     '\.\.\.'
 
-syn match   yamlDirective
-      \ contained
-      \ '%[^:]+:.+'
-
-syn match   yamlIndentation
-      \ '^s*'
-      \ contains=yamlIndentationError
-
-syn match   yamlIndentationError
-      \ 't'
+syn match   yamlDirective       contained '%[^:]\+:.\+'
 
 hi def link yamlTodo            Todo
 hi def link yamlComment         Comment
@@ -163,7 +76,6 @@
 hi def link yamlNumber          Number
 hi def link yamlConstant        Constant
 hi def link yamlTimestamp       Number
-hi def link yamlIndentationError  Error
 
 let b:current_syntax = "yaml"
 
diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim
index eb19eba..ecd6f05 100644
--- a/runtime/syntax/zsh.vim
+++ b/runtime/syntax/zsh.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         Zsh shell script
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2007-06-17
+" Latest Revision:  2008-07-17
 
 if exists("b:current_syntax")
   finish
@@ -34,7 +34,9 @@
 
 syn keyword zshConditional      if then elif else fi case in esac select
 
-syn keyword zshRepeat           for while until repeat foreach
+syn keyword zshRepeat           while until repeat
+
+syn keyword zshRepeat           for foreach nextgroup=zshVariable skipwhite
 
 syn keyword zshException        always
 
@@ -49,19 +51,30 @@
 syn match   zshRedir            '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\='
 syn match   zshRedir            '|&\='
 
-syn region  zshHereDoc          matchgroup=zshRedir start='<<\s*\z(\S*\)'
-                                \ end='^\z1\>' contains=@zshSubst
-syn region  zshHereDoc          matchgroup=zshRedir start='<<-\s*\z(\S*\)'
-                                \ end='^\s*\z1\>' contains=@zshSubst
 syn region  zshHereDoc          matchgroup=zshRedir
-                                \ start=+<<\s*\(["']\)\z(\S*\)\1+  end='^\z1\>'
+                                \ start='<\@<!<<\s*\z([^<]\S*\)'
+                                \ end='^\z1\>'
+                                \ contains=@zshSubst
 syn region  zshHereDoc          matchgroup=zshRedir
-                                \ start=+<<-\s*\(["']\)\z(\S*\)\1+
+                                \ start='<\@<!<<\s*\\\z(\S\+\)'
+                                \ end='^\z1\>'
+                                \ contains=@zshSubst
+syn region  zshHereDoc          matchgroup=zshRedir
+                                \ start='<\@<!<<-\s*\\\=\z(\S\+\)'
+                                \ end='^\s*\z1\>'
+                                \ contains=@zshSubst
+syn region  zshHereDoc          matchgroup=zshRedir
+                                \ start=+<\@<!<<\s*\(["']\)\z(\S\+\)\1+ 
+                                \ end='^\z1\>'
+syn region  zshHereDoc          matchgroup=zshRedir
+                                \ start=+<\@<!<<-\s*\(["']\)\z(\S\+\)\1+
                                 \ end='^\s*\z1\>'
 
-syn match   zshVariable         '\<\h\w*\ze+\=='
+syn match   zshVariable         '\<\h\w*' contained
+
+syn match   zshVariableDef      '\<\h\w*\ze+\=='
 " XXX: how safe is this?
-syn region  zshVariable         oneline
+syn region  zshVariableDef      oneline
                                 \ start='\$\@<!\<\h\w*\[' end='\]\ze+\=='
                                 \ contains=@zshSubst
 
@@ -87,7 +100,7 @@
 if s:zsh_syntax_variables =~ 'all'
   syn match zshDeref            '\$[=^~]*[#+]*\h\w*\>'
 else
-  syn match zshDeref            transparent '\$[=^~]*[#+]*\h\w*\>'
+  syn match zshDeref            transparent contains=NONE '\$[=^~]*[#+]*\h\w*\>'
 endif
 
 syn match   zshCommands         '\%(^\|\s\)[.:]\ze\s'
@@ -119,6 +132,7 @@
 syn match   zshNumber           '[+-]\=\d\+#[-+]\=\w\+\>'
 syn match   zshNumber           '[+-]\=\d\+\.\d\+\>'
 
+" TODO: $[...] is the same as $((...)), so add that as well.
 syn cluster zshSubst            contains=zshSubst,zshOldSubst,zshMathSubst
 syn region  zshSubst            matchgroup=zshSubstDelim transparent
                                 \ start='\$(' skip='\\)' end=')' contains=TOP
@@ -131,10 +145,14 @@
 syn region  zshBrackets         contained transparent start='{' skip='\\}'
                                 \ end='}'
 syn region  zshSubst            matchgroup=zshSubstDelim start='\${' skip='\\}'
-                                \ end='}' contains=@zshSubst,zshBrackets,zshQuoted
+                                \ end='}' contains=@zshSubst,zshBrackets,zshQuoted,zshString
 syn region  zshOldSubst         matchgroup=zshSubstDelim start=+`+ skip=+\\`+
                                 \ end=+`+ contains=TOP,zshOldSubst
 
+syn sync    minlines=50
+syn sync    match zshHereDocSync    grouphere   NONE '<<-\=\s*\%(\\\=\S\+\|\(["']\)\S\+\1\)'
+syn sync    match zshHereDocEndSync groupthere  NONE '^\s*EO\a\+\>'
+
 hi def link zshTodo             Todo
 hi def link zshComment          Comment
 hi def link zshPreProc          PreProc
@@ -163,6 +181,7 @@
   hi def link zshRedir            None
 endif
 hi def link zshVariable         None
+hi def link zshVariableDef      zshVariable
 hi def link zshDereferencing    PreProc
 if s:zsh_syntax_variables =~ 'short\|all'
   hi def link zshShortDeref     zshDereferencing