updated for version 7.0103
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 43f7219..d1764af 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.0aa.  Last change: 2005 Feb 14
+*cmdline.txt*   For Vim version 7.0aa.  Last change: 2005 Jul 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -726,7 +726,7 @@
 		   effective buffer number (for ":r file" it is the current
 		   buffer, the file being read is not in a buffer).
 	<amatch>   when executing autocommands, is replaced with the match for
-		   which this autocommand was executed.  It differs form
+		   which this autocommand was executed.  It differs from
 		   <afile> only when the file name isn't used to match with
 		   (for FileType and Syntax events).
 	<sfile>    when executing a ":source" command, is replaced with the
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 5fc1dd8..79782c8 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 04
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -79,20 +79,20 @@
 
 							*:spe* *:spellgood*
 :[count]spe[llgood] {word}
-			Add [word} as a good word to 'spellfile', like with
+			Add {word} as a good word to 'spellfile', like with
 			"zg".  Without count the first name is used, with a
 			count of two the second entry, etc.
 
-:spe[llgood]! {word}	Add [word} as a good word to the internal word list,
+:spe[llgood]! {word}	Add {word} as a good word to the internal word list,
 			like with "zG".
 
 							*:spellw* *:spellwrong*
 :[count]spellw[rong] {word}
-			Add [word} as a wrong (bad) word to 'spellfile', as
+			Add {word} as a wrong (bad) word to 'spellfile', as
 			with "zw".  Without count the first name is used, with
 			a count of two the second entry, etc.
 
-:spellw[rong]! {word}	Add [word} as a wrong (bad) word to the internal word
+:spellw[rong]! {word}	Add {word} as a wrong (bad) word to the internal word
 			list.
 
 After adding a word to 'spellfile' with the above commands its associated
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 2660432..8272543 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 03
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3907,6 +3907,9 @@
 							*hl-SpellBad*
 SpellBad	Word that is not recognized by the spellchecker. |spell|
 		This will be combined with the highlighting used otherwise.
+							*hl-SpellCap*
+SpellCap	Word that should start with a capital. |spell|
+		This will be combined with the highlighting used otherwise.
 							*hl-SpellLocal*
 SpellLocal	Word that is recognized by the spellchecker as one that is
 		used in another region. |spell|
diff --git a/runtime/doc/tags b/runtime/doc/tags
index f231deb..b7f8aa7 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5148,6 +5148,7 @@
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5207,6 +5208,7 @@
 hl-SignColumn	syntax.txt	/*hl-SignColumn*
 hl-SpecialKey	syntax.txt	/*hl-SpecialKey*
 hl-SpellBad	syntax.txt	/*hl-SpellBad*
+hl-SpellCap	syntax.txt	/*hl-SpellCap*
 hl-SpellLocal	syntax.txt	/*hl-SpellLocal*
 hl-SpellRare	syntax.txt	/*hl-SpellRare*
 hl-StatusLine	syntax.txt	/*hl-StatusLine*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 0dc952e..d290eea 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 04
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/ftplugin/AppendMatchGroup.vim b/runtime/ftplugin/AppendMatchGroup.vim
index da7994e..34e80b5 100644
--- a/runtime/ftplugin/AppendMatchGroup.vim
+++ b/runtime/ftplugin/AppendMatchGroup.vim
@@ -1,125 +1,125 @@
-" Vim filetype plugin file utility

-" Language:    * (various)

-" Maintainer:  Dave Silvia <dsilvia@mchsi.com>

-" Date:        6/30/2004

-

-" The start of match (b:SOM) default is:

-"       '\<'

-" The end of match (b:EOM) default is:

-"       '\>'

-"

-" If you want to use some other start/end of match, just assign the

-" value to the b:SOM|EOM variable in your filetype script.

-"

-" SEE: :h pattern.txt

-"      :h pattern-searches

-"      :h regular-expression

-"      :h matchit

-

-let s:myName=expand("<sfile>:t")

-

-" matchit.vim not loaded -- don't do anyting

-if !exists("loaded_matchit")

-	echomsg s:myName.": matchit.vim not loaded -- finishing without loading"

-	finish

-endif

-

-" already been here -- don't redefine

-if exists("*AppendMatchGroup")

-	finish

-endif

-

-" Function To Build b:match_words

-" The following function, 'AppendMatchGroup', helps to increase

-" readability of your filetype script if you choose to use matchit.

-" It also precludes many construction errors, reducing the

-" construction to simply invoking the function with the match words.

-" As an example, let's take the ubiquitous if/then/else/endif type

-" of construct.  This is how the entry in your filetype script would look.

-"

-"     " source the AppendMatchGroup function file

-"     runtime ftplugin/AppendMatchGroup.vim

-"

-"     " fill b:match_words

-"     call AppendMatchGroup('if,then,else,endif')

-"

-" And the b:match_words constructed would look like:

-"

-"     \<if\>:\<then\>:\<else\>:\<endif\>

-" 

-" Use of AppendMatchGroup makes your filetype script is a little

-" less busy and a lot more readable.  Additionally, it

-" checks three critical things:

-"

-"      1)  Do you have at least 2 entries in your match group.

-"

-"      2)  Does the buffer variable 'b:match_words' exist?  if not, create it.

-"

-"      3)  If the buffer variable 'b:match_words' does exist, is the last

-"          character a ','?  If not, add it before appending.

-" 

-" You should now be able to match 'if/then/else/endif' in succession

-" in your source file, in just about any construction you may have

-" chosen for them.

-"

-" To add another group, simply call 'AppendMatchGroup again.  E.G.:

-"

-"      call AppendMatchGroup('while,do,endwhile')

-

-function AppendMatchGroup(mwordList)

-	let List=a:mwordList

-	let Comma=match(List,',')

-	if Comma == -1 || Comma == strlen(List)-1

-		echoerr "Must supply a comma separated list of at least 2 entries."

-		echoerr "Supplied list: <".List.">"

-		return

-	endif

-	let listEntryBegin=0

-	let listEntryEnd=Comma

-	let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)

-	let List=strpart(List,Comma+1)

-	let Comma=match(List,',')

-	" if listEntry is all spaces || List is empty || List is all spaces

-	if (match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1)

-			\ || List == '' || (match(List,'\s\+') == 0 && match(List,'\S\+') == -1)

-		echoerr "Can't use all spaces for an entry <".listEntry.">"

-		echoerr "Remaining supplied list: <".List.">"

-		return

-	endif

-

-	if !exists("b:SOM")

-		let b:SOM='\<'

-	endif

-	if !exists("b:EOM")

-		let b:EOM='\>'

-	endif

-	if !exists("b:match_words")

-		let b:match_words=''

-	endif

-	if b:match_words != '' && match(b:match_words,',$') == -1

-		let b:match_words=b:match_words.','

-	endif

-	" okay, all set add first entry in this list

-	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'

-	while Comma != -1

-		let listEntryEnd=Comma

-		let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)

-		let List=strpart(List,Comma+1)

-		let Comma=match(List,',')

-		" if listEntry is all spaces

-		if match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1

-			echoerr "Can't use all spaces for an entry <".listEntry."> - skipping"

-			echoerr "Remaining supplied list: <".List.">"

-			continue

-		endif

-		let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'

-	endwhile

-	let listEntry=List

-	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM

-endfunction

-

-" TODO:  Write a wrapper to handle multiple groups in one function call.

-"        Don't see a lot of utility in this as it would undoubtedly warrant

-"        continuation lines in the filetype script and it would be a toss

-"        up as to which is more readable: individual calls one to a line or

-"        a single call with continuation lines.  I vote for the former.

+" Vim filetype plugin file utility
+" Language:    * (various)
+" Maintainer:  Dave Silvia <dsilvia@mchsi.com>
+" Date:        6/30/2004
+
+" The start of match (b:SOM) default is:
+"       '\<'
+" The end of match (b:EOM) default is:
+"       '\>'
+"
+" If you want to use some other start/end of match, just assign the
+" value to the b:SOM|EOM variable in your filetype script.
+"
+" SEE: :h pattern.txt
+"      :h pattern-searches
+"      :h regular-expression
+"      :h matchit
+
+let s:myName=expand("<sfile>:t")
+
+" matchit.vim not loaded -- don't do anyting
+if !exists("loaded_matchit")
+	echomsg s:myName.": matchit.vim not loaded -- finishing without loading"
+	finish
+endif
+
+" already been here -- don't redefine
+if exists("*AppendMatchGroup")
+	finish
+endif
+
+" Function To Build b:match_words
+" The following function, 'AppendMatchGroup', helps to increase
+" readability of your filetype script if you choose to use matchit.
+" It also precludes many construction errors, reducing the
+" construction to simply invoking the function with the match words.
+" As an example, let's take the ubiquitous if/then/else/endif type
+" of construct.  This is how the entry in your filetype script would look.
+"
+"     " source the AppendMatchGroup function file
+"     runtime ftplugin/AppendMatchGroup.vim
+"
+"     " fill b:match_words
+"     call AppendMatchGroup('if,then,else,endif')
+"
+" And the b:match_words constructed would look like:
+"
+"     \<if\>:\<then\>:\<else\>:\<endif\>
+" 
+" Use of AppendMatchGroup makes your filetype script is a little
+" less busy and a lot more readable.  Additionally, it
+" checks three critical things:
+"
+"      1)  Do you have at least 2 entries in your match group.
+"
+"      2)  Does the buffer variable 'b:match_words' exist?  if not, create it.
+"
+"      3)  If the buffer variable 'b:match_words' does exist, is the last
+"          character a ','?  If not, add it before appending.
+" 
+" You should now be able to match 'if/then/else/endif' in succession
+" in your source file, in just about any construction you may have
+" chosen for them.
+"
+" To add another group, simply call 'AppendMatchGroup again.  E.G.:
+"
+"      call AppendMatchGroup('while,do,endwhile')
+
+function AppendMatchGroup(mwordList)
+	let List=a:mwordList
+	let Comma=match(List,',')
+	if Comma == -1 || Comma == strlen(List)-1
+		echoerr "Must supply a comma separated list of at least 2 entries."
+		echoerr "Supplied list: <".List.">"
+		return
+	endif
+	let listEntryBegin=0
+	let listEntryEnd=Comma
+	let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
+	let List=strpart(List,Comma+1)
+	let Comma=match(List,',')
+	" if listEntry is all spaces || List is empty || List is all spaces
+	if (match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1)
+			\ || List == '' || (match(List,'\s\+') == 0 && match(List,'\S\+') == -1)
+		echoerr "Can't use all spaces for an entry <".listEntry.">"
+		echoerr "Remaining supplied list: <".List.">"
+		return
+	endif
+
+	if !exists("b:SOM")
+		let b:SOM='\<'
+	endif
+	if !exists("b:EOM")
+		let b:EOM='\>'
+	endif
+	if !exists("b:match_words")
+		let b:match_words=''
+	endif
+	if b:match_words != '' && match(b:match_words,',$') == -1
+		let b:match_words=b:match_words.','
+	endif
+	" okay, all set add first entry in this list
+	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
+	while Comma != -1
+		let listEntryEnd=Comma
+		let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
+		let List=strpart(List,Comma+1)
+		let Comma=match(List,',')
+		" if listEntry is all spaces
+		if match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1
+			echoerr "Can't use all spaces for an entry <".listEntry."> - skipping"
+			echoerr "Remaining supplied list: <".List.">"
+			continue
+		endif
+		let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
+	endwhile
+	let listEntry=List
+	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM
+endfunction
+
+" TODO:  Write a wrapper to handle multiple groups in one function call.
+"        Don't see a lot of utility in this as it would undoubtedly warrant
+"        continuation lines in the filetype script and it would be a toss
+"        up as to which is more readable: individual calls one to a line or
+"        a single call with continuation lines.  I vote for the former.
diff --git a/runtime/ftplugin/mupad.vim b/runtime/ftplugin/mupad.vim
index 791b99a..ef3a4fe 100644
--- a/runtime/ftplugin/mupad.vim
+++ b/runtime/ftplugin/mupad.vim
@@ -1,30 +1,30 @@
-" Vim filetype plugin file

-" Language:    MuPAD source files

-" Maintainer:  Dave Silvia <dsilvia@mchsi.com>

-" Filenames:   *.mu

-" Date:        6/30/2004

-

-if exists("b:did_ftplugin") | finish | endif

-let b:did_ftplugin = 1

-

-" Change the :browse e filter to primarily show MuPAD source files.

-if has("gui_win32")

-  let  b:browsefilter=

-		\ "MuPAD source (*.mu)\t*.mu\n" .

-		\	"All Files (*.*)\t*.*\n"

-endif

-

-" matchit.vim not loaded -- don't do anyting below

-if !exists("loaded_matchit")

-	" echomsg "matchit.vim not loaded -- finishing"

-	finish

-endif

-

-" source the AppendMatchGroup function file

-runtime ftplugin/AppendMatchGroup.vim

-

-" fill b:match_words for MuPAD

-call AppendMatchGroup('domain,end_domain')

-call AppendMatchGroup('proc,begin,end_proc')

-call AppendMatchGroup('if,then,elif,else,end_if')

-call AppendMatchGroup('\%(for\|while\|repeat\|case\),of,do,break,next,until,\%(end_for\|end_while\|end_repeat\|end_case\)')

+" Vim filetype plugin file
+" Language:    MuPAD source files
+" Maintainer:  Dave Silvia <dsilvia@mchsi.com>
+" Filenames:   *.mu
+" Date:        6/30/2004
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+" Change the :browse e filter to primarily show MuPAD source files.
+if has("gui_win32")
+  let  b:browsefilter=
+		\ "MuPAD source (*.mu)\t*.mu\n" .
+		\	"All Files (*.*)\t*.*\n"
+endif
+
+" matchit.vim not loaded -- don't do anyting below
+if !exists("loaded_matchit")
+	" echomsg "matchit.vim not loaded -- finishing"
+	finish
+endif
+
+" source the AppendMatchGroup function file
+runtime ftplugin/AppendMatchGroup.vim
+
+" fill b:match_words for MuPAD
+call AppendMatchGroup('domain,end_domain')
+call AppendMatchGroup('proc,begin,end_proc')
+call AppendMatchGroup('if,then,elif,else,end_if')
+call AppendMatchGroup('\%(for\|while\|repeat\|case\),of,do,break,next,until,\%(end_for\|end_while\|end_repeat\|end_case\)')
diff --git a/runtime/indent/pascal.vim b/runtime/indent/pascal.vim
index 7085287..b1a652d 100644
--- a/runtime/indent/pascal.vim
+++ b/runtime/indent/pascal.vim
@@ -1,173 +1,173 @@
-" Vim indent file

-" Language:    Pascal

-" Maintainer:  Neil Carter <n.carter@swansea.ac.uk>

-" Created:     2004 Jul 13

-" Last Change: 2005 Jun 15

-

-

-if exists("b:did_indent")

-	finish

-endif

-let b:did_indent = 1

-

-setlocal indentexpr=GetPascalIndent(v:lnum)

-setlocal indentkeys&

-setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for

-setlocal indentkeys+==program,==function,==procedure,==object,==private

-setlocal indentkeys+==record,==if,==else,==case

-

-if exists("*GetPascalIndent")

-	finish

-endif

-

-

-function! s:GetPrevNonCommentLineNum( line_num )

-

-	" Skip lines starting with a comment

-	let SKIP_LINES = '^\s*\(\((\*\)\|\(\*\ \)\|\(\*)\)\|{\|}\)'

-

-	let nline = a:line_num

-	while nline > 0

-		let nline = prevnonblank(nline-1)

-		if getline(nline) !~? SKIP_LINES

-			break

-		endif

-	endwhile

-

-	return nline

-endfunction

-

-

-function! GetPascalIndent( line_num )

-	" Line 0 always goes at column 0

-	if a:line_num == 0

-		return 0

-	endif

-

-	let this_codeline = getline( a:line_num )

-

-	" If in the middle of a three-part comment

-	if this_codeline =~ '^\s*\*'

-		return indent( a:line_num )

-	endif

-

-	let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num )

-	let prev_codeline = getline( prev_codeline_num )

-	let indnt = indent( prev_codeline_num )

-

-	" Compiler directives should always go in column zero.

-	if this_codeline =~ '^\s*{\(\$IFDEF\|\$ELSE\|\$ENDIF\)'

-		return 0

-	endif

-

-	" These items have nothing before or after (not even a comment), and

-	" go on column 0. Make sure that the ^\s* is followed by \( to make

-	" ORs work properly, and not include the start of line (this must

-	" always appear).

-	" The bracketed expression with the underline is a routine

-	" separator. This is one case where we do indent comment lines.

-	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\<\(const\|var\)\>\)$'

-		return 0

-	endif

-

-	" These items may have text after them, and go on column 0 (in most

-	" cases). The problem is that "function" and "procedure" keywords

-	" should be indented if within a class declaration.

-	if this_codeline =~ '^\s*\<\(program\|type\|uses\|procedure\|function\)\>'

-		return 0

-	endif

-

-	" BEGIN

-	" If the begin does not come after "if", "for", or "else", then it

-	" goes in column 0

-	if this_codeline =~ '^\s*begin\>' && prev_codeline !~ '^\s*\<\(if\|for\|else\)\>'

-		return 0

-	endif

-

-	" These keywords are indented once only.

-	if this_codeline =~ '^\s*\<\(private\)\>'

-		return &shiftwidth

-	endif

-

-	" If the PREVIOUS LINE contained these items, the current line is

-	" always indented once.

-	if prev_codeline =~ '^\s*\<\(type\|uses\)\>'

-		return &shiftwidth

-	endif

-

-	" These keywords are indented once only. Possibly surrounded by

-	" other chars.

-	if this_codeline =~ '^.\+\<\(object\|record\)\>'

-		return &shiftwidth

-	endif

-

-	" If the previous line was indenting...

-	if prev_codeline =~ '^\s*\<\(for\|if\|case\|else\|end\ else\)\>'

-		" then indent.

-		let indnt = indnt + &shiftwidth

-		" BUT... if this is the start of a multistatement block then we

-		" need to align the begin with the previous line.

-		if this_codeline =~ '^\s*begin\>'

-			return indnt - &shiftwidth

-		endif

-

-		" We also need to keep the indentation level constant if the

-		" whole if-then statement was on one line.

-		if prev_codeline =~ '\<then\>.\+'

-			let indnt = indnt - &shiftwidth

-		endif

-	endif

-

-	" PREVIOUS-LINE BEGIN

-	" If the previous line was an indenting keyword then indent once...

-	if prev_codeline =~ '^\s*\<\(const\|var\|begin\|repeat\|private\)\>'

-		" But only if this is another var in a list.

-		if this_codeline !~ '^\s*var\>'

-			return indnt + &shiftwidth

-		endif

-	endif

-

-	" PREVIOUS-LINE BEGIN

-	" Indent code after a case statement begin

-	if prev_codeline =~ '\:\ begin\>'

-		return indnt + &shiftwidth

-	endif

-

-	" These words may have text before them on the line (hence the .*)

-	" but are followed by nothing. Always indent once only.

-	if prev_codeline =~ '^\(.*\|\s*\)\<\(object\|record\)\>$'

-		return indnt + &shiftwidth

-	endif

-

-	" If we just closed a bracket that started on a previous line, then

-	" unindent. But don't return yet -- we need to check for further

-	" unindentation (for end/until/else)

-	if prev_codeline =~ '^[^(]*[^*])'

-		let indnt = indnt - &shiftwidth

-	endif

-

-	" At the end of a block, we have to unindent both the current line

-	" (the "end" for instance) and the newly-created line.

-	if this_codeline =~ '^\s*\<\(end\|until\|else\)\>'

-		return indnt - &shiftwidth

-	endif

-

-	" If we have opened a bracket and it continues over one line,

-	" then indent once.

-	"

-	" RE = an opening bracket followed by any amount of anything other

-	" than a closing bracket and then the end-of-line.

-	"

-	" If we didn't include the end of line, this RE would match even

-	" closed brackets, since it would match everything up to the closing

-	" bracket.

-	"

-	" This test isn't clever enough to handle brackets inside strings or

-	" comments.

-	if prev_codeline =~ '([^*]\=[^)]*$'

-		return indnt + &shiftwidth

-	endif

-

-	return indnt

-endfunction

-

+" Vim indent file
+" Language:    Pascal
+" Maintainer:  Neil Carter <n.carter@swansea.ac.uk>
+" Created:     2004 Jul 13
+" Last Change: 2005 Jul 05
+
+
+if exists("b:did_indent")
+	finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetPascalIndent(v:lnum)
+setlocal indentkeys&
+setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for
+setlocal indentkeys+==program,==function,==procedure,==object,==private
+setlocal indentkeys+==record,==if,==else,==case
+
+if exists("*GetPascalIndent")
+	finish
+endif
+
+
+function! s:GetPrevNonCommentLineNum( line_num )
+
+	" Skip lines starting with a comment
+	let SKIP_LINES = '^\s*\(\((\*\)\|\(\*\ \)\|\(\*)\)\|{\|}\)'
+
+	let nline = a:line_num
+	while nline > 0
+		let nline = prevnonblank(nline-1)
+		if getline(nline) !~? SKIP_LINES
+			break
+		endif
+	endwhile
+
+	return nline
+endfunction
+
+
+function! GetPascalIndent( line_num )
+	" Line 0 always goes at column 0
+	if a:line_num == 0
+		return 0
+	endif
+
+	let this_codeline = getline( a:line_num )
+
+	" If in the middle of a three-part comment
+	if this_codeline =~ '^\s*\*'
+		return indent( a:line_num )
+	endif
+
+	let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num )
+	let prev_codeline = getline( prev_codeline_num )
+	let indnt = indent( prev_codeline_num )
+
+	" Compiler directives should always go in column zero.
+	if this_codeline =~ '^\s*{\(\$IFDEF\|\$ELSE\|\$ENDIF\)'
+		return 0
+	endif
+
+	" These items have nothing before or after (not even a comment), and
+	" go on column 0. Make sure that the ^\s* is followed by \( to make
+	" ORs work properly, and not include the start of line (this must
+	" always appear).
+	" The bracketed expression with the underline is a routine
+	" separator. This is one case where we do indent comment lines.
+	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\<\(const\|var\)\>\)$'
+		return 0
+	endif
+
+	" These items may have text after them, and go on column 0 (in most
+	" cases). The problem is that "function" and "procedure" keywords
+	" should be indented if within a class declaration.
+	if this_codeline =~ '^\s*\<\(program\|type\|uses\|procedure\|function\)\>'
+		return 0
+	endif
+
+	" BEGIN
+	" If the begin does not come after "if", "for", or "else", then it
+	" goes in column 0
+	if this_codeline =~ '^\s*begin\>' && prev_codeline !~ '^\s*\<\(if\|for\|else\)\>'
+		return 0
+	endif
+
+	" These keywords are indented once only.
+	if this_codeline =~ '^\s*\<\(private\)\>'
+		return &shiftwidth
+	endif
+
+	" If the PREVIOUS LINE contained these items, the current line is
+	" always indented once.
+	if prev_codeline =~ '^\s*\<\(type\|uses\)\>'
+		return &shiftwidth
+	endif
+
+	" These keywords are indented once only. Possibly surrounded by
+	" other chars.
+	if this_codeline =~ '^.\+\<\(object\|record\)\>'
+		return &shiftwidth
+	endif
+
+	" If the previous line was indenting...
+	if prev_codeline =~ '^\s*\<\(for\|if\|case\|else\|end\ else\)\>'
+		" then indent.
+		let indnt = indnt + &shiftwidth
+		" BUT... if this is the start of a multistatement block then we
+		" need to align the begin with the previous line.
+		if this_codeline =~ '^\s*begin\>'
+			return indnt - &shiftwidth
+		endif
+
+		" We also need to keep the indentation level constant if the
+		" whole if-then statement was on one line.
+		if prev_codeline =~ '\<then\>.\+'
+			let indnt = indnt - &shiftwidth
+		endif
+	endif
+
+	" PREVIOUS-LINE BEGIN
+	" If the previous line was an indenting keyword then indent once...
+	if prev_codeline =~ '^\s*\<\(const\|var\|begin\|repeat\|private\)\>'
+		" But only if this is another var in a list.
+		if this_codeline !~ '^\s*var\>'
+			return indnt + &shiftwidth
+		endif
+	endif
+
+	" PREVIOUS-LINE BEGIN
+	" Indent code after a case statement begin
+	if prev_codeline =~ '\:\ begin\>'
+		return indnt + &shiftwidth
+	endif
+
+	" These words may have text before them on the line (hence the .*)
+	" but are followed by nothing. Always indent once only.
+	if prev_codeline =~ '^\(.*\|\s*\)\<\(object\|record\)\>$'
+		return indnt + &shiftwidth
+	endif
+
+	" If we just closed a bracket that started on a previous line, then
+	" unindent. But don't return yet -- we need to check for further
+	" unindentation (for end/until/else)
+	if prev_codeline =~ '^[^(]*[^*])'
+		let indnt = indnt - &shiftwidth
+	endif
+
+	" At the end of a block, we have to unindent both the current line
+	" (the "end" for instance) and the newly-created line.
+	if this_codeline =~ '^\s*\<\(end\|until\|else\)\>'
+		return indnt - &shiftwidth
+	endif
+
+	" If we have opened a bracket and it continues over one line,
+	" then indent once.
+	"
+	" RE = an opening bracket followed by any amount of anything other
+	" than a closing bracket and then the end-of-line.
+	"
+	" If we didn't include the end of line, this RE would match even
+	" closed brackets, since it would match everything up to the closing
+	" bracket.
+	"
+	" This test isn't clever enough to handle brackets inside strings or
+	" comments.
+	if prev_codeline =~ '([^*]\=[^)]*$'
+		return indnt + &shiftwidth
+	endif
+
+	return indnt
+endfunction
+
diff --git a/runtime/keymap/canfr-win.vim b/runtime/keymap/canfr-win.vim
index 7a405bf..1907fc5 100644
--- a/runtime/keymap/canfr-win.vim
+++ b/runtime/keymap/canfr-win.vim
@@ -1,91 +1,91 @@
-" Vim Keymap file for the normalized Canadian multilingual keyboard

-" CAN/CSA Z243.200-92 using the latin1 encoding.

-" This mapping is limited in scope, as it assumes that the AltGr

-" key works as it typically does in a Windows system with a multilingual

-" English keyboard.  It probably won't work with the US keyboard on US

-" English versions of Windows, because those don't provide the AltGr keys.

-" The mapping was tested with Win2k and WinXP.

-

-" Maintainer: Eric Joanis <joanis@cs.toronto.edu>

-" Last Change: 2004 Jan 13

-

-" 2003 Dec 04

-" Initial Revision

-

-" 2004 Jan 13

-" Added the upper case accented characters, forgotten in the initial version.

-

-" All characters are given literally, conversion to another encoding (e.g.,

-" UTF-8) should work.

-scriptencoding latin1

-

-" Use this short name in the status line.

-let b:keymap_name = "canfr"

-

-loadkeymap

-<	'

->	"

-/	é

-?	É

-'	è

-\"	È

-\\	à

-|	À

-[a	â

-[e	ê

-[i	î

-[o	ô

-[u	û

-[A	Â

-[E	Ê

-[I	Î

-[O	Ô

-[U	Û

-[[	^

-{a	ä

-{e	ë

-{i	ï

-{o	ö

-{u	ü

-{y	ÿ

-{A	Ä

-{E	Ë

-{I	Ï

-{O	Ö

-{U	Ü

-]	ç

-}	Ç

-`	/

-~	\\

-^	?

-ú	«

-ø	»

-¬	<

-®	>

-»	°

-Ûa	à

-Ûe	è

-Ûi	ì

-Ûo	ò

-Ûu	ù

-ÛA	À

-ÛE	È

-ÛI	Ì

-ÛO	Ò

-ÛU	Ù

-ÛÛ	`

-Ýa	ã

-Ýo	õ

-Ýn	ñ

-Ýs	ß

-ÝA	Ã

-ÝO	Õ

-ÝN	Ñ

-ÝS	ß

-ÝÝ	~

-à	|

-·	{

-¸	}

-¹	[

-°	]

-½	¬

+" Vim Keymap file for the normalized Canadian multilingual keyboard
+" CAN/CSA Z243.200-92 using the latin1 encoding.
+" This mapping is limited in scope, as it assumes that the AltGr
+" key works as it typically does in a Windows system with a multilingual
+" English keyboard.  It probably won't work with the US keyboard on US
+" English versions of Windows, because those don't provide the AltGr keys.
+" The mapping was tested with Win2k and WinXP.
+
+" Maintainer: Eric Joanis <joanis@cs.toronto.edu>
+" Last Change: 2004 Jan 13
+
+" 2003 Dec 04
+" Initial Revision
+
+" 2004 Jan 13
+" Added the upper case accented characters, forgotten in the initial version.
+
+" All characters are given literally, conversion to another encoding (e.g.,
+" UTF-8) should work.
+scriptencoding latin1
+
+" Use this short name in the status line.
+let b:keymap_name = "canfr"
+
+loadkeymap
+<	'
+>	"
+/	é
+?	É
+'	è
+\"	È
+\\	à
+|	À
+[a	â
+[e	ê
+[i	î
+[o	ô
+[u	û
+[A	Â
+[E	Ê
+[I	Î
+[O	Ô
+[U	Û
+[[	^
+{a	ä
+{e	ë
+{i	ï
+{o	ö
+{u	ü
+{y	ÿ
+{A	Ä
+{E	Ë
+{I	Ï
+{O	Ö
+{U	Ü
+]	ç
+}	Ç
+`	/
+~	\\
+^	?
+ú	«
+ø	»
+¬	<
+®	>
+»	°
+Ûa	à
+Ûe	è
+Ûi	ì
+Ûo	ò
+Ûu	ù
+ÛA	À
+ÛE	È
+ÛI	Ì
+ÛO	Ò
+ÛU	Ù
+ÛÛ	`
+Ýa	ã
+Ýo	õ
+Ýn	ñ
+Ýs	ß
+ÝA	Ã
+ÝO	Õ
+ÝN	Ñ
+ÝS	ß
+ÝÝ	~
+à	|
+·	{
+¸	}
+¹	[
+°	]
+½	¬
diff --git a/runtime/spell/README.txt b/runtime/spell/README.txt
index 8ea5272..44dedb7 100644
--- a/runtime/spell/README.txt
+++ b/runtime/spell/README.txt
@@ -2,7 +2,7 @@
 them.  See ":help spell" for more information.
 
 
-Copyright
+COPYRIGHT
 
 The files used as input for the spell files come from the OpenOffice.org spell
 files.  Most of them go under the LGPL or a similar license.
@@ -10,3 +10,78 @@
 Copyright notices for specific languages are in README_??.txt.  Note that the
 files for different regions are merged, both to save space and to make it
 possible to highlight words for another region different from bad words.
+
+
+GENERATING .SPL FILES
+
+This involves downloading the files from the OpenOffice.org server, applying a
+patch and running Vim to generate the .spl file.  To do this all in one go use
+the Aap program (www.a-a-p.org).  It's simple to install, it only requires
+Python.
+
+You can also do it manually:
+1. Fetch the right spell file from:
+   http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
+
+2. Unzip the archive:
+	unzip LL_RR.zip
+
+3. Apply the patch:
+	patch < LL_RR.diff
+
+4. If the language has multiple regions do the above for each region.  E.g.,
+   for English there are five regions: US, CA, AU, NZ and GB.
+
+5. Run Vim and execute ":mkspell".  Make sure you do this with the correct
+   locale, that influences the upper/lower case letters and word characters.
+   On Unix it's something like:
+   	env LANG=en_US.UTF-8 vim
+	mkspell! en en_US en_AU en_CA en_GB en_NZ
+
+6. Repeat step 5 for other locales.  For English you could generate a spell
+   file for latin1, utf-8 and ASCII.  ASCII only makes sense for languages
+   that have very few words with non-ASCII letters.
+
+Now you understand why I prefer using the Aap recipe :-).
+
+
+MAINTAINING A LANGUAGE
+
+Every language should have a maintainer.  His tasks are to track the changes
+in the OpenOffice.org spell files and make updated patches.  Words that
+haven't been added/removed from the OpenOffice lists can also be handled by
+the patches.
+
+It is important to keep the version of the .dic and .aff files that you
+started with.  When OpenOffice brings out new versions of these files you can
+find out what changed and take over these changes in your patch.  When there
+are very many changes you can do it the other way around: re-apply the changes
+for Vim to the new versions of the .dic and .aff files.
+
+This procedure should work well:
+
+1. Obtain the zip archive with the .aff and .dic files.  Unpack it as
+   explained above and copy (don't rename!) the .aff and .dic files to
+   .orig.aff and .orig.dic.  Using the Aap recipe should work, it will make
+   the copies for you.
+
+2. Tweak the .aff and .dic files to generate the perfect .spl file.  Don't
+   change too much, the OpenOffice people are not stupid.  However, you may
+   want to remove obvious mistakes.  And remove single-letter words that
+   aren't really words, they mess up the suggestions (English has this
+   problem).
+
+3. Make the diff file.  "aap diff" will do this for you.  If a diff would be
+   too big you might consider writing a Vim script to do systematic changes.
+   Do check that someone else can reproduce building the spell file.  Send the
+   result to Bram for inclusion in the distribution.  Bram will generate the
+   .spl file and upload it to the ftp server (if he can't generate it you will
+   have to send him the .spl file too).
+
+4. When OpenOffice makes a new zip file available you need to update the
+   patch.  "aap check" should do most of the work for you: if there are
+   changes the .new.dic and .new.aff files will appear.  You can now figure
+   out the differences with .orig.dic and .orig.aff, adjust the .dic and .aff
+   files and finally move the .new.dic to .orig.dic and .new.aff to .orig.aff.
+
+5. Repeat step 4. regularly.
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index 1b51921..045e07b 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index b759d2f..f92ba01 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/runtime/spell/en.utf-8.spl b/runtime/spell/en.utf-8.spl
index 420d3af..83aea8d 100644
--- a/runtime/spell/en.utf-8.spl
+++ b/runtime/spell/en.utf-8.spl
Binary files differ
diff --git a/runtime/spell/he/main.aap b/runtime/spell/he/main.aap
index 413c5e2..9adb109 100644
--- a/runtime/spell/he/main.aap
+++ b/runtime/spell/he/main.aap
@@ -9,12 +9,16 @@
 SPELLDIR = ..
 FILES    = he_IL.aff he_IL.dic
 
-all: $(SPELLDIR)/he.utf-8.spl ../README_he.txt
+all: $(SPELLDIR)/he.utf-8.spl $(SPELLDIR)/he.iso-8859-8.spl ../README_he.txt
 
 $(SPELLDIR)/he.utf-8.spl : $(VIM) $(FILES)
         :sys env LANG=he_IL.UTF-8
 		$(VIM) -e -c "mkspell! $(SPELLDIR)/he he_IL" -c q
 
+$(SPELLDIR)/he.iso-8859-8.spl : $(VIM) $(FILES)
+        :sys $(VIM) -e -c "set enc=iso-8859-8"
+                        -c "mkspell! $(SPELLDIR)/he he_IL" -c q
+
 ../README_he.txt : README_he_IL.txt
         :copy $source $target
 
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
index 772babe..61bc6c8 100644
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -2,7 +2,7 @@
 " Language:	HTML
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/html.vim
-" Last Change:  2004 May 16
+" Last Change:  2005 Jul 05
 
 " Please check :help html.vim for some comments and a description of the options
 
@@ -35,8 +35,8 @@
 syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
 syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
 syn match   htmlValue    contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc
-syn region  htmlEndTag		   start=+</+	   end=+>+ contains=htmlTagN,htmlTagError
-syn region  htmlTag		   start=+<[^/]+   end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
+syn region  htmlEndTag		   start=+</+	   end=+>+ contains=htmlTagN,htmlTagError,@NoSpell
+syn region  htmlTag		   start=+<[^/]+   end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,@NoSpell
 syn match   htmlTagN     contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
 syn match   htmlTagN     contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
 syn match   htmlTagError contained "[^>]<"ms=s+1
@@ -116,7 +116,7 @@
 
 if !exists("html_no_rendering")
   " rendering
-  syn cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
+  syn cluster htmlTop contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,@htmlPreproc
 
   syn region htmlBold start="<b\>" end="</b>"me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
   syn region htmlBold start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic
@@ -146,7 +146,7 @@
   syn region htmlItalicUnderlineBold contained start="<b\>" end="</b>"me=e-4 contains=@htmlTop
   syn region htmlItalicUnderlineBold contained start="<strong\>" end="</strong>"me=e-9 contains=@htmlTop
 
-  syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
+  syn region htmlLink start="<a\>\_[^>]*\<href\>" end="</a>"me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
   syn region htmlH1 start="<h1\>" end="</h1>"me=e-5 contains=@htmlTop
   syn region htmlH2 start="<h2\>" end="</h2>"me=e-5 contains=@htmlTop
   syn region htmlH3 start="<h3\>" end="</h3>"me=e-5 contains=@htmlTop
diff --git a/runtime/syntax/mupad.vim b/runtime/syntax/mupad.vim
index 86e0320..109f880 100644
--- a/runtime/syntax/mupad.vim
+++ b/runtime/syntax/mupad.vim
@@ -1,295 +1,295 @@
-" Vim syntax file

-" Language:    MuPAD source

-" Maintainer:  Dave Silvia <dsilvia@mchsi.com>

-" Filenames:   *.mu

-" Date:        6/30/2004

-

-

-" For version 5.x: Clear all syntax items

-" For version 6.x: Quit when a syntax file was already loaded

-if version < 600

-  syntax clear

-elseif exists("b:current_syntax")

-  finish

-endif

-

-" Set default highlighting to Win2k

-if !exists("mupad_cmdextversion")

-  let mupad_cmdextversion = 2

-endif

-

-syn case match

-

-syn match mupadComment	"//\p*$"

-syn region mupadComment	start="/\*"	end="\*/"

-

-syn region mupadString	start="\""	skip=/\\"/	end="\""

-

-syn match mupadOperator		"(\|)\|:=\|::\|:\|;"

-" boolean

-syn keyword mupadOperator	and	or	not	xor

-syn match mupadOperator		"==>\|\<=\>"

-

-" Informational

-syn keyword mupadSpecial		FILEPATH	NOTEBOOKFILE	NOTEBOOKPATH

-" Set-able, e.g., DIGITS:=10

-syn keyword mupadSpecial		DIGITS		HISTORY		LEVEL

-syn keyword mupadSpecial		MAXLEVEL	MAXDEPTH	ORDER

-syn keyword mupadSpecial		TEXTWIDTH

-" Set-able, e.g., PRETTYPRINT:=TRUE

-syn keyword mupadSpecial		PRETTYPRINT

-" Set-able, e.g., LIBPATH:="C:\\MuPAD Pro\\mylibdir" or LIBPATH:="/usr/MuPAD Pro/mylibdir"

-syn keyword mupadSpecial		LIBPATH		PACKAGEPATH

-syn keyword mupadSpecial		READPATH	TESTPATH	WRITEPATH

-" Symbols and Constants

-syn keyword mupadDefine		FAIL		NIL

-syn keyword mupadDefine		TRUE		FALSE		UNKNOWN

-syn keyword mupadDefine		complexInfinity		infinity

-syn keyword mupadDefine		C_	CATALAN	E	EULER	I	PI	Q_	R_

-syn keyword mupadDefine		RD_INF	RD_NINF	undefined	unit	universe	Z_

-" print() directives

-syn keyword mupadDefine		Unquoted	NoNL	KeepOrder	Typeset

-" domain specifics

-syn keyword mupadStatement	domain	begin	end_domain	end

-syn keyword mupadIdentifier	inherits	category	axiom	info	doc interface

-" basic programming statements

-syn keyword mupadStatement	proc	begin	end_proc	

-syn keyword mupadUnderlined	name	local	option	save

-syn keyword mupadConditional	if	then	elif	else	end_if

-syn keyword mupadConditional	case	of	do	break	end_case

-syn keyword mupadRepeat		for	do	next	break	end_for

-syn keyword mupadRepeat		while	do	next break end_while

-syn keyword mupadRepeat		repeat	next break until	end_repeat

-" domain packages/libraries

-syn keyword mupadType			detools	import	linalg	numeric	numlib	plot	polylib

-syn match mupadType				'\<DOM_\w*\>'

-

-"syn keyword mupadFunction	contains

-" Functions dealing with prime numbers

-syn keyword mupadFunction	phi	invphi	mersenne	nextprime	numprimedivisors

-syn keyword mupadFunction	pollard	prevprime	primedivisors

-" Functions operating on Lists, Matrices, Sets, ...

-syn keyword mupadFunction	array	_index

-" Evaluation

-syn keyword mupadFunction	float contains

-" stdlib

-syn keyword mupadFunction	_exprseq	_invert	_lazy_and	_lazy_or	_negate

-syn keyword mupadFunction	_stmtseq	_invert	intersect	minus		union

-syn keyword mupadFunction	Ci	D	Ei	O	Re	Im	RootOf	Si

-syn keyword mupadFunction	Simplify

-syn keyword mupadFunction	abs	airyAi	airyBi	alias	unalias	anames	append

-syn keyword mupadFunction	arcsin	arccos	arctan	arccsc	arcsec	arccot

-syn keyword mupadFunction	arcsinh	arccosh	arctanh	arccsch	arcsech	arccoth

-syn keyword mupadFunction	arg	args	array	assert	assign	assignElements

-syn keyword mupadFunction	assume	assuming	asympt	bernoulli

-syn keyword mupadFunction	besselI	besselJ	besselK	besselY	beta	binomial	bool

-syn keyword mupadFunction	bytes	card

-syn keyword mupadFunction	ceil	floor	round	trunc

-syn keyword mupadFunction	coeff	coerce	collect	combine	copyClosure

-syn keyword mupadFunction	conjugate	content	context	contfrac

-syn keyword mupadFunction	debug	degree	degreevec	delete	_delete	denom

-syn keyword mupadFunction	densematrix	diff	dilog	dirac	discont	div	_div

-syn keyword mupadFunction	divide	domtype	doprint	erf	erfc	error	eval	evalassign

-syn keyword mupadFunction	evalp	exp	expand	export	unexport	expose	expr

-syn keyword mupadFunction	expr2text	external	extnops	extop	extsubsop

-syn keyword mupadFunction	fact	fact2	factor	fclose	finput	fname	fopen	fprint

-syn keyword mupadFunction	fread	ftextinput	readbitmap	readdata	pathname

-syn keyword mupadFunction	protocol	read	readbytes	write	writebytes

-syn keyword mupadFunction	float	frac	frame	_frame	frandom	freeze	unfreeze

-syn keyword mupadFunction	funcenv	gamma	gcd	gcdex	genident	genpoly

-syn keyword mupadFunction	getpid	getprop	ground	has	hastype	heaviside	help

-syn keyword mupadFunction	history	hold	hull	hypergeom	icontent	id

-syn keyword mupadFunction	ifactor	igamma	igcd	igcdex	ilcm	in	_in

-syn keyword mupadFunction	indets	indexval	info	input	int	int2text

-syn keyword mupadFunction	interpolate	interval	irreducible	is

-syn keyword mupadFunction	isprime	isqrt	iszero	ithprime	kummerU	lambertW

-syn keyword mupadFunction	last	lasterror	lcm	lcoeff	ldegree	length

-syn keyword mupadFunction	level	lhs	rhs	limit	linsolve	lllint

-syn keyword mupadFunction	lmonomial	ln	loadmod	loadproc	log	lterm

-syn keyword mupadFunction	match	map	mapcoeffs	maprat	matrix	max	min

-syn keyword mupadFunction	mod	modp	mods	monomials	multcoeffs	new

-syn keyword mupadFunction	newDomain	_next	nextprime	nops

-syn keyword mupadFunction	norm	normal	nterms	nthcoeff	nthmonomial	nthterm

-syn keyword mupadFunction	null	numer	ode	op	operator	package

-syn keyword mupadFunction	pade	partfrac	patchlevel	pdivide

-syn keyword mupadFunction	piecewise	plot	plotfunc2d	plotfunc3d

-syn keyword mupadFunction	poly	poly2list	polylog	powermod	print

-syn keyword mupadFunction	product	protect	psi	quit	_quit	radsimp	random	rationalize

-syn keyword mupadFunction	rec	rectform	register	reset	return	revert

-syn keyword mupadFunction	rewrite	select	series	setuserinfo	share	sign	signIm

-syn keyword mupadFunction	simplify	

-syn keyword mupadFunction	sin	cos	tan	csc	sec	cot

-syn keyword mupadFunction	sinh	cosh	tanh	csch	sech	coth

-syn keyword mupadFunction	slot	solve	

-syn keyword mupadFunction	pdesolve	matlinsolve	matlinsolveLU	toeplitzSolve

-syn keyword mupadFunction	vandermondeSolve	fsolve	odesolve	odesolve2

-syn keyword mupadFunction	polyroots	polysysroots	odesolveGeometric

-syn keyword mupadFunction	realroot	realroots	mroots	lincongruence

-syn keyword mupadFunction	msqrts

-syn keyword mupadFunction	sort	split	sqrt	strmatch	strprint

-syn keyword mupadFunction	subs	subset	subsex	subsop	substring	sum

-syn keyword mupadFunction	surd	sysname	sysorder	system	table	taylor	tbl2text

-syn keyword mupadFunction	tcoeff	testargs	testeq	testtype	text2expr

-syn keyword mupadFunction	text2int	text2list	text2tbl	rtime	time

-syn keyword mupadFunction	traperror	type	unassume	unit	universe

-syn keyword mupadFunction	unloadmod	unprotect	userinfo	val	version

-syn keyword mupadFunction	warning	whittakerM	whittakerW	zeta	zip

-

-" graphics  plot::

-syn keyword mupadFunction	getDefault	setDefault	copy	modify	Arc2d	Arrow2d

-syn keyword mupadFunction	Arrow3d	Bars2d	Bars3d	Box	Boxplot	Circle2d	Circle3d

-syn keyword mupadFunction	Cone	Conformal	Curve2d	Curve3d	Cylinder	Cylindrical

-syn keyword mupadFunction	Density	Ellipse2d	Function2d	Function3d	Hatch

-syn keyword mupadFunction	Histogram2d	HOrbital	Implicit2d	Implicit3d

-syn keyword mupadFunction	Inequality	Iteration	Line2d	Line3d	Lsys	Matrixplot

-syn keyword mupadFunction	MuPADCube	Ode2d	Ode3d	Parallelogram2d	Parallelogram3d

-syn keyword mupadFunction	Piechart2d	Piechart3d	Point2d	Point3d	Polar

-syn keyword mupadFunction	Polygon2d	Polygon3d	Raster	Rectangle	Sphere

-syn keyword mupadFunction	Ellipsoid	Spherical	Sum	Surface	SurfaceSet

-syn keyword mupadFunction	SurfaceSTL	Tetrahedron	Hexahedron	Octahedron

-syn keyword mupadFunction	Dodecahedron	Icosahedron	Text2d	Text3d	Tube	Turtle

-syn keyword mupadFunction	VectorField2d	XRotate	ZRotate	Canvas	CoordinateSystem2d

-syn keyword mupadFunction	CoordinateSystem3d	Group2d	Group3d	Scene2d	Scene3d	ClippingBox

-syn keyword mupadFunction	Rotate2d	Rotate3d	Scale2d	Scale3d	Transform2d

-syn keyword mupadFunction	Transform3d	Translate2d	Translate3d	AmbientLight

-syn keyword mupadFunction	Camera	DistantLight	PointLight	SpotLight

-

-" graphics Attributes

-" graphics  Output Attributes

-syn keyword mupadIdentifier	OutputFile	OutputOptions

-" graphics  Defining Attributes

-syn keyword mupadIdentifier	Angle	AngleRange	AngleBegin	AngleEnd

-syn keyword mupadIdentifier	Area	Axis	AxisX	AxisY	AxisZ	Base	Top

-syn keyword mupadIdentifier	BaseX	TopX	BaseY	TopY	BaseZ	TopZ

-syn keyword mupadIdentifier	BaseRadius	TopRadius	Cells

-syn keyword mupadIdentifier	Center	CenterX	CenterY	CenterZ

-syn keyword mupadIdentifier	Closed	ColorData	CommandList	Contours	CoordinateType

-syn keyword mupadIdentifier	Data	DensityData	DensityFunction	From	To

-syn keyword mupadIdentifier	FromX	ToX	FromY	ToY	FromZ	ToZ

-syn keyword mupadIdentifier	Function	FunctionX	FunctionY	FunctionZ

-syn keyword mupadIdentifier	Function1	Function2	Baseline

-syn keyword mupadIdentifier	Generations	RotationAngle	IterationRules	StartRule StepLength

-syn keyword mupadIdentifier	TurtleRules	Ground	Heights	Moves	Inequalities

-syn keyword mupadIdentifier	InputFile	Iterations	StartingPoint

-syn keyword mupadIdentifier	LineColorFunction	FillColorFunction

-syn keyword mupadIdentifier	Matrix2d	Matrix3d

-syn keyword mupadIdentifier	MeshList	MeshListType	MeshListNormals

-syn keyword mupadIdentifier	MagneticQuantumNumber	MomentumQuantumNumber	PrincipalQuantumNumber

-syn keyword mupadIdentifier	Name	Normal	NormalX	NormalY	NormalZ

-syn keyword mupadIdentifier	ParameterName	ParameterBegin	ParameterEnd	ParameterRange

-syn keyword mupadIdentifier	Points2d	Points3d	Radius	RadiusFunction

-syn keyword mupadIdentifier	Position	PositionX	PositionY	PositionZ

-syn keyword mupadIdentifier	Scale	ScaleX	ScaleY	ScaleZ Shift	ShiftX	ShiftY	ShiftZ

-syn keyword mupadIdentifier	SemiAxes	SemiAxisX	SemiAxisY	SemiAxisZ

-syn keyword mupadIdentifier	Tangent1	Tangent1X	Tangent1Y	Tangent1Z

-syn keyword mupadIdentifier	Tangent2	Tangent2X	Tangent2Y	Tangent2Z

-syn keyword mupadIdentifier	Text	TextOrientation	TextRotation

-syn keyword mupadIdentifier	UName	URange	UMin	UMax	VName	VRange	VMin	VMax

-syn keyword mupadIdentifier	XName	XRange	XMin	XMax	YName	YRange	YMin	YMax

-syn keyword mupadIdentifier	ZName	ZRange	ZMin	ZMax	ViewingBox

-syn keyword mupadIdentifier	ViewingBoxXMin	ViewingBoxXMax	ViewingBoxXRange

-syn keyword mupadIdentifier	ViewingBoxYMin	ViewingBoxYMax	ViewingBoxYRange

-syn keyword mupadIdentifier	ViewingBoxZMin	ViewingBoxZMax	ViewingBoxZRange

-syn keyword mupadIdentifier	Visible

-" graphics  Axis Attributes

-syn keyword mupadIdentifier	Axes	AxesInFront	AxesLineColor	AxesLineWidth

-syn keyword mupadIdentifier	AxesOrigin	AxesOriginX	AxesOriginY	AxesOriginZ

-syn keyword mupadIdentifier	AxesTips	AxesTitleAlignment

-syn keyword mupadIdentifier	AxesTitleAlignmentX	AxesTitleAlignmentY	AxesTitleAlignmentZ

-syn keyword mupadIdentifier	AxesTitles	XAxisTitle	YAxisTitle	ZAxisTitle

-syn keyword mupadIdentifier	AxesVisible	XAxisVisible	YAxisVisible	ZAxisVisible

-syn keyword mupadIdentifier	YAxisTitleOrientation

-" graphics  Tick Marks Attributes

-syn keyword mupadIdentifier	TicksAnchor	XTicksAnchor	YTicksAnchor	ZTicksAnchor

-syn keyword mupadIdentifier	TicksAt	XTicksAt	YTicksAt	ZTicksAt

-syn keyword mupadIdentifier	TicksBetween	XTicksBetween	YTicksBetween	ZTicksBetween

-syn keyword mupadIdentifier	TicksDistance	XTicksDistance	YTicksDistance	ZTicksDistance

-syn keyword mupadIdentifier	TicksNumber	XTicksNumber	YTicksNumber	ZTicksNumber

-syn keyword mupadIdentifier	TicksVisible	XTicksVisible	YTicksVisible	ZTicksVisible

-syn keyword mupadIdentifier	TicksLength	TicksLabelStyle

-syn keyword mupadIdentifier	XTicksLabelStyle	YTicksLabelStyle	ZTicksLabelStyle

-syn keyword mupadIdentifier	TicksLabelsVisible

-syn keyword mupadIdentifier	XTicksLabelsVisible	YTicksLabelsVisible	ZTicksLabelsVisible

-" graphics  Grid Lines Attributes

-syn keyword mupadIdentifier	GridInFront	GridLineColor	SubgridLineColor

-syn keyword mupadIdentifier	GridLineStyle	SubgridLineStyle GridLineWidth	SubgridLineWidth

-syn keyword mupadIdentifier	GridVisible	XGridVisible	YGridVisible	ZGridVisible

-syn keyword mupadIdentifier	SubgridVisible	XSubgridVisible	YSubgridVisible	ZSubgridVisible

-" graphics  Animation Attributes

-syn keyword mupadIdentifier	Frames	TimeRange	TimeBegin	TimeEnd

-syn keyword mupadIdentifier	VisibleAfter	VisibleBefore	VisibleFromTo

-syn keyword mupadIdentifier	VisibleAfterEnd	VisibleBeforeBegin

-" graphics  Annotation Attributes

-syn keyword mupadIdentifier	Footer	Header	FooterAlignment	HeaderAlignment

-syn keyword mupadIdentifier	HorizontalAlignment	TitleAlignment	VerticalAlignment

-syn keyword mupadIdentifier	Legend	LegendEntry	LegendText

-syn keyword mupadIdentifier	LegendAlignment	LegendPlacement	LegendVisible

-syn keyword mupadIdentifier	Title	Titles

-syn keyword mupadIdentifier	TitlePosition	TitlePositionX	TitlePositionY	TitlePositionZ

-" graphics  Layout Attributes

-syn keyword mupadIdentifier	Bottom	Left	Height	Width	Layout	Rows	Columns

-syn keyword mupadIdentifier	Margin	BottomMargin	TopMargin	LeftMargin	RightMargin

-syn keyword mupadIdentifier	OutputUnits	Spacing

-" graphics  Calculation Attributes

-syn keyword mupadIdentifier	AdaptiveMesh	DiscontinuitySearch	Mesh	SubMesh

-syn keyword mupadIdentifier	UMesh	USubMesh	VMesh	VSubMesh

-syn keyword mupadIdentifier	XMesh	XSubMesh	YMesh	YSubMesh	Zmesh

-" graphics  Camera and Lights Attributes

-syn keyword mupadIdentifier	CameraCoordinates	CameraDirection

-syn keyword mupadIdentifier	CameraDirectionX	CameraDirectionY	CameraDirectionZ

-syn keyword mupadIdentifier	FocalPoint	FocalPointX	FocalPointY	FocalPointZ

-syn keyword mupadIdentifier	LightColor	Lighting	LightIntensity	OrthogonalProjection

-syn keyword mupadIdentifier	SpotAngle	ViewingAngle

-syn keyword mupadIdentifier	Target	TargetX	TargetY	TargetZ

-" graphics  Presentation Style and Fonts Attributes

-syn keyword mupadIdentifier	ArrowLength

-syn keyword mupadIdentifier	AxesTitleFont	FooterFont	HeaderFont	LegendFont

-syn keyword mupadIdentifier	TextFont	TicksLabelFont	TitleFont

-syn keyword mupadIdentifier	BackgroundColor	BackgroundColor2	BackgroundStyle

-syn keyword mupadIdentifier	BackgroundTransparent	Billboarding	BorderColor	BorderWidth

-syn keyword mupadIdentifier	BoxCenters	BoxWidths	DrawMode Gap	XGap	YGap

-syn keyword mupadIdentifier	Notched	NotchWidth	Scaling	YXRatio	ZXRatio

-syn keyword mupadIdentifier	VerticalAsymptotesVisible	VerticalAsymptotesStyle

-syn keyword mupadIdentifier	VerticalAsymptotesColor	VerticalAsymptotesWidth

-" graphics  Line Style Attributes

-syn keyword mupadIdentifier	LineColor	LineColor2	LineColorType	LineStyle

-syn keyword mupadIdentifier	LinesVisible	ULinesVisible	VLinesVisible	XLinesVisible

-syn keyword mupadIdentifier	YLinesVisible	LineWidth	MeshVisible

-" graphics  Point Style Attributes

-syn keyword mupadIdentifier	PointColor	PointSize	PointStyle	PointsVisible

-" graphics  Surface Style Attributes

-syn keyword mupadIdentifier	BarStyle	Shadows	Color	Colors	FillColor	FillColor2

-syn keyword mupadIdentifier	FillColorTrue	FillColorFalse	FillColorUnknown	FillColorType

-syn keyword mupadIdentifier	Filled	FillPattern	FillPatterns	FillStyle

-syn keyword mupadIdentifier	InterpolationStyle	Shading	UseNormals

-" graphics  Arrow Style Attributes

-syn keyword mupadIdentifier	TipAngle	TipLength	TipStyle	TubeDiameter

-syn keyword mupadIdentifier	Tubular

-" graphics  meta-documentation Attributes

-syn keyword mupadIdentifier	objectGroupsListed	

-

-if version >= 508 || !exists("did_mupad_syntax_inits")

-  if version < 508

-    let did_mupad_syntax_inits = 1

-    command -nargs=+ HiLink hi link <args>

-  else

-    command -nargs=+ HiLink hi def link <args>

-  endif

-

-  HiLink mupadComment		Comment

-  HiLink mupadString		String

-  HiLink mupadOperator		Operator

-  HiLink mupadSpecial		Special

-  HiLink mupadStatement		Statement

-  HiLink mupadUnderlined	Underlined

-  HiLink mupadConditional	Conditional

-  HiLink mupadRepeat		Repeat

-  HiLink mupadFunction		Function

-  HiLink mupadType		Type

-  HiLink mupadDefine		Define

-  HiLink mupadIdentifier	Identifier

-

-  delcommand HiLink

-endif

-

-" TODO  More comprehensive listing.

+" Vim syntax file
+" Language:    MuPAD source
+" Maintainer:  Dave Silvia <dsilvia@mchsi.com>
+" Filenames:   *.mu
+" Date:        6/30/2004
+
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Set default highlighting to Win2k
+if !exists("mupad_cmdextversion")
+  let mupad_cmdextversion = 2
+endif
+
+syn case match
+
+syn match mupadComment	"//\p*$"
+syn region mupadComment	start="/\*"	end="\*/"
+
+syn region mupadString	start="\""	skip=/\\"/	end="\""
+
+syn match mupadOperator		"(\|)\|:=\|::\|:\|;"
+" boolean
+syn keyword mupadOperator	and	or	not	xor
+syn match mupadOperator		"==>\|\<=\>"
+
+" Informational
+syn keyword mupadSpecial		FILEPATH	NOTEBOOKFILE	NOTEBOOKPATH
+" Set-able, e.g., DIGITS:=10
+syn keyword mupadSpecial		DIGITS		HISTORY		LEVEL
+syn keyword mupadSpecial		MAXLEVEL	MAXDEPTH	ORDER
+syn keyword mupadSpecial		TEXTWIDTH
+" Set-able, e.g., PRETTYPRINT:=TRUE
+syn keyword mupadSpecial		PRETTYPRINT
+" Set-able, e.g., LIBPATH:="C:\\MuPAD Pro\\mylibdir" or LIBPATH:="/usr/MuPAD Pro/mylibdir"
+syn keyword mupadSpecial		LIBPATH		PACKAGEPATH
+syn keyword mupadSpecial		READPATH	TESTPATH	WRITEPATH
+" Symbols and Constants
+syn keyword mupadDefine		FAIL		NIL
+syn keyword mupadDefine		TRUE		FALSE		UNKNOWN
+syn keyword mupadDefine		complexInfinity		infinity
+syn keyword mupadDefine		C_	CATALAN	E	EULER	I	PI	Q_	R_
+syn keyword mupadDefine		RD_INF	RD_NINF	undefined	unit	universe	Z_
+" print() directives
+syn keyword mupadDefine		Unquoted	NoNL	KeepOrder	Typeset
+" domain specifics
+syn keyword mupadStatement	domain	begin	end_domain	end
+syn keyword mupadIdentifier	inherits	category	axiom	info	doc interface
+" basic programming statements
+syn keyword mupadStatement	proc	begin	end_proc
+syn keyword mupadUnderlined	name	local	option	save
+syn keyword mupadConditional	if	then	elif	else	end_if
+syn keyword mupadConditional	case	of	do	break	end_case
+syn keyword mupadRepeat		for	do	next	break	end_for
+syn keyword mupadRepeat		while	do	next break end_while
+syn keyword mupadRepeat		repeat	next break until	end_repeat
+" domain packages/libraries
+syn keyword mupadType			detools	import	linalg	numeric	numlib	plot	polylib
+syn match mupadType				'\<DOM_\w*\>'
+
+"syn keyword mupadFunction	contains
+" Functions dealing with prime numbers
+syn keyword mupadFunction	phi	invphi	mersenne	nextprime	numprimedivisors
+syn keyword mupadFunction	pollard	prevprime	primedivisors
+" Functions operating on Lists, Matrices, Sets, ...
+syn keyword mupadFunction	array	_index
+" Evaluation
+syn keyword mupadFunction	float contains
+" stdlib
+syn keyword mupadFunction	_exprseq	_invert	_lazy_and	_lazy_or	_negate
+syn keyword mupadFunction	_stmtseq	_invert	intersect	minus		union
+syn keyword mupadFunction	Ci	D	Ei	O	Re	Im	RootOf	Si
+syn keyword mupadFunction	Simplify
+syn keyword mupadFunction	abs	airyAi	airyBi	alias	unalias	anames	append
+syn keyword mupadFunction	arcsin	arccos	arctan	arccsc	arcsec	arccot
+syn keyword mupadFunction	arcsinh	arccosh	arctanh	arccsch	arcsech	arccoth
+syn keyword mupadFunction	arg	args	array	assert	assign	assignElements
+syn keyword mupadFunction	assume	assuming	asympt	bernoulli
+syn keyword mupadFunction	besselI	besselJ	besselK	besselY	beta	binomial	bool
+syn keyword mupadFunction	bytes	card
+syn keyword mupadFunction	ceil	floor	round	trunc
+syn keyword mupadFunction	coeff	coerce	collect	combine	copyClosure
+syn keyword mupadFunction	conjugate	content	context	contfrac
+syn keyword mupadFunction	debug	degree	degreevec	delete	_delete	denom
+syn keyword mupadFunction	densematrix	diff	dilog	dirac	discont	div	_div
+syn keyword mupadFunction	divide	domtype	doprint	erf	erfc	error	eval	evalassign
+syn keyword mupadFunction	evalp	exp	expand	export	unexport	expose	expr
+syn keyword mupadFunction	expr2text	external	extnops	extop	extsubsop
+syn keyword mupadFunction	fact	fact2	factor	fclose	finput	fname	fopen	fprint
+syn keyword mupadFunction	fread	ftextinput	readbitmap	readdata	pathname
+syn keyword mupadFunction	protocol	read	readbytes	write	writebytes
+syn keyword mupadFunction	float	frac	frame	_frame	frandom	freeze	unfreeze
+syn keyword mupadFunction	funcenv	gamma	gcd	gcdex	genident	genpoly
+syn keyword mupadFunction	getpid	getprop	ground	has	hastype	heaviside	help
+syn keyword mupadFunction	history	hold	hull	hypergeom	icontent	id
+syn keyword mupadFunction	ifactor	igamma	igcd	igcdex	ilcm	in	_in
+syn keyword mupadFunction	indets	indexval	info	input	int	int2text
+syn keyword mupadFunction	interpolate	interval	irreducible	is
+syn keyword mupadFunction	isprime	isqrt	iszero	ithprime	kummerU	lambertW
+syn keyword mupadFunction	last	lasterror	lcm	lcoeff	ldegree	length
+syn keyword mupadFunction	level	lhs	rhs	limit	linsolve	lllint
+syn keyword mupadFunction	lmonomial	ln	loadmod	loadproc	log	lterm
+syn keyword mupadFunction	match	map	mapcoeffs	maprat	matrix	max	min
+syn keyword mupadFunction	mod	modp	mods	monomials	multcoeffs	new
+syn keyword mupadFunction	newDomain	_next	nextprime	nops
+syn keyword mupadFunction	norm	normal	nterms	nthcoeff	nthmonomial	nthterm
+syn keyword mupadFunction	null	numer	ode	op	operator	package
+syn keyword mupadFunction	pade	partfrac	patchlevel	pdivide
+syn keyword mupadFunction	piecewise	plot	plotfunc2d	plotfunc3d
+syn keyword mupadFunction	poly	poly2list	polylog	powermod	print
+syn keyword mupadFunction	product	protect	psi	quit	_quit	radsimp	random	rationalize
+syn keyword mupadFunction	rec	rectform	register	reset	return	revert
+syn keyword mupadFunction	rewrite	select	series	setuserinfo	share	sign	signIm
+syn keyword mupadFunction	simplify
+syn keyword mupadFunction	sin	cos	tan	csc	sec	cot
+syn keyword mupadFunction	sinh	cosh	tanh	csch	sech	coth
+syn keyword mupadFunction	slot	solve
+syn keyword mupadFunction	pdesolve	matlinsolve	matlinsolveLU	toeplitzSolve
+syn keyword mupadFunction	vandermondeSolve	fsolve	odesolve	odesolve2
+syn keyword mupadFunction	polyroots	polysysroots	odesolveGeometric
+syn keyword mupadFunction	realroot	realroots	mroots	lincongruence
+syn keyword mupadFunction	msqrts
+syn keyword mupadFunction	sort	split	sqrt	strmatch	strprint
+syn keyword mupadFunction	subs	subset	subsex	subsop	substring	sum
+syn keyword mupadFunction	surd	sysname	sysorder	system	table	taylor	tbl2text
+syn keyword mupadFunction	tcoeff	testargs	testeq	testtype	text2expr
+syn keyword mupadFunction	text2int	text2list	text2tbl	rtime	time
+syn keyword mupadFunction	traperror	type	unassume	unit	universe
+syn keyword mupadFunction	unloadmod	unprotect	userinfo	val	version
+syn keyword mupadFunction	warning	whittakerM	whittakerW	zeta	zip
+
+" graphics  plot::
+syn keyword mupadFunction	getDefault	setDefault	copy	modify	Arc2d	Arrow2d
+syn keyword mupadFunction	Arrow3d	Bars2d	Bars3d	Box	Boxplot	Circle2d	Circle3d
+syn keyword mupadFunction	Cone	Conformal	Curve2d	Curve3d	Cylinder	Cylindrical
+syn keyword mupadFunction	Density	Ellipse2d	Function2d	Function3d	Hatch
+syn keyword mupadFunction	Histogram2d	HOrbital	Implicit2d	Implicit3d
+syn keyword mupadFunction	Inequality	Iteration	Line2d	Line3d	Lsys	Matrixplot
+syn keyword mupadFunction	MuPADCube	Ode2d	Ode3d	Parallelogram2d	Parallelogram3d
+syn keyword mupadFunction	Piechart2d	Piechart3d	Point2d	Point3d	Polar
+syn keyword mupadFunction	Polygon2d	Polygon3d	Raster	Rectangle	Sphere
+syn keyword mupadFunction	Ellipsoid	Spherical	Sum	Surface	SurfaceSet
+syn keyword mupadFunction	SurfaceSTL	Tetrahedron	Hexahedron	Octahedron
+syn keyword mupadFunction	Dodecahedron	Icosahedron	Text2d	Text3d	Tube	Turtle
+syn keyword mupadFunction	VectorField2d	XRotate	ZRotate	Canvas	CoordinateSystem2d
+syn keyword mupadFunction	CoordinateSystem3d	Group2d	Group3d	Scene2d	Scene3d	ClippingBox
+syn keyword mupadFunction	Rotate2d	Rotate3d	Scale2d	Scale3d	Transform2d
+syn keyword mupadFunction	Transform3d	Translate2d	Translate3d	AmbientLight
+syn keyword mupadFunction	Camera	DistantLight	PointLight	SpotLight
+
+" graphics Attributes
+" graphics  Output Attributes
+syn keyword mupadIdentifier	OutputFile	OutputOptions
+" graphics  Defining Attributes
+syn keyword mupadIdentifier	Angle	AngleRange	AngleBegin	AngleEnd
+syn keyword mupadIdentifier	Area	Axis	AxisX	AxisY	AxisZ	Base	Top
+syn keyword mupadIdentifier	BaseX	TopX	BaseY	TopY	BaseZ	TopZ
+syn keyword mupadIdentifier	BaseRadius	TopRadius	Cells
+syn keyword mupadIdentifier	Center	CenterX	CenterY	CenterZ
+syn keyword mupadIdentifier	Closed	ColorData	CommandList	Contours	CoordinateType
+syn keyword mupadIdentifier	Data	DensityData	DensityFunction	From	To
+syn keyword mupadIdentifier	FromX	ToX	FromY	ToY	FromZ	ToZ
+syn keyword mupadIdentifier	Function	FunctionX	FunctionY	FunctionZ
+syn keyword mupadIdentifier	Function1	Function2	Baseline
+syn keyword mupadIdentifier	Generations	RotationAngle	IterationRules	StartRule StepLength
+syn keyword mupadIdentifier	TurtleRules	Ground	Heights	Moves	Inequalities
+syn keyword mupadIdentifier	InputFile	Iterations	StartingPoint
+syn keyword mupadIdentifier	LineColorFunction	FillColorFunction
+syn keyword mupadIdentifier	Matrix2d	Matrix3d
+syn keyword mupadIdentifier	MeshList	MeshListType	MeshListNormals
+syn keyword mupadIdentifier	MagneticQuantumNumber	MomentumQuantumNumber	PrincipalQuantumNumber
+syn keyword mupadIdentifier	Name	Normal	NormalX	NormalY	NormalZ
+syn keyword mupadIdentifier	ParameterName	ParameterBegin	ParameterEnd	ParameterRange
+syn keyword mupadIdentifier	Points2d	Points3d	Radius	RadiusFunction
+syn keyword mupadIdentifier	Position	PositionX	PositionY	PositionZ
+syn keyword mupadIdentifier	Scale	ScaleX	ScaleY	ScaleZ Shift	ShiftX	ShiftY	ShiftZ
+syn keyword mupadIdentifier	SemiAxes	SemiAxisX	SemiAxisY	SemiAxisZ
+syn keyword mupadIdentifier	Tangent1	Tangent1X	Tangent1Y	Tangent1Z
+syn keyword mupadIdentifier	Tangent2	Tangent2X	Tangent2Y	Tangent2Z
+syn keyword mupadIdentifier	Text	TextOrientation	TextRotation
+syn keyword mupadIdentifier	UName	URange	UMin	UMax	VName	VRange	VMin	VMax
+syn keyword mupadIdentifier	XName	XRange	XMin	XMax	YName	YRange	YMin	YMax
+syn keyword mupadIdentifier	ZName	ZRange	ZMin	ZMax	ViewingBox
+syn keyword mupadIdentifier	ViewingBoxXMin	ViewingBoxXMax	ViewingBoxXRange
+syn keyword mupadIdentifier	ViewingBoxYMin	ViewingBoxYMax	ViewingBoxYRange
+syn keyword mupadIdentifier	ViewingBoxZMin	ViewingBoxZMax	ViewingBoxZRange
+syn keyword mupadIdentifier	Visible
+" graphics  Axis Attributes
+syn keyword mupadIdentifier	Axes	AxesInFront	AxesLineColor	AxesLineWidth
+syn keyword mupadIdentifier	AxesOrigin	AxesOriginX	AxesOriginY	AxesOriginZ
+syn keyword mupadIdentifier	AxesTips	AxesTitleAlignment
+syn keyword mupadIdentifier	AxesTitleAlignmentX	AxesTitleAlignmentY	AxesTitleAlignmentZ
+syn keyword mupadIdentifier	AxesTitles	XAxisTitle	YAxisTitle	ZAxisTitle
+syn keyword mupadIdentifier	AxesVisible	XAxisVisible	YAxisVisible	ZAxisVisible
+syn keyword mupadIdentifier	YAxisTitleOrientation
+" graphics  Tick Marks Attributes
+syn keyword mupadIdentifier	TicksAnchor	XTicksAnchor	YTicksAnchor	ZTicksAnchor
+syn keyword mupadIdentifier	TicksAt	XTicksAt	YTicksAt	ZTicksAt
+syn keyword mupadIdentifier	TicksBetween	XTicksBetween	YTicksBetween	ZTicksBetween
+syn keyword mupadIdentifier	TicksDistance	XTicksDistance	YTicksDistance	ZTicksDistance
+syn keyword mupadIdentifier	TicksNumber	XTicksNumber	YTicksNumber	ZTicksNumber
+syn keyword mupadIdentifier	TicksVisible	XTicksVisible	YTicksVisible	ZTicksVisible
+syn keyword mupadIdentifier	TicksLength	TicksLabelStyle
+syn keyword mupadIdentifier	XTicksLabelStyle	YTicksLabelStyle	ZTicksLabelStyle
+syn keyword mupadIdentifier	TicksLabelsVisible
+syn keyword mupadIdentifier	XTicksLabelsVisible	YTicksLabelsVisible	ZTicksLabelsVisible
+" graphics  Grid Lines Attributes
+syn keyword mupadIdentifier	GridInFront	GridLineColor	SubgridLineColor
+syn keyword mupadIdentifier	GridLineStyle	SubgridLineStyle GridLineWidth	SubgridLineWidth
+syn keyword mupadIdentifier	GridVisible	XGridVisible	YGridVisible	ZGridVisible
+syn keyword mupadIdentifier	SubgridVisible	XSubgridVisible	YSubgridVisible	ZSubgridVisible
+" graphics  Animation Attributes
+syn keyword mupadIdentifier	Frames	TimeRange	TimeBegin	TimeEnd
+syn keyword mupadIdentifier	VisibleAfter	VisibleBefore	VisibleFromTo
+syn keyword mupadIdentifier	VisibleAfterEnd	VisibleBeforeBegin
+" graphics  Annotation Attributes
+syn keyword mupadIdentifier	Footer	Header	FooterAlignment	HeaderAlignment
+syn keyword mupadIdentifier	HorizontalAlignment	TitleAlignment	VerticalAlignment
+syn keyword mupadIdentifier	Legend	LegendEntry	LegendText
+syn keyword mupadIdentifier	LegendAlignment	LegendPlacement	LegendVisible
+syn keyword mupadIdentifier	Title	Titles
+syn keyword mupadIdentifier	TitlePosition	TitlePositionX	TitlePositionY	TitlePositionZ
+" graphics  Layout Attributes
+syn keyword mupadIdentifier	Bottom	Left	Height	Width	Layout	Rows	Columns
+syn keyword mupadIdentifier	Margin	BottomMargin	TopMargin	LeftMargin	RightMargin
+syn keyword mupadIdentifier	OutputUnits	Spacing
+" graphics  Calculation Attributes
+syn keyword mupadIdentifier	AdaptiveMesh	DiscontinuitySearch	Mesh	SubMesh
+syn keyword mupadIdentifier	UMesh	USubMesh	VMesh	VSubMesh
+syn keyword mupadIdentifier	XMesh	XSubMesh	YMesh	YSubMesh	Zmesh
+" graphics  Camera and Lights Attributes
+syn keyword mupadIdentifier	CameraCoordinates	CameraDirection
+syn keyword mupadIdentifier	CameraDirectionX	CameraDirectionY	CameraDirectionZ
+syn keyword mupadIdentifier	FocalPoint	FocalPointX	FocalPointY	FocalPointZ
+syn keyword mupadIdentifier	LightColor	Lighting	LightIntensity	OrthogonalProjection
+syn keyword mupadIdentifier	SpotAngle	ViewingAngle
+syn keyword mupadIdentifier	Target	TargetX	TargetY	TargetZ
+" graphics  Presentation Style and Fonts Attributes
+syn keyword mupadIdentifier	ArrowLength
+syn keyword mupadIdentifier	AxesTitleFont	FooterFont	HeaderFont	LegendFont
+syn keyword mupadIdentifier	TextFont	TicksLabelFont	TitleFont
+syn keyword mupadIdentifier	BackgroundColor	BackgroundColor2	BackgroundStyle
+syn keyword mupadIdentifier	BackgroundTransparent	Billboarding	BorderColor	BorderWidth
+syn keyword mupadIdentifier	BoxCenters	BoxWidths	DrawMode Gap	XGap	YGap
+syn keyword mupadIdentifier	Notched	NotchWidth	Scaling	YXRatio	ZXRatio
+syn keyword mupadIdentifier	VerticalAsymptotesVisible	VerticalAsymptotesStyle
+syn keyword mupadIdentifier	VerticalAsymptotesColor	VerticalAsymptotesWidth
+" graphics  Line Style Attributes
+syn keyword mupadIdentifier	LineColor	LineColor2	LineColorType	LineStyle
+syn keyword mupadIdentifier	LinesVisible	ULinesVisible	VLinesVisible	XLinesVisible
+syn keyword mupadIdentifier	YLinesVisible	LineWidth	MeshVisible
+" graphics  Point Style Attributes
+syn keyword mupadIdentifier	PointColor	PointSize	PointStyle	PointsVisible
+" graphics  Surface Style Attributes
+syn keyword mupadIdentifier	BarStyle	Shadows	Color	Colors	FillColor	FillColor2
+syn keyword mupadIdentifier	FillColorTrue	FillColorFalse	FillColorUnknown	FillColorType
+syn keyword mupadIdentifier	Filled	FillPattern	FillPatterns	FillStyle
+syn keyword mupadIdentifier	InterpolationStyle	Shading	UseNormals
+" graphics  Arrow Style Attributes
+syn keyword mupadIdentifier	TipAngle	TipLength	TipStyle	TubeDiameter
+syn keyword mupadIdentifier	Tubular
+" graphics  meta-documentation Attributes
+syn keyword mupadIdentifier	objectGroupsListed
+
+if version >= 508 || !exists("did_mupad_syntax_inits")
+  if version < 508
+    let did_mupad_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink mupadComment		Comment
+  HiLink mupadString		String
+  HiLink mupadOperator		Operator
+  HiLink mupadSpecial		Special
+  HiLink mupadStatement		Statement
+  HiLink mupadUnderlined	Underlined
+  HiLink mupadConditional	Conditional
+  HiLink mupadRepeat		Repeat
+  HiLink mupadFunction		Function
+  HiLink mupadType		Type
+  HiLink mupadDefine		Define
+  HiLink mupadIdentifier	Identifier
+
+  delcommand HiLink
+endif
+
+" TODO  More comprehensive listing.
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index d29d5ce..b8933af 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -55,7 +55,7 @@
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained	add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call char2nr cindent col confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty errorlist escape eval eventhandler executable exists expand expr8 extend filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function get getbufvar getchar getcharmod getcmdline getcmdpos getcwd getfontname getfperm getfsize getftime getftype getline getreg getregtype getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matchend matchlist matchstr max min mkdir mode nextnonblank nr2char prevnonblank range readfile remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchpair server2client serverlist setbufvar setcmdpos setline setreg setwinvar simplify sort split strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winwidth writefile 
+syn keyword vimFuncName contained	add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call char2nr cindent col confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty errorlist escape eval eventhandler executable exists expand expr8 extend filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function get getbufvar getchar getcharmod getcmdline getcmdpos getcwd getfontname getfperm getfsize getftime getftype getline getreg getregtype getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matchend matchlist matchstr max min mkdir mode nextnonblank nr2char prevnonblank range readfile remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchpair server2client serverlist setbufvar setcmdpos setline setreg setwinvar simplify sort split strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winwidth writefile soundfold spellsuggest spellbadword
 
 "--- syntax above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1