diff -r 8201108e9cf0 runtime/syntax/tcl.vim
--- a/runtime/syntax/tcl.vim	Tue May 01 21:14:34 2012 +0200
+++ b/runtime/syntax/tcl.vim	Fri May 11 21:07:36 2012 +0200
@@ -203,9 +203,9 @@
 syn region tclEmbeddedStatement	start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
 " A string needs the skip argument as it may legitimately contain \".
 " Match at start of line
-syn region  tclString		  start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+
+syn region  tclString		  start=+^"+ end=+"+ contains=@Spell,tclSpecial skip=+\\\\\|\\"+
 "Match all other legal strings.
-syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+
+syn region  tclString		  start=+[^\\]"+ms=s+1  end=+"+ contains=@Spell,tclSpecial,tclVarRef,tclEmbeddedStatement skip=+\\\\\|\\"+
 
 " Line continuation is backslash immediately followed by newline.
 syn match tclLineContinue '\\$'
@@ -228,8 +228,9 @@
 "syn match  tclIdentifier	"\<[a-z_][a-z0-9_]*\>"
 syn case match
 
-syn region  tclComment		start="^\s*\#" skip="\\$" end="$" contains=tclTodo
-syn region  tclComment		start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo
+syn region  tclComment		start="^\s*\#" skip="\\$" end="$" contains=@Spell,tclTodo
+syn region  tclComment		start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=@Spell,tclTodo
+syn match  tclSharpBang		"\%^#!.*"
 
 "syn sync ccomment tclComment
 
@@ -244,6 +245,7 @@
     command -nargs=+ HiLink hi def link <args>
   endif
 
+  HiLink tclSharpBang		PreProc
   HiLink tcltkSwitch		Special
   HiLink tclExpand		Special
   HiLink tclLabel		Label
