Update runtime files.
diff --git a/runtime/syntax/2html.vim b/runtime/syntax/2html.vim
index 187b1be..ddc7819 100644
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2013 Jul 08
+" Last Change: 2015 Sep 08
 "
 " Additional contributors:
 "
@@ -26,7 +26,11 @@
 
 " Font
 if exists("g:html_font")
-  let s:htmlfont = "'". g:html_font . "', monospace"
+  if type(g:html_font) == type([])
+    let s:htmlfont = "'". join(g:html_font,"','") . "', monospace"
+  else
+    let s:htmlfont = "'". g:html_font . "', monospace"
+  endif
 else
   let s:htmlfont = "monospace"
 endif
diff --git a/runtime/syntax/bzl.vim b/runtime/syntax/bzl.vim
new file mode 100644
index 0000000..b0ee945
--- /dev/null
+++ b/runtime/syntax/bzl.vim
@@ -0,0 +1,16 @@
+" Vim syntax file
+" Language:	Bazel (http://bazel.io)
+" Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl)
+" Last Change:	2015 Aug 11
+
+if exists('b:current_syntax')
+  finish
+endif
+
+
+runtime! syntax/python.vim
+
+let b:current_syntax = 'bzl'
+
+syn region bzlRule start='^\w\+($' end='^)\n*' transparent fold
+syn region bzlList start='\[' end='\]' transparent fold
diff --git a/runtime/syntax/cmake.vim b/runtime/syntax/cmake.vim
index 58a7079..68b2198 100644
--- a/runtime/syntax/cmake.vim
+++ b/runtime/syntax/cmake.vim
@@ -2,10 +2,10 @@
 " Program:      CMake - Cross-Platform Makefile Generator
 " Module:       $RCSfile: cmake-syntax.vim,v $
 " Language:     CMake
-" Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
 " Maintainer:   Karthik Krishnan <karthik.krishnan@kitware.com>
-" Last Change:  2015 Sep 25
-" 		(Dominique Pelle added @Spell)
+" Former Maintainer:   Dimitri Merejkowsky <d.merej@gmail.com>
+" Author:       Andy Cedilnik <andy.cedilnik@kitware.com>
+" Last Change:  2015 Sep 29
 " Version:      $Revision: 1.10 $
 "
 " Licence:      The CMake license applies to this file. See
diff --git a/runtime/syntax/dnsmasq.vim b/runtime/syntax/dnsmasq.vim
index 2a31aed..9fa3207 100644
--- a/runtime/syntax/dnsmasq.vim
+++ b/runtime/syntax/dnsmasq.vim
@@ -4,8 +4,8 @@
 "		:3s+-foo++g
 " Description:	highlight dnsmasq configuration files
 " File:		runtime/syntax/dnsmasq.vim
-" Version:	2.70
-" Last Change:	2014 Apr 30
+" Version:	2.76
+" Last Change:	2015 Sep 27
 " Modeline:	vim: ts=8:sw=2:sts=2:
 "
 " License:	VIM License
@@ -131,10 +131,12 @@
 syn match DnsmasqKeyword    "^\s*dhcp-subscrid\>"
 syn match DnsmasqKeyword    "^\s*dhcp-userclass\>"
 syn match DnsmasqKeyword    "^\s*dhcp-vendorclass\>"
+syn match DnsmasqKeyword    "^\s*dhcp-hostsdir\>"
 syn match DnsmasqKeyword    "^\s*dns-rr\>"
 syn match DnsmasqKeyword    "^\s*dnssec\>"
 syn match DnsmasqKeyword    "^\s*dnssec-check-unsigned\>"
 syn match DnsmasqKeyword    "^\s*dnssec-no-timecheck\>"
+syn match DnsmasqKeyword    "^\s*dnssec-timestamp\>"
 syn match DnsmasqKeyword    "^\s*dns-forward-max\>"
 syn match DnsmasqKeyword    "^\s*domain\>"
 syn match DnsmasqKeyword    "^\s*domain-needed\>"
@@ -150,6 +152,7 @@
 syn match DnsmasqKeyword    "^\s*interface\>"
 syn match DnsmasqKeyword    "^\s*interface-name\>"
 syn match DnsmasqKeyword    "^\s*ipset\>"
+syn match DnsmasqKeyword    "^\s*ignore-address\>"
 syn match DnsmasqKeyword    "^\s*keep-in-foreground\>"
 syn match DnsmasqKeyword    "^\s*leasefile-ro\>"
 syn match DnsmasqKeyword    "^\s*listen-address\>"
@@ -164,6 +167,7 @@
 syn match DnsmasqKeyword    "^\s*log-queries\>"
 syn match DnsmasqKeyword    "^\s*max-ttl\>"
 syn match DnsmasqKeyword    "^\s*max-cache-ttl\>"
+syn match DnsmasqKeyword    "^\s*min-cache-ttl\>"
 syn match DnsmasqKeyword    "^\s*min-port\>"
 syn match DnsmasqKeyword    "^\s*mx-host\>"
 syn match DnsmasqKeyword    "^\s*mx-target\>"
@@ -204,6 +208,7 @@
 syn match DnsmasqKeyword    "^\s*tftp-max\>"
 syn match DnsmasqKeyword    "^\s*tftp-lowercase\>"
 syn match DnsmasqKeyword    "^\s*tftp-no-blocksize\>"
+syn match DnsmasqKeyword    "^\s*tftp-no-fail\>"
 syn match DnsmasqKeyword    "^\s*tftp-port-range\>"
 syn match DnsmasqKeyword    "^\s*tftp-root\>"
 syn match DnsmasqKeyword    "^\s*tftp-secure\>"
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index 4087aff..60f23d2 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Charles E. Campbell  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		May 29, 2015
-" Version:		137
+" Last Change:		Oct 09, 2015
+" Version:		139
 " URL:		http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr)
@@ -16,14 +16,14 @@
   finish
 endif
 
-" AFAICT "." should be considered part of the iskeyword.  Using iskeywords in
-" syntax is dicey, so the following code permits the user to
+" AFAICT "." should be considered part of the iskeyword for ksh.  Using iskeywords
+" in syntax is dicey, so the following code permits the user to prevent/override
 "  g:sh_isk set to a string	: specify iskeyword.
 "  g:sh_noisk exists	: don't change iskeyword
-"  g:sh_noisk does not exist	: (default) append "." to iskeyword
+"  g:sh_noisk does not exist	: (default) append "." to iskeyword for kornshell
 if exists("g:sh_isk") && type(g:sh_isk) == 1	" user specifying iskeyword
  exe "setl isk=".g:sh_isk
-elseif !exists("g:sh_noisk")		" optionally prevent appending '.' to iskeyword
+elseif !exists("g:sh_noisk") && exists("b:is_kornshell") " append '.' to iskeyword
  setl isk+=.
 endif
 
@@ -128,7 +128,7 @@
 syn cluster shIfList	contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo
 syn cluster shLoopList	contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shForPP,shIf,shOption,shSet,shTest,shTestOpr
 syn cluster shSubShList	contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator
-syn cluster shTestList	contains=shCharClass,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
+syn cluster shTestList	contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr
 " Echo: {{{1
 " ====
 " This one is needed INSIDE a CommandSub, so that `echo bla` be correct
@@ -321,12 +321,11 @@
 endif
 syn region  shSingleQuote	matchgroup=shQuote start=+'+ end=+'+		contains=@Spell
 syn region  shDoubleQuote	matchgroup=shQuote start=+\%(\%(\\\\\)*\\\)\@<!"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
-syn region  shDoubleQuote	matchgroup=shQuote start=+"+ skip=+\\"+ end=+"+	contains=@shDblQuoteList,shStringSpecial,@Spell
 syn match   shStringSpecial	"[^[:print:] \t]"		contained
 syn match   shStringSpecial	"\%(\\\\\)*\\[\\"'`$()#]"
 " COMBAK: why is ,shComment on next line???
-syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"	nextgroup=shMoreSpecial,shComment
-syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"		nextgroup=shComment
+syn match   shSpecial	"[^\\]\zs\%(\\\\\)*\\[\\"'`$()#]"
+syn match   shSpecial	"^\%(\\\\\)*\\[\\"'`$()#]"
 syn match   shMoreSpecial	"\%(\\\\\)*\\[\\"'`$()#]"		nextgroup=shMoreSpecial contained
 
 " Comments: {{{1
@@ -409,27 +408,27 @@
 
 if exists("b:is_bash")
  if s:sh_fold_functions
-  syn region shFunctionOne	fold	matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"	end="}"	contains=@shFunctionList			skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionTwo	fold	matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained	skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionThree	fold	matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("	end=")"	contains=@shFunctionList			skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionFour	fold	matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)"	end=")"	contains=shFunctionKey,@shFunctionList contained	skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionOne	fold	matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"		end="}"	contains=@shFunctionList			skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionTwo	fold	matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained	skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionThree	fold	matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("		end=")"	contains=@shFunctionList			skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionFour	fold	matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*)"	end=")"	contains=shFunctionKey,@shFunctionList contained	skipwhite skipnl nextgroup=shFunctionStart,shQuickComment
  else
-  syn region shFunctionOne		matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"	end="}"	contains=@shFunctionList
-  syn region shFunctionTwo		matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained
-  syn region shFunctionThree		matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("	end=")"	contains=@shFunctionList
-  syn region shFunctionFour		matchgroup=shFunction start="\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained
+  syn region shFunctionOne		matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*{"		end="}"	contains=@shFunctionList
+  syn region shFunctionTwo		matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained
+  syn region shFunctionThree		matchgroup=shFunction start="^\s*\h[-a-zA-Z_0-9]*\s*()\_s*("		end=")"	contains=@shFunctionList
+  syn region shFunctionFour		matchgroup=shFunction start="\<[^d][^o]\&\h[-a-zA-Z_0-9]*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained
  endif
 else
  if s:sh_fold_functions
-  syn region shFunctionOne	fold	matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"	end="}"	contains=@shFunctionList	       skipwhite skipnl		nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionTwo	fold	matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained skipwhite skipnl	nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionThree	fold	matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("	end=")"	contains=@shFunctionList	       skipwhite skipnl		nextgroup=shFunctionStart,shQuickComment
-  syn region shFunctionFour	fold	matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained skipwhite skipnl	nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionOne	fold	matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"		end="}"	contains=@shFunctionList	       skipwhite skipnl		nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionTwo	fold	matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained skipwhite skipnl	nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionThree	fold	matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("		end=")"	contains=@shFunctionList	       skipwhite skipnl		nextgroup=shFunctionStart,shQuickComment
+  syn region shFunctionFour	fold	matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained skipwhite skipnl	nextgroup=shFunctionStart,shQuickComment
  else
-  syn region shFunctionOne		matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"	end="}"	contains=@shFunctionList
-  syn region shFunctionTwo		matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained
-  syn region shFunctionThree		matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("	end=")"	contains=@shFunctionList
-  syn region shFunctionFour		matchgroup=shFunction start="\h\w*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained
+  syn region shFunctionOne		matchgroup=shFunction start="^\s*\h\w*\s*()\_s*{"		end="}"	contains=@shFunctionList
+  syn region shFunctionTwo		matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*{"	end="}"	contains=shFunctionKey,@shFunctionList contained
+  syn region shFunctionThree		matchgroup=shFunction start="^\s*\h\w*\s*()\_s*("		end=")"	contains=@shFunctionList
+  syn region shFunctionFour		matchgroup=shFunction start="\<[^d][^o]\&\h\w*\s*\%(()\)\=\_s*("	end=")"	contains=shFunctionKey,@shFunctionList contained
  endif
 endif
 
diff --git a/runtime/syntax/systemd.vim b/runtime/syntax/systemd.vim
new file mode 100644
index 0000000..5dfba74
--- /dev/null
+++ b/runtime/syntax/systemd.vim
@@ -0,0 +1,8 @@
+" Vim syntax file
+" Language:  systemd.unit(5)
+
+if !exists('b:current_syntax')
+  " Looks a lot like dosini files.
+  runtime! syntax/dosini.vim
+  let b:current_syntax = 'systemd'
+endif
diff --git a/runtime/syntax/vhdl.vim b/runtime/syntax/vhdl.vim
index c76b046..da2b975 100644
--- a/runtime/syntax/vhdl.vim
+++ b/runtime/syntax/vhdl.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Daniel Kho <daniel.kho@tauhop.com>
 " Previous Maintainer:	Czo <Olivier.Sirol@lip6.fr>
 " Credits:	Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
-" Last Changed:	2015 Apr 25 by Daniel Kho
+" Last Changed:	2015 Oct 13 by Daniel Kho
 " $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $
 
 " VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
@@ -72,6 +72,7 @@
 syn keyword vhdlType string severity_level
 " Predefined standard ieee VHDL types
 syn keyword vhdlType positive natural signed unsigned
+syn keyword vhdlType unresolved_signed unresolved_unsigned u_signed u_unsigned 
 syn keyword vhdlType line text
 syn keyword vhdlType std_logic std_logic_vector
 syn keyword vhdlType std_ulogic std_ulogic_vector
@@ -92,12 +93,12 @@
 syn match vhdlAttribute "\'right"
 syn match vhdlAttribute "\'ascending"
 " block attributes
-syn match vhdlAttribute "\'behaviour"
-syn match vhdlAttribute "\'structure"
+"syn match vhdlAttribute "\'behaviour"	    " Non-standard VHDL
+"syn match vhdlAttribute "\'structure"	    " Non-standard VHDL
 syn match vhdlAttribute "\'simple_name"
 syn match vhdlAttribute "\'instance_name"
 syn match vhdlAttribute "\'path_name"
-syn match vhdlAttribute "\'foreign"
+syn match vhdlAttribute "\'foreign"	    " VHPI
 " signal attribute
 syn match vhdlAttribute "\'active"
 syn match vhdlAttribute "\'delayed"
@@ -112,10 +113,9 @@
 syn match vhdlAttribute "\'driving_value"
 " type attributes
 syn match vhdlAttribute "\'base"
-syn match vhdlAttribute "\'high"
-syn match vhdlAttribute "\'left"
+syn match vhdlAttribute "\'subtype"
+syn match vhdlAttribute "\'element"
 syn match vhdlAttribute "\'leftof"
-syn match vhdlAttribute "\'low"
 syn match vhdlAttribute "\'pos"
 syn match vhdlAttribute "\'pred"
 syn match vhdlAttribute "\'rightof"
@@ -150,34 +150,76 @@
 syn match vhdlNumber "-\=\<\d\+\>"
 syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
 syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+
 " operators
-syn keyword vhdlOperator and nand or nor xor xnor
-syn keyword vhdlOperator rol ror sla sll sra srl
-syn keyword vhdlOperator mod rem abs not
-syn match   vhdlOperator "[&><=:+\-*\/|]"
-syn match   vhdlSpecial  "[().,;]"
+syn keyword	vhdlOperator	and nand or nor xor xnor
+syn keyword	vhdlOperator	rol ror sla sll sra srl
+syn keyword	vhdlOperator	mod rem abs not
+" TODO remove the following line. You can't have a sequence of */=+ as an operator for example.
+"syn match	vhdlOperator	"[&><=:+\-*\/|]"
+" The following lines match valid and invalid operators.
+
+" Concatenation and math operators
+syn match	vhdlOperator	"&\|+\|-\|\*\|\/"
+
+" Equality and comparison operators
+syn match	vhdlOperator	"=\|\/=\|>\|<\|>="
+
+" Assignment operators
+syn match	vhdlOperator	"<=\|:="
+syn match	vhdlOperator	"=>"
+
+" VHDL-2008 conversion, matching equality/non-equality operators
+syn match	vhdlOperator	"??\|?=\|?\/=\|?<\|?<=\|?>\|?>="
+
+" Linting for illegal operators
+" '='
+syn match	vhdlError	"\(=\)[<=&+\-\*\/\\]\+"
+syn match	vhdlError	"[=&+\-\*\\]\+\(=\)"
+" '>', '<'
+syn match	vhdlError	"\(>\)[<>&+\-\/\\]\+"
+syn match	vhdlError	"[>&+\-\/\\]\+\(>\)"
+syn match	vhdlError	"\(<\)[<&+\-\/\\]\+"
+syn match	vhdlError	"[<>=&+\-\/\\]\+\(<\)"
+" Covers most operators
+syn match	vhdlError	"\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<=\|?>=\|>=\|<=\|:=\|=>\)[<>=&+\-\*\\?:]\+"
+syn match	vhdlError	"[<>=&+\-\*\\:]\+\(&\|+\|\-\|\*\*\|\/=\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|>=\|<=\|:=\|=>\)"
+syn match	vhdlError	"\(?<\|?>\)[<>&+\-\*\/\\?:]\+"
+
+"syn match	vhdlError	"[?]\+\(&\|+\|\-\|\*\*\|??\|?=\|?\/=\|?<\|?<=\|?>\|?>=\|:=\|=>\)"
+" '/'
+syn match	vhdlError	"\(\/\)[<>&+\-\*\/\\?:]\+"
+syn match	vhdlError	"[<>=&+\-\*\/\\:]\+\(\/\)"
+
+syn match	vhdlSpecial	"<>"
+syn match	vhdlSpecial	"[().,;]"
+
+
 " time
 syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
 syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
 
+syn case match
 syn keyword vhdlTodo	contained TODO NOTE
 syn keyword vhdlFixme	contained FIXME
+syn case ignore
 
-" Regex for space is '\s'
-"   Any number of spaces: \s*
-"   At least one space:	  \s+
-syn region vhdlComment start="/\*" end="\*/" contains=vhdlTodo,vhdlFixme,@Spell
-syn match vhdlComment "--.*" contains=vhdlTodo,vhdlFixme,@Spell
+syn region  vhdlComment start="/\*" end="\*/"	contains=vhdlTodo,vhdlFixme,@Spell
+syn match   vhdlComment "\(^\|\s\)--.*"		contains=vhdlTodo,vhdlFixme,@Spell
+
+" Industry-standard directives. These are not standard VHDL, but are commonly
+" used in the industry.
 syn match vhdlPreProc "/\* synthesis .* \*/"
+"syn match vhdlPreProc "/\* simulation .* \*/"
 syn match vhdlPreProc "/\* pragma .* \*/"
 syn match vhdlPreProc "/\* synopsys .* \*/"
 syn match vhdlPreProc "--\s*synthesis .*"
+"syn match vhdlPreProc "--\s*simulation .*"
 syn match vhdlPreProc "--\s*pragma .*"
 syn match vhdlPreProc "--\s*synopsys .*"
-" syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]"
 
 "Modify the following as needed.  The trade-off is performance versus functionality.
-syn sync minlines=200
+syn sync minlines=600
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -203,7 +245,7 @@
   HiLink vhdlTime	Number
   HiLink vhdlType	Type
   HiLink vhdlOperator	Operator
-"  HiLink vhdlGlobal    Error
+  HiLink vhdlError	Error
   HiLink vhdlAttribute	Special
   HiLink vhdlPreProc	PreProc