updated for version 7.0014
diff --git a/runtime/syntax/abap.vim b/runtime/syntax/abap.vim
new file mode 100644
index 0000000..2b1229f
--- /dev/null
+++ b/runtime/syntax/abap.vim
@@ -0,0 +1,152 @@
+" Vim ABAP syntax file
+"    Language:	SAP - ABAP/4
+"    Revision:	0.8
+"  Maintainer:	Marius van Wyk <marius@e.co.za>
+" Last Change:	2004 Aug 30
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Always ignore case
+syn case ignore
+
+" Symbol Operators
+syn match   abapSymbolOperator      "[+\-/=<>$]"
+syn match   abapSymbolOperator      "\*"
+syn match   abapSymbolOperator      "[<>]="
+syn match   abapSymbolOperator      "<>"
+syn match   abapSymbolOperator      "\*\*"
+syn match   abapSymbolOperator      "[()]"
+syn match   abapSymbolOperator      "[:,\.]"
+
+" Literals
+syn region  abapString matchgroup=abapString start="'" end="'" contains=abapStringEscape
+syn match   abapStringEscape contained "''"
+
+syn match   abapNumber	"-\=\<\d\+\>"
+syn region  abapHex     matchgroup=abapHex start="X'" end="'"
+
+if version >= 600
+  setlocal iskeyword=-,48-57,_,A-Z,a-z
+else
+  set iskeyword=-,48-57,_,A-Z,a-z
+endif
+
+" ABAP statements
+syn keyword abapStatement ADD ADD-CORRESPONDING ASSIGN AT AUTHORITY-CHECK
+syn keyword abapStatement BACK BREAK-POINT
+syn keyword abapStatement CALL CASE CHECK CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
+syn keyword abapStatement DATA DEFINE DELETE DESCRIBE DETAIL DIVIDE DIVIDE-CORRESPONDING DO
+syn keyword abapStatement EDITOR-CALL ELSE ELSEIF END-OF-DEFINITION END-OF-PAGE END-OF-SELECTION ENDAT ENDCASE ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDLOOP ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDWHILE EXEC EXPORT EXPORTING EXTRACT
+syn keyword abapStatement FETCH FIELD-GROUPS FIELD-SYMBOLS FIELDS FORM FORMAT FREE FUNCTION FUNCTION-POOL
+syn keyword abapStatement GENERATE GET
+syn keyword abapStatement HIDE
+syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INPUT INSERT
+syn keyword abapStatement LEAVE LIKE LOAD LOCAL LOOP
+syn keyword abapStatement MESSAGE MODIFY MODULE MOVE MOVE-CORRESPONDING MULTIPLY MULTIPLY-CORRESPONDING
+syn keyword abapStatement NEW-LINE NEW-PAGE NEW-SECTION
+syn keyword abapStatement ON OVERLAY
+syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PRINT-CONTROL PROGRAM PROVIDE PUT
+syn keyword abapStatement RAISE RANGES READ RECEIVE REFRESH REJECT REPLACE REPORT RESERVE RESTORE ROLLBACK
+syn keyword abapStatement SCAN SCROLL SEARCH SELECT SELECT-OPTIONS SELECTION-SCREEN SET SHIFT SKIP SORT SPLIT START-OF-SELECTION STATICS STOP SUBMIT SUBTRACT SUBTRACT-CORRESPONDING SUM SUMMARY SUPPRESS SYNTAX-CHECK SYNTAX-TRACE
+syn keyword abapStatement TABLES TOP-OF-PAGE TRANSFER TRANSLATE TYPE TYPE-POOL TYPE-POOLS TYPES
+syn keyword abapStatement UNPACK UPDATE
+syn keyword abapStatement WHEN WHILE WINDOW WRITE
+
+" More statemets
+syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
+syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
+syn keyword abapStatement LINE-SIZE LINE-COUNT MESSAGE-ID
+syn keyword abapStatement CHANGING EXCEPTIONS DEFAULT CHECKBOX COMMENT
+syn keyword abapStatement ID NUMBER FOR DISPLAY-MODE TITLE OUTPUT
+
+" More multi-word statements
+syn match   abapStatement "\(\W\|^\)\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)NO\W\+STANDARD\W\+PAGE\W\+HEADING\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)IS\W\+INITIAL\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)NO\W\+INTERVALS\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)SEPARATED\W\+BY\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)\(USING\W\+\(EDIT\W\+MASK\)\|USING\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)\(WHERE\W\+\(LINE\)\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)RADIOBUTTON\W\+GROUP\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapStatement "\(\W\|^\)REF\W\+TO\(\W\|$\)"ms=s+1,me=e-1
+
+" Special ABAP specific tables:
+syn match   abapSpecial       "\(\W\|^\)\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)\(\W\|$\)"ms=s+1,me=e-1
+syn match   abapSpecialTables "\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
+syn match   abapSpecial       "\(\W\|^\)\w\+-\w\+"ms=s+1 contains=abapSpecialTables
+
+" Pointer
+syn match   abapSpecial  "<\w\+>"
+
+" Abap constants:
+syn keyword abapSpecial  TRUE FALSE NULL SPACE
+
+" Includes
+syn region abapInclude   start="include" end="." contains=abapComment
+
+" Types
+syn keyword abapTypes    c n i p f d t x
+
+" Atritmitic operators
+syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
+syn keyword abapOperator cosh sinh tanh exp log log10 sqrt
+
+" String operators
+syn keyword abapOperator strlen xstrlen charlen numofchar dbmaxlen
+
+" Table operators
+syn keyword abapOperator lines
+
+" Table operators (SELECT operators)
+syn keyword abapOperator INTO FROM WHERE GROUP BY HAVING ORDER BY SINGLE
+syn keyword abapOperator APPENDING CORRESPONDING FIELDS OF TABLE
+syn keyword abapOperator LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING
+syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
+
+" An error? Not strictly... but cannot think of reason this is intended.
+syn match   abapError    "\.\."
+
+" Comments
+syn region  abapComment  start="^\*" end="$" contains=abapTodo
+syn match   abapComment  "\".*" contains=abapTodo
+syn keyword abapTodo     contained	TODO NOTE
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_abap_syntax_inits")
+  if version < 508
+    let did_abap_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink abapError          Error
+  HiLink abapComment	      Comment
+  HiLink abapInclude	      Include
+  HiLink abapSpecial        Special
+  HiLink abapSpecialTables  PreProc
+  HiLink abapSymbolOperator	abapOperator
+  HiLink abapOperator	      Operator
+  HiLink abapStatement	    Statement
+  HiLink abapString	        String
+  HiLink abapFloat	        Float
+  HiLink abapNumber	        Number
+  HiLink abapHex	          Number
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "abap"
+
+" vim: ts=8 sw=2
diff --git a/runtime/syntax/aspvbs.vim b/runtime/syntax/aspvbs.vim
index 502791c..74bf2a1 100644
--- a/runtime/syntax/aspvbs.vim
+++ b/runtime/syntax/aspvbs.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Microsoft VBScript Web Content (ASP)
-" Maintainer:	Devin Weaver <ktohg@tritarget.com>
-" URL:		http://tritarget.com/pub/vim/syntax/aspvbs.vim
-" Last Change:	2003 Apr 25
+" Maintainer:	Devin Weaver <ktohg@tritarget.com> (non-functional)
+" URL:		http://tritarget.com/pub/vim/syntax/aspvbs.vim (broken)
+" Last Change:	2004 Jul 29
 " Version:	$Revision$
 " Thanks to Jay-Jay <vim@jay-jay.net> for a syntax sync hack, hungarian
 " notation, and extra highlighting.
@@ -108,7 +108,7 @@
 syn keyword AspVBSMethods contained OpenTextFile Raise Read ReadAll ReadLine Remove
 syn keyword AspVBSMethods contained RemoveAll Skip SkipLine Write WriteBlankLines
 syn keyword AspVBSMethods contained WriteLine
-syn match AspVBSMethods contained "Response\.\S*"
+syn match AspVBSMethods contained "Response\.\w*"
 " Colorize boolean constants:
 syn keyword AspVBSMethods contained true false
 
diff --git a/runtime/syntax/ch.vim b/runtime/syntax/ch.vim
index 2e787c8..add7395 100644
--- a/runtime/syntax/ch.vim
+++ b/runtime/syntax/ch.vim
@@ -2,7 +2,7 @@
 " Language:     Ch
 " Maintainer:   SoftIntegration, Inc. <info@softintegration.com>
 " URL:		http://www.softintegration.com/download/vim/syntax/ch.vim
-" Last change:	2004 May 16
+" Last change:	2004 Sep 01
 "		Created based on cpp.vim
 "
 " Ch is a C/C++ interpreter with many high level extensions
@@ -26,7 +26,7 @@
 
 " Ch extentions
 
-syn keyword	chStatement	new delete this
+syn keyword	chStatement	new delete this foreach
 syn keyword	chAccess	public private
 syn keyword	chStorageClass	__declspec(global) __declspec(local)
 syn keyword	chStructure	class
diff --git a/runtime/syntax/lex.vim b/runtime/syntax/lex.vim
index 25c423e..6c6121e 100644
--- a/runtime/syntax/lex.vim
+++ b/runtime/syntax/lex.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Lex
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	Sep 02, 2003
-" Version:	4
+" Last Change:	Jul 28, 2004
+" Version:	5
 " URL:	http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax
 "
 " Option:
@@ -32,19 +32,22 @@
   endif
 endif
 
+" --- ========= ---
 " --- Lex stuff ---
+" --- ========= ---
 
 "I'd prefer to use lex.* , but it doesn't handle forward definitions yet
 syn cluster lexListGroup		contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
 syn cluster lexListPatCodeGroup	contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
 
 " Abbreviations Section
-syn region lexAbbrvBlock	start="^\([a-zA-Z_]\+\t\|%{\)" end="^%%$"me=e-2	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment
+syn region lexAbbrvBlock	start="^\(\h\+\s\|%{\)" end="^\ze%%$"	skipnl	nextgroup=lexPatBlock contains=lexAbbrv,lexInclude,lexAbbrvComment,lexStartState
 syn match  lexAbbrv		"^\I\i*\s"me=e-1			skipwhite	contained nextgroup=lexAbbrvRegExp
 syn match  lexAbbrv		"^%[sx]"					contained
 syn match  lexAbbrvRegExp	"\s\S.*$"lc=1				contained nextgroup=lexAbbrv,lexInclude
 syn region lexInclude	matchgroup=lexSep	start="^%{" end="%}"	contained	contains=ALLBUT,@lexListGroup
 syn region lexAbbrvComment	start="^\s\+/\*"	end="\*/"			contains=@Spell
+syn region lexStartState	matchgroup=lexAbbrv	start="^%\a\+"	end="$"			contained
 
 "%% : Patterns {Actions}
 syn region lexPatBlock	matchgroup=Todo	start="^%%$" matchgroup=Todo end="^%%$"	skipnl skipwhite contains=lexPat,lexPatTag,lexPatComment
@@ -81,15 +84,16 @@
 hi def link lexBrace	lexPat
 hi def link lexAbbrvComment	lexPatComment
 
-hi def link lexAbbrv	SpecialChar
 hi def link lexAbbrvRegExp	Macro
+hi def link lexAbbrv	SpecialChar
 hi def link lexCFunctions	Function
 hi def link lexMorePat	SpecialChar
-hi def link lexPat		Function
 hi def link lexPatComment	Comment
+hi def link lexPat		Function
 hi def link lexPatString	Function
 hi def link lexPatTag	Special
 hi def link lexSep		Delimiter
+hi def link lexStartState	Statement
 
 let b:current_syntax = "lex"
 
diff --git a/runtime/syntax/lhaskell.vim b/runtime/syntax/lhaskell.vim
index 250ccfa..d6f21ae 100644
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -4,7 +4,7 @@
 "			\begin{code} \end{code} blocks
 " Maintainer:		Haskell Cafe mailinglist <haskell-cafe@haskell.org>
 " Original Author:	Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change:		2004 May 16
+" Last Change:		2004 Aug 31
 " Version:		1.01
 "
 " Thanks to Ian Lynagh for thoughtful comments on initial versions and
@@ -82,9 +82,12 @@
 if b:lhs_markup == "tex"
     if version < 600
 	source <sfile>:p:h/tex.vim
+	set isk+=_
     else
 	runtime! syntax/tex.vim
 	unlet b:current_syntax
+	" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
+	setlocal isk+=_
     endif
 endif
 
diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim
index 0bcda62..5553728 100644
--- a/runtime/syntax/lua.vim
+++ b/runtime/syntax/lua.vim
@@ -1,12 +1,10 @@
 " Vim syntax file
 " Language:	Lua 4.0 and Lua 5.0
-" Maintainer:	Marcus Aurelius Farias <marcuscf@vant.com.br>
-" First Author:	Carlos Augusto Teixeira Mendes <cmendes@inf.puc-rio.br>
-" Last Change:	2003 May 04
+" Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
+" First Author:	Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
+" Last Change:	2004 Aug 29
 " Options:	lua_version = 4 or 5 [default]
 "
-" Still has some syncing problems (long [[strings]])...
-
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
@@ -37,7 +35,7 @@
 syn region  luaParen		transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
 syn match   luaError		")"
 syn match   luaError		"}"
-syn match   luaError		"\<\(end\|else\|elseif\|then\|until\|in\)\>"
+syn match   luaError		"\<\%(end\|else\|elseif\|then\|until\|in\)\>"
 
 
 " Function declaration
@@ -80,7 +78,7 @@
 endif
 
 " Pre processor doesn't exist since Lua 4.0
-" syn match   luaPreProc	  "^\s*$\(debug\|nodebug\|if\|ifnot\|end\|else\|endinput\)\>"
+" syn match   luaPreProc	  "^\s*$\%(debug\|nodebug\|if\|ifnot\|end\|else\|endinput\)\>"
 
 " Strings
 syn match   luaSpecial		contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
@@ -92,9 +90,9 @@
 " integer number
 syn match luaNumber		"\<[0-9]\+\>"
 " floating point number, with dot, optional exponent
-syn match luaFloat		"\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=\>"
+syn match luaFloat		"\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
 " floating point number, starting with a dot, optional exponent
-syn match luaFloat		"\.[0-9]\+\(e[-+]\=[0-9]\+\)\=\>"
+syn match luaFloat		"\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
 " floating point number, without dot, with exponent
 syn match luaFloat		"\<[0-9]\+e[-+]\=[0-9]\+\>"
 
@@ -129,7 +127,7 @@
   syn keyword luaFunc	loadlib loadstring pairs pcall rawequal
   syn keyword luaFunc	require setfenv setmetatable unpack xpcall
   syn keyword luaFunc	LUA_PATH _LOADED _REQUIREDNAME
-" Not sure if all these functions need to be highlighted...
+  " Not sure if all these functions need to be highlighted...
   syn match   luaFunc	/coroutine\.create/
   syn match   luaFunc	/coroutine\.resume/
   syn match   luaFunc	/coroutine\.status/
diff --git a/runtime/syntax/maple.vim b/runtime/syntax/maple.vim
index cda7c75..2fa0457 100644
--- a/runtime/syntax/maple.vim
+++ b/runtime/syntax/maple.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Maple V (based on release 4)
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	Mar 10, 2004
-" Version:	4
+" Last Change:	Aug 19, 2004
+" Version:	5
 " URL:	http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax
 "
 " Package Function Selection: {{{1
@@ -17,6 +17,9 @@
 "
 " *OR* let mvpkg_all=1
 
+" This syntax file contains all the keywords and top-level packages of Maple 9.5
+" but only the contents of packages of Maple V Release 4, and the top-level
+" routines of Release 4.  <Jacques Carette - carette@mcmaster.ca>
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -70,6 +73,9 @@
 endif
 
 " Parenthesis/curly/brace sanity checker: {{{1
+syn case match
+
+" parenthesis/curly/brace sanity checker
 syn region mvZone	matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" transparent contains=ALLBUT,mvError,mvBraceError,mvCurlyError
 syn region mvZone	matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" transparent contains=ALLBUT,mvError,mvBraceError,mvParenError
 syn region mvZone	matchgroup=Delimiter start="\[" matchgroup=Delimiter end="]" transparent contains=ALLBUT,mvError,mvCurlyError,mvParenError
@@ -79,21 +85,47 @@
 syn match  mvParenError	"[\]}]"	contained
 syn match  mvComma		"[,;:]"
 syn match  mvSemiError	"[;:]"	contained
+syn match  mvDcolon		"::"
 
-" Maple V Packages, circa Release 4: {{{1
-syn keyword mvPackage	DEtools	difforms	group	networks	plots	stats
-syn keyword mvPackage	Galois	finance	inttrans	numapprox	plottools	student
-syn keyword mvPackage	GaussInt	genfunc	liesymm	numtheory	powseries	sumtools
-syn keyword mvPackage	LREtools	geometry	linalg	orthopoly	process	tensor
-syn keyword mvPackage	combinat	grobner	logic	padic	simplex	totorder
-syn keyword mvPackage	combstruct
+" Maple Packages, updated for Maple 9.5
+syn keyword mvPackage	algcurves	ArrayTools	Cache	codegen
+syn keyword mvPackage	CodeGeneration	CodeTools	combinat	combstruct
+syn keyword mvPackage	ContextMenu	CurveFitting	DEtools	diffalg
+syn keyword mvPackage	difforms	DiscreteTransforms	Domains	ExternalCalling
+syn keyword mvPackage	FileTools	finance	GaussInt	genfunc
+syn keyword mvPackage	geom3d	geometry	gfun	Groebner
+syn keyword mvPackage	group	hashmset	IntegerRelations	inttrans
+syn keyword mvPackage	LargeExpressions	LibraryTools	liesymm	linalg
+syn keyword mvPackage	LinearAlgebra	LinearFunctionalSystems	LinearOperators
+syn keyword mvPackage	ListTools	Logic	LREtools	Maplets
+syn keyword mvPackage	MathematicalFunctions	MathML	Matlab
+syn keyword mvPackage	MatrixPolynomialAlgebra	MmaTranslator	networks
+syn keyword mvPackage	numapprox	numtheory	Optimization	OreTools
+syn keyword mvPackage	Ore_algebra	OrthogonalSeries	orthopoly	padic
+syn keyword mvPackage	PDEtools	plots	plottools	PolynomialIdeals
+syn keyword mvPackage	PolynomialTools	powseries	process	QDifferenceEquations
+syn keyword mvPackage	RandomTools	RationalNormalForms	RealDomain	RootFinding
+syn keyword mvPackage	ScientificConstants	ScientificErrorAnalysis	simplex
+syn keyword mvPackage	Slode	SNAP	Sockets	SoftwareMetrics
+syn keyword mvPackage	SolveTools	Spread	stats	StringTools
+syn keyword mvPackage	Student	student	sumtools	SumTools
+syn keyword mvPackage	tensor	TypeTools	Units	VariationalCalculus
+syn keyword mvPackage	VectorCalculus	Worksheet	XMLTools
 
 " Language Support: {{{1
 syn keyword mvTodo	contained	TODO
-syn region  mvString	start=+`+ skip=+``+ end=+`+	keepend	contains=mvTodo
-syn region  mvDelayEval	start=+'+ end=+'+	keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError
-syn match   mvVarAssign	"[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign
-syn match   mvAssign	":="	contained
+if exists("g:mapleversion") && g:mapleversion < 9
+ syn region  mvString	start=+`+ skip=+``+ end=+`+	keepend	contains=mvTodo
+ syn region  mvDelayEval	start=+'+ end=+'+	keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError,mvSemiError
+ syn match   mvVarAssign	"[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:=" contains=mvAssign
+ syn match   mvAssign	":="	contained
+else
+ syn region  mvName	start=+`+ skip=+``+ end=+`+	keepend	contains=mvTodo
+ syn region  mvString	start=+"+ skip=+""+ end=+"+	keepend
+ syn region  mvDelayEval	start=+'+ end=+'+	keepend contains=ALLBUT,mvError,mvBraceError,mvCurlyError,mvParenError
+ syn match   mvDelim		"[;:]"	display
+ syn match   mvAssign	":="
+endif
 
 " Lower-Priority Operators: {{{1
 syn match mvOper	"\."
@@ -120,14 +152,16 @@
 syn match mvRange	"\.\."
 
 " Operators: {{{1
-syn keyword mvOper	and not or
+syn keyword mvOper	and not or xor implies union intersect subset minus mod
 syn match   mvOper	"<>\|[<>]=\|[<>]\|="
 syn match   mvOper	"&+\|&-\|&\*\|&\/\|&"
 syn match   mvError	"\.\.\."
 
 " MapleV Statements: ? statement {{{1
+
+" MapleV Statements: ? statement
 " Split into booleans, conditionals, operators, repeat-logic, etc
-syn keyword mvBool	true	false
+syn keyword mvBool	true	false	FAIL
 syn keyword mvCond	elif	else	fi	if	then
 
 syn keyword mvRepeat	by	for	in	to
@@ -136,15 +170,25 @@
 syn keyword mvSpecial	NULL
 syn match   mvSpecial	"\[\]\|{}"
 
-syn keyword mvStatement	Order	fail	options	read	save
-syn keyword mvStatement	break	local	point	remember	stop
-syn keyword mvStatement	done	mod	proc	restart	with
-syn keyword mvStatement	end	mods	quit	return
-syn keyword mvStatement	error	next
+if exists("g:mapleversion") && g:mapleversion < 9
+ syn keyword mvStatement	Order	fail	options	read	save
+ syn keyword mvStatement	break	local	point	remember	stop
+ syn keyword mvStatement	done	mod	proc	restart	with
+ syn keyword mvStatement	end	mods	quit	return
+ syn keyword mvStatement	error	next
+else
+ syn keyword mvStatement	option	options	read	save
+ syn keyword mvStatement	break	local	remember	stop
+ syn keyword mvStatement	done	mod	proc	restart
+ syn keyword mvStatement	end	mods	quit	return
+ syn keyword mvStatement	error	next	try	catch
+ syn keyword mvStatement	finally	assuming	global	export
+ syn keyword mvStatement	module	description	use
+endif
 
 " Builtin Constants: ? constants {{{1
 syn keyword mvConstant	Catalan	I	gamma	infinity
-syn keyword mvConstant	FAIL	Pi
+syn keyword mvConstant	Pi
 
 " Comments:  DEBUG, if in a comment, is specially highlighted. {{{1
 syn keyword mvDebug	contained	DEBUG
@@ -552,6 +596,7 @@
   HiLink mvPkg_totorder	mvPkgFunc
   HiLink mvRange		mvOper
   HiLink mvSemiError	mvError
+  HiLink mvDelim		Delimiter
 
   " Maple->Standard Links {{{2
   HiLink mvAssign		Delimiter
@@ -561,16 +606,19 @@
   HiLink mvCond		Conditional
   HiLink mvConstant		Number
   HiLink mvDelayEval	Label
+  HiLink mvDcolon		Delimiter
   HiLink mvError		Error
   HiLink mvLibrary		Statement
   HiLink mvNumber		Number
   HiLink mvOper		Operator
+  HiLink mvAssign		Delimiter
   HiLink mvPackage		Type
   HiLink mvPkgFunc		Function
   HiLink mvPktOption	Special
   HiLink mvRepeat		Repeat
   HiLink mvSpecial		Special
   HiLink mvStatement	Statement
+  HiLink mvName		String
   HiLink mvString		String
   HiLink mvTodo		Todo
 
diff --git a/runtime/syntax/netrwlist.vim b/runtime/syntax/netrwlist.vim
index 8f3091d..ae68c91 100644
--- a/runtime/syntax/netrwlist.vim
+++ b/runtime/syntax/netrwlist.vim
@@ -1,7 +1,8 @@
 " Language   : Netrw Remote-Directory Listing Syntax
 " Maintainer : Charles E. Campbell, Jr.
-" Last change: Jul 06, 2004
-" Version    : 2
+" Last change: Aug 20, 2004
+" Version    : 4
+" ---------------------------------------------------------------------
 
 " Syntax Clearing: {{{1
 if version < 600
@@ -10,28 +11,39 @@
  finish
 endif
 
+" ---------------------------------------------------------------------
 " Directory List Syntax Highlighting: {{{1
-syn match netrwDir				"^.*/\%(\t\|$\)"	contains=netrwClassify
-syn match netrwClassify				"[*=|@/]\%(\t\|$\)"
-syn match netrwSymLink				"^.*@\%(\t\|$\)"	contains=netrwClassify
-syn match netrwComment				'".*\%(\t\|$\)'		contains=netrwHide,netrwSortBy,netrwSortSeq
-syn match netrwHide				'^"\s*Hiding:'		skipwhite nextgroup=netrwHidePat
-syn match netrwSlash	contained			"/"
-syn match netrwHidePat	contained		"[^,]\+"		skipwhite nextgroup=netrwHideSep
-syn match netrwHideSep	contained transparent	","			skipwhite nextgroup=netrwHidePat
-syn match netrwSortBy	contained transparent	"Sorted by"		skipwhite nextgroup=netrwList
-syn match netrwSortSeq	contained transparent	"Sort sequence:"	skipwhite nextgroup=netrwList
-syn match netrwList	contained		".*$"			contains=netrwComma
-syn match netrwComma	contained		","
+syn cluster NetrwGroup contains=netrwHide,netrwSortBy,netrwSortSeq,netrwQuickHelp,netrwVersion
+syn match  netrwDir				"^.*/\%(\t\|$\)"	contains=netrwClassify
+syn match  netrwClassify			"[*=|@/]\%(\t\|$\)"
+syn match  netrwSymLink				"^.*@\%(\t\|$\)"	contains=netrwClassify
+syn match  netrwComment				'".*\%(\t\|$\)'		contains=@NetrwGroup
+syn match  netrwHide				'^"\s*Hiding:'		skipwhite nextgroup=netrwHidePat
+syn match  netrwSlash	contained		"/"
+syn match  netrwHidePat	contained		"[^,]\+"		skipwhite nextgroup=netrwHideSep
+syn match  netrwHideSep	contained transparent	","			skipwhite nextgroup=netrwHidePat
+syn match  netrwSortBy	contained transparent	"Sorted by"		skipwhite nextgroup=netrwList
+syn match  netrwSortSeq	contained transparent	"Sort sequence:"	skipwhite nextgroup=netrwList
+syn match  netrwList	contained		".*$"			contains=netrwComma
+syn match  netrwComma	contained		","
+syn region netrwQuickHelp contained matchgroup=Comment start="Quick Help:\s\+" end="$" contains=netrwHelpCmd keepend
+syn match  netrwHelpCmd	contained		"\S\ze:"		skipwhite nextgroup=netrwCmdSep
+syn match  netrwCmdSep	contained		":"			nextgroup=netrwCmdNote
+syn match  netrwCmdNote	contained		".\{-}\ze  "
+syn match  netrwVersion contained		"(netrw.*)"
 
+" ---------------------------------------------------------------------
 " Highlighting Links: {{{1
 if !exists("did_drchip_dbg_syntax")
  let did_drchip_netrwlist_syntax= 1
  hi link netrwClassify	Function
+ hi link netrwCmdSep	Delimiter
  hi link netrwComment	Comment
  hi link netrwDir	Directory
- hi link netrwHidePat	String
- hi link netrwList	String
+ hi link netrwHelpCmd	Function
+ hi link netrwHidePat	Statement
+ hi link netrwList	Statement
+ hi link netrwVersion	Identifier
  hi link netrwSymLink	Special
 
  hi link netrwComma	netrwComment
@@ -40,4 +52,5 @@
 
 " Current Syntax: {{{1
 let   b:current_syntax = "netrwlist"
+" ---------------------------------------------------------------------
 " vim: ts=8 fdm=marker
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
index 4388729..327cc11 100644
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Perl
 " Maintainer:	Nick Hibma <n_hibma@van-laarhoven.org>
-" Last Change:	2004 May 16
+" Last Change:	2004 Aug 29
 " Location:	http://www.van-laarhoven.org/vim/syntax/perl.vim
 "
 " Please download most recent version first before mailing
@@ -17,8 +17,8 @@
 " perl syntax highlighting, with defaults given:
 "
 " unlet perl_include_pod
-" unlet perl_want_scope_in_variables
-" unlet perl_extended_vars
+" unlet perl_no_scope_in_variables
+" unlet perl_no_extended_vars
 " unlet perl_string_as_statement
 " unlet perl_no_sync_on_sub
 " unlet perl_no_sync_on_global_var
@@ -147,16 +147,11 @@
 " And plain identifiers
 syn match  perlPackageRef	 "\(\h\w*\)\=\(::\|'\)\I"me=e-1 contained
 
-" To highlight packages in variables as a scope reference - i.e. in $pack::var,
-" pack:: is a scope, just set "perl_want_scope_in_variables"
-" If you *want* complex things like @{${"foo"}} to be processed,
-" just set the variable "perl_extended_vars"...
-
 " FIXME value between {} should be marked as string. is treated as such by Perl.
 " At the moment it is marked as something greyish instead of read. Probably todo
 " with transparency. Or maybe we should handle the bare word in that case. or make it into
 
-if exists("perl_want_scope_in_variables")
+if !exists("perl_no_scope_in_variables")
   syn match  perlVarPlain	"\\\=\([@%$]\|\$#\)\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
   syn match  perlFunctionName	"\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember
 else
@@ -164,7 +159,7 @@
   syn match  perlFunctionName	"\\\=&\$*\(\I\i*\)\=\(\(::\|'\)\I\i*\)*\>" nextgroup=perlVarMember,perlVarSimpleMember
 endif
 
-if exists("perl_extended_vars")
+if !exists("perl_no_extended_vars")
   syn cluster perlExpr		contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ
   syn region perlVarBlock	matchgroup=perlVarPlain start="\($#\|[@%$]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
   syn region perlVarBlock	matchgroup=perlVarPlain start="&\$*{" skip="\\}" end="}" contains=@perlExpr
@@ -359,7 +354,7 @@
 syn keyword perlStatementSub	sub contained
 
 syn match  perlFunctionPrototype	"([^)]*)" contained
-if exists("perl_want_scope_in_variables")
+if !exists("perl_no_scope_in_variables")
    syn match  perlFunctionPRef	"\h\w*::" contained
    syn match  perlFunctionName	"\h\w*[^:]" contained
 else
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index c8f6ee0..f8624ae 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,11 +2,11 @@
 " 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:		Apr 28, 2004
-" Version:		68
+" Last Change:		Jul 26, 2004
+" Version:		69
 " URL:		http://www.erols.com/astronaut/vim/index.html#vimlinks_syntax
 "
-" Using the following VIM variables:
+" Using the following VIM variables: {{{1
 " b:is_kornshell	if defined, enhance with kornshell syntax
 " b:is_bash		if defined, enhance with bash syntax
 "   is_kornshell	if neither b:is_kornshell or b:is_bash is
@@ -20,7 +20,7 @@
 "
 " This file includes many ideas from Éric Brunet (eric.brunet@ens.fr)
 
-" For version 5.x: Clear all syntax items
+" For version 5.x: Clear all syntax items {{{1
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
   syntax clear
@@ -28,6 +28,7 @@
   finish
 endif
 
+" handling /bin/sh with is_kornshell/is_sh {{{1
 " b:is_sh is set when "#! /bin/sh" is found;
 " However, it often is just a masquerade by bash (typically Linux)
 " or kornshell (typically workstations with Posix "sh").
@@ -57,7 +58,7 @@
 " sh syntax is case sensitive
 syn case match
 
-" Clusters: contains=@... clusters
+" Clusters: contains=@... clusters {{{1
 "==================================
 syn cluster shCaseEsacList	contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseSingleQuote,shCaseDoubleQuote,shSpecial
 syn cluster shCaseList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shRedir,shSetList,shSource,shStatement,shVariable,bkshFunction,shSpecial
@@ -79,7 +80,7 @@
 syn cluster shTestList	contains=shCharClass,shComment,shCommandSub,shDeref,shDerefSimple,shDoubleQuote,shExpr,shExpr,shNumber,shOperator,shSingleQuote,shSpecial,shTestOpr
 
 
-" Echo:
+" Echo: {{{1
 " ====
 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
 syn region shEcho matchgroup=shStatement start="\<echo\>"  skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|()]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList
@@ -88,7 +89,7 @@
 " This must be after the strings, so that bla \" be correct
 syn region shEmbeddedEcho contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shOperator end="$" matchgroup=NONE end="[<>;&|`)]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=shNumber,shSingleQuote,shDeref,shDerefSimple,shSpecialVar,shSpecial,shOperator,shDoubleQuote,shCharClass
 
-" Alias:
+" Alias: {{{1
 " =====
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn match shStatement "\<alias\>"
@@ -96,8 +97,8 @@
  syn region shAlias matchgroup=shStatement start="\<alias\>\s\+\(\w\+=\)\@=" skip="\\$" end="="
 endif
 
-" Error Codes
-" ===========
+" Error Codes: {{{1
+" ============
 syn match   shDoError "\<done\>"
 syn match   shIfError "\<fi\>"
 syn match   shInError "\<in\>"
@@ -110,25 +111,25 @@
 endif
 syn match     shTestError "]"
 
-" Options interceptor
-" ===================
+" Options Interceptor: {{{1
+" ====================
 syn match   shOption  "\s[\-+][a-zA-Z0-9]\+\>"ms=s+1
 syn match   shOption  "\s--\S\+"ms=s+1
 
-" Operators:
-" =========
+" Operators: {{{1
+" ==========
 syn match   shOperator	"[!&;|]"
 syn match   shOperator	"\[[[^:]\|\]]"
 syn match   shOperator	"!\=="		skipwhite nextgroup=shPattern
 syn match   shPattern	"\<\S\+\())\)\@="	contained contains=shSingleQuote,shDoubleQuote,shDeref
 
-" Subshells:
-" =========
+" Subshells: {{{1
+" ==========
 syn region shExpr  transparent matchgroup=shExprRegion  start="{" end="}"	contains=@shExprList2
 syn region shSubSh transparent matchgroup=shSubShRegion start="(" end=")"	contains=@shSubShList
 
-" Tests
-"======
+" Tests: {{{1
+"=======
 "syn region  shExpr transparent matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
 syn region  shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$+ end="\]" contains=@shTestList
 syn region  shExpr transparent matchgroup=shStatement start="\<test\>" skip=+\\\\\|\\$+ matchgroup=NONE end="[;&|]"me=e-1 end="$" contains=@shExprList1
@@ -138,12 +139,12 @@
  syn region  shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))"	contains=@shTestList
 endif
 
-" Character Class in Range
-" ========================
+" Character Class In Range: {{{1
+" =========================
 syn match   shCharClass	contained	"\[:\(backspace\|escape\|return\|xdigit\|alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|tab\):\]"
 
-" Loops: do, if, while, until
-" =====
+" Loops: do, if, while, until {{{1
+" ======
 syn region shDo		transparent matchgroup=shConditional start="\<do\>" matchgroup=shConditional end="\<done\>" contains=@shLoopList
 syn region shIf		transparent matchgroup=shConditional start="\<if\>" matchgroup=shConditional end="\<;\_s*then\>" end="\<fi\>"   contains=@shLoopList,shDblBrace,shDblParen
 syn region shFor	matchgroup=shLoop start="\<for\>" end="\<in\>" end="\<do\>"me=e-2	contains=@shLoopList,shDblParen
@@ -157,7 +158,7 @@
  syn region shRepeat   matchgroup=shLoop   start="\<until\>" end="\<do\>"me=e-2		contains=@shLoopList
 endif
 
-" Case: case...esac
+" Case: case...esac {{{1
 " ====
 syn match   shCaseBar	contained skipwhite "[^|"`'()]\{-}|"hs=e		nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseSingleQuote,shCaseDoubleQuote
 syn match   shCaseStart	contained skipwhite skipnl "("			nextgroup=shCase,shCaseBar
@@ -168,11 +169,12 @@
 syn region  shCaseDoubleQuote	matchgroup=shOperator start=+"+ skip=+\\\\\|\\.+ end=+"+	contains=@shDblQuoteList,shStringSpecial	skipwhite skipnl nextgroup=shCaseBar	contained
 syn region  shCaseCommandSub	start=+`+ skip=+\\\\\|\\.+ end=+`+		contains=@shCommandSubList		skipwhite skipnl nextgroup=shCaseBar	contained
 
-" Misc
-"=====
+" Misc: {{{1
+"======
 syn match   shWrapLineOperator "\\$"
 syn region  shCommandSub   start="`" skip="\\\\\|\\." end="`" contains=@shCommandSubList
 
+" $() and $(()): {{{1
 " $(..) is not supported by sh (Bourne shell).  However, apparently
 " some systems (HP?) have as their /bin/sh a (link to) Korn shell
 " (ie. Posix compliant shell).  /bin/ksh should work for those
@@ -205,8 +207,8 @@
 syn match   shSource	"\s\.\s"
 syn region  shColon	start="^\s*:" end="$\|" end="#"me=e-1 contains=@shColonList
 
-" String and Character constants
-"===============================
+" String And Character Constants: {{{1
+"================================
 syn match   shNumber	"-\=\<\d\+\>"
 syn match   shSpecial	"\\\d\d\d\|\\[abcfnrtv0]"	contained
 syn region  shSingleQuote	matchgroup=shOperator start=+'+ end=+'+		contains=shStringSpecial
@@ -214,20 +216,21 @@
 syn match   shStringSpecial	"[^[:print:]]"	contained
 syn match   shSpecial	"\\[\\\"\'`$()#]"
 
-" Comments
-"=========
+" Comments: {{{1
+"==========
 syn cluster    shCommentGroup	contains=shTodo,@Spell
 syn keyword    shTodo	contained	TODO
 syn match      shComment	"#.*$" contains=@shCommentGroup
 
-" File redirection highlighted as operators
-"==========================================
+" File Redirection Highlighted As Operators: {{{1
+"===========================================
 syn match      shRedir	"\d\=>\(&[-0-9]\)\="
 syn match      shRedir	"\d\=>>-\="
 syn match      shRedir	"\d\=<\(&[-0-9]\)\="
 syn match      shRedir	"\d<<-\="
 
-" Shell Input Redirection (Here Documents)
+" Here Documents: {{{1
+" =========================================
 if version < 600
  syn region shHereDoc matchgroup=shRedir start="<<\s*\**END[a-zA-Z_0-9]*\**"  matchgroup=shRedir end="^END[a-zA-Z_0-9]*$" contains=@shDblQuoteList
  syn region shHereDoc matchgroup=shRedir start="<<-\s*\**END[a-zA-Z_0-9]*\**" matchgroup=shRedir end="^\s*END[a-zA-Z_0-9]*$" contains=@shDblQuoteList
@@ -298,13 +301,16 @@
   syn match  shBeginLine ".*$"		contained	skipnl	nextgroup=shHerePayload	contains=@shCommandSubList
   syn match  shBeginHere "<<-\=\s*\S\+"	contained		nextgroup=shBeginLine
  endif
- if exists("b:is_bash")
-  syn match shRedir "<<<"
- endif
 endif
 
-" Identifiers
-"============
+" Here Strings: {{{1
+" =============
+if exists("b:is_bash")
+ syn match shRedir "<<<"
+endif
+
+" Identifiers: {{{1
+"=============
 syn match  shVariable "\<\([bwglsav]:\)\=[a-zA-Z0-9.!@_%+,]*\ze="	nextgroup=shSetIdentifier
 syn match  shIdWhiteSpace  contained	"\s"
 syn match  shSetIdentifier contained	"="	nextgroup=shPattern,shDeref,shDerefSimple,shDoubleQuote,shSingleQuote
@@ -321,6 +327,7 @@
   syn match  shStatement "\<\(set\|export\|unset\)$"
 endif
 
+" Functions: {{{1
 " handles functions which start:  Function () {
 "   Apparently Bourne shell accepts functions too,
 "   even though it isn't documented by my man pages
@@ -335,8 +342,8 @@
 syn match bkshFunctionParen	"[()]"	contained
 syn match bkshFunctionDelim	"[{}]"	contained
 
-" Parameter Dereferencing
-" =======================
+" Parameter Dereferencing: {{{1
+" ========================
 syn match  shDerefSimple	"\$\w\+"
 syn region shDeref	matchgroup=PreProc start="\${" end="}"	contains=@shDerefList,shDerefVarArray
 syn match  shDerefWordError	"[^}$[]"	contained
@@ -346,8 +353,8 @@
  syn region shDeref	matchgroup=PreProc start="\${##\=" end="}"	contains=@shDerefList
 endif
 
-" bash : ${!prefix*}
-" bash : ${#parameter}
+" bash: ${!prefix*} and ${#parameter}: {{{1
+" ====================================
 if exists("b:is_bash")
  syn region shDeref	matchgroup=PreProc start="\${!" end="\*\=}"	contains=@shDerefList,shDerefOp
  syn match  shDerefVar	contained	"{\@<=!\w\+"		nextgroup=@shDerefVarList
@@ -357,9 +364,10 @@
 syn match  shDerefSpecial	contained	"\({[#!]\)\@<=[[:alnum:]*@_]\+"	nextgroup=@shDerefVarList,shDerefOp
 syn match  shDerefVar	contained	"{\@<=\w\+"		nextgroup=@shDerefVarList
 
-" sh ksh bash : ${var[... ]...}  array reference
+" sh ksh bash : ${var[... ]...}  array reference: {{{1
 syn region  shDerefVarArray   contained	matchgroup=shDeref start="\[" end="]"	contains=@shCommandSubList nextgroup=shDerefOp,shDerefOpError
 
+" Special ${parameter OPERATOR word} handling: {{{1
 " sh ksh bash : ${parameter:-word}    word is default value
 " sh ksh bash : ${parameter:=word}    assign word as default value
 " sh ksh bash : ${parameter:?word}    display word if parameter is null
@@ -395,15 +403,20 @@
  syn match  shDerefPatString	contained	"[^}]\{1,}"
 endif
 
-" A bunch of useful sh keywords
+" Useful sh Keywords: {{{1
+" ===================
 syn keyword shStatement break cd chdir continue eval exec exit kill newgrp pwd read readonly return shift test trap ulimit umask wait
 syn keyword shConditional contained elif else then
 syn keyword shCondError elif else then
 
+" Useful ksh Keywords: {{{1
+" ====================
 if exists("b:is_kornshell") || exists("b:is_bash")
  syn keyword shFunction	function
  syn keyword shStatement autoload bg false fc fg functions getopts hash history integer jobs let nohup print printf r stop suspend time times true type unalias whence
 
+" Useful bash Keywords: {{{1
+" =====================
  if exists("b:is_bash")
   syn keyword shStatement bind builtin dirs disown enable help local logout popd pushd shopt source
  else
@@ -411,8 +424,8 @@
  endif
 endif
 
-" Syncs
-" =====
+" Synchronization: {{{1
+" ================
 if !exists("sh_minlines")
   let sh_minlines = 200
 endif
@@ -431,7 +444,8 @@
 syn sync match shUntilSync	grouphere	shRepeat	"\<until\>"
 syn sync match shWhileSync	grouphere	shRepeat	"\<while\>"
 
-" The default highlighting.
+" Default Highlighting: {{{1
+" =====================
 hi def link shArithRegion	shShellVariables
 hi def link shCaseBar	shConditional
 hi def link shCaseIn	shConditional
@@ -525,8 +539,8 @@
 hi def link shTodo		Todo
 hi def link shAlias		Identifier
 
-" Current Syntax
-" ==============
+" Set Current Syntax: {{{1
+" ===================
 if exists("b:is_bash")
  let b:current_syntax = "bash"
 elseif exists("b:is_kornshell")
@@ -535,4 +549,4 @@
  let b:current_syntax = "sh"
 endif
 
-" vim: ts=16
+" vim: ts=16 fdm=marker
diff --git a/runtime/syntax/sqlinformix.vim b/runtime/syntax/sqlinformix.vim
new file mode 100644
index 0000000..b4d0236
--- /dev/null
+++ b/runtime/syntax/sqlinformix.vim
@@ -0,0 +1,196 @@
+" Vim syntax file
+" Informix Structured Query Language (SQL) and Stored Procedure Language (SPL)
+" Language:	SQL, SPL (Informix Dynamic Server 2000 v9.2)
+" Maintainer:	Dean Hill <dhill@hotmail.com>
+" Last Change:	2004 Aug 30
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syn case ignore
+
+
+
+" === Comment syntax group ===
+syn region sqlComment    start="{"  end="}" contains=sqlTodo
+syn match sqlComment	"--.*$" contains=sqlTodo
+syn sync ccomment sqlComment
+
+
+
+" === Constant syntax group ===
+" = Boolean subgroup =
+syn keyword sqlBoolean  true false
+syn keyword sqlBoolean  null
+syn keyword sqlBoolean  public user
+syn keyword sqlBoolean  current today
+syn keyword sqlBoolean  year month day hour minute second fraction
+
+" = String subgroup =
+syn region sqlString		start=+"+  end=+"+
+syn region sqlString		start=+'+  end=+'+
+
+" = Numbers subgroup =
+syn match sqlNumber		"-\=\<\d*\.\=[0-9_]\>"
+
+
+
+" === Statement syntax group ===
+" SQL
+syn keyword sqlStatement allocate alter
+syn keyword sqlStatement begin
+syn keyword sqlStatement close commit connect create
+syn keyword sqlStatement database deallocate declare delete describe disconnect drop
+syn keyword sqlStatement execute fetch flush free get grant info insert
+syn keyword sqlStatement load lock open output
+syn keyword sqlStatement prepare put
+syn keyword sqlStatement rename revoke rollback select set start stop
+syn keyword sqlStatement truncate unload unlock update
+syn keyword sqlStatement whenever
+" SPL
+syn keyword sqlStatement call continue define
+syn keyword sqlStatement exit
+syn keyword sqlStatement let
+syn keyword sqlStatement return system trace
+
+" = Conditional subgroup =
+" SPL
+syn keyword sqlConditional elif else if then
+syn keyword sqlConditional case
+" Highlight "end if" with one or more separating spaces
+syn match  sqlConditional "end \+if"
+
+" = Repeat subgroup =
+" SQL/SPL
+" Handle SQL triggers' "for each row" clause and SPL "for" loop
+syn match  sqlRepeat "for\( \+each \+row\)\="
+" SPL
+syn keyword sqlRepeat foreach while
+" Highlight "end for", etc. with one or more separating spaces
+syn match  sqlRepeat "end \+for"
+syn match  sqlRepeat "end \+foreach"
+syn match  sqlRepeat "end \+while"
+
+" = Exception subgroup =
+" SPL
+syn match  sqlException "on \+exception"
+syn match  sqlException "end \+exception"
+syn match  sqlException "end \+exception \+with \+resume"
+syn match  sqlException "raise \+exception"
+
+" = Keyword subgroup =
+" SQL
+syn keyword sqlKeyword aggregate add as authorization autofree by
+syn keyword sqlKeyword cache cascade check cluster collation
+syn keyword sqlKeyword column connection constraint cross
+syn keyword sqlKeyword dataskip debug default deferred_prepare
+syn keyword sqlKeyword descriptor diagnostics
+syn keyword sqlKeyword each escape explain external
+syn keyword sqlKeyword file foreign fragment from function
+syn keyword sqlKeyword group having
+syn keyword sqlKeyword immediate index inner into isolation
+syn keyword sqlKeyword join key
+syn keyword sqlKeyword left level log
+syn keyword sqlKeyword mode modify mounting new no
+syn keyword sqlKeyword object of old optical option
+syn keyword sqlKeyword optimization order outer
+syn keyword sqlKeyword pdqpriority pload primary procedure
+syn keyword sqlKeyword references referencing release reserve
+syn keyword sqlKeyword residency right role routine row
+syn keyword sqlKeyword schedule schema scratch session set
+syn keyword sqlKeyword statement statistics synonym
+syn keyword sqlKeyword table temp temporary timeout to transaction trigger
+syn keyword sqlKeyword using values view violations
+syn keyword sqlKeyword where with work
+" Highlight "on" (if it's not followed by some words we've already handled)
+syn match sqlKeyword "on \+\(exception\)\@!"
+" SPL
+" Highlight "end" (if it's not followed by some words we've already handled)
+syn match sqlKeyword "end \+\(if\|for\|foreach\|while\|exception\)\@!"
+syn keyword sqlKeyword resume returning
+
+" = Operator subgroup =
+" SQL
+syn keyword sqlOperator	not and or
+syn keyword sqlOperator	in is any some all between exists
+syn keyword sqlOperator	like matches
+syn keyword sqlOperator union intersect
+syn keyword sqlOperator distinct unique
+
+
+
+" === Identifier syntax group ===
+" = Function subgroup =
+" SQL
+syn keyword sqlFunction	abs acos asin atan atan2 avg
+syn keyword sqlFunction	cardinality cast char_length character_length cos count
+syn keyword sqlFunction	exp filetoblob filetoclob hex
+syn keyword sqlFunction	initcap length logn log10 lower lpad
+syn keyword sqlFunction	min max mod octet_length pow range replace root round rpad
+syn keyword sqlFunction	sin sqrt stdev substr substring sum
+syn keyword sqlFunction	to_char tan to_date trim trunc upper variance
+
+
+
+" === Type syntax group ===
+" SQL
+syn keyword sqlType	blob boolean byte char character clob
+syn keyword sqlType	date datetime dec decimal double
+syn keyword sqlType	float int int8 integer interval list lvarchar
+syn keyword sqlType	money multiset nchar numeric nvarchar
+syn keyword sqlType	real serial serial8 smallfloat smallint
+syn keyword sqlType	text varchar varying
+
+
+
+" === Todo syntax group ===
+syn keyword sqlTodo TODO FIXME XXX DEBUG NOTE
+
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_sql_syn_inits")
+  if version < 508
+    let did_sql_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+
+  " === Comment syntax group ===
+  HiLink sqlComment	Comment
+
+  " === Constant syntax group ===
+  HiLink sqlNumber	Number
+  HiLink sqlBoolean	Boolean
+  HiLink sqlString	String
+
+  " === Statment syntax group ===
+  HiLink sqlStatement	Statement
+  HiLink sqlConditional	Conditional
+  HiLink sqlRepeat		Repeat
+  HiLink sqlKeyword		Keyword
+  HiLink sqlOperator	Operator
+  HiLink sqlException	Exception
+
+  " === Identifier syntax group ===
+  HiLink sqlFunction	Function
+
+  " === Type syntax group ===
+  HiLink sqlType	Type
+
+  " === Todo syntax group ===
+  HiLink sqlTodo	Todo
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "sqlinformix"
diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim
index f816bc2..652cdba 100644
--- a/runtime/syntax/synload.vim
+++ b/runtime/syntax/synload.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 May 21
+" Last Change:	2004 Aug 28
 
 " This file sets up for syntax highlighting.
 " It is loaded from "syntax.vim" and "manual.vim".
@@ -50,15 +50,25 @@
 
   if s != ""
     " Load the syntax file(s)
-"   if has("mac")
-"     exe "runtime! syntax:" . s . ".vim"
-"   else
-      exe "runtime! syntax/" . s . ".vim"
-"   endif
+    exe "runtime! syntax/" . s . ".vim"
   endif
 endfun
 
 
+" Handle adding doxygen to other languages (C, C++, IDL)
+au Syntax cpp,c,idl 
+	\ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)
+	\	|| (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)
+	\   | runtime syntax/doxygen.vim 
+	\ | endif
+
+au Syntax *doxygen
+	\ if exists("b:current_syntax") | finish | endif
+	\ | let syn = substitute(expand("<amatch>"), 'doxygen$', '', '')
+	\ | if syn != '' | exe 'runtime syntax/'.syn.'.vim' | endif
+	\ | if b:current_syntax !~ 'doxygen' | runtime syntax/doxygen.vim | endif
+
+
 " Source the user-specified syntax highlighting file
 if exists("mysyntaxfile") && filereadable(expand(mysyntaxfile))
   execute "source " . mysyntaxfile