Fix completion of file names with '%' and '*'.
diff --git a/runtime/syntax/fan.vim b/runtime/syntax/fan.vim
new file mode 100644
index 0000000..fc193af
--- /dev/null
+++ b/runtime/syntax/fan.vim
@@ -0,0 +1,132 @@
+" Vim syntax file
+" Language:     Fantom
+" Maintainer:   Kamil Toman <kamil.toman@gmail.com>
+" Last Change:  2010 May 27
+" Based on Java syntax file by Claudio Fleiner <claudio@fleiner.com>
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+" keyword definitions
+syn keyword fanExternal	        using native
+syn keyword fanError		goto void serializable volatile
+syn keyword fanConditional	if else switch
+syn keyword fanRepeat		do while for foreach each
+syn keyword fanBoolean		true false
+syn keyword fanConstant 	null
+syn keyword fanTypedef		this super
+syn keyword fanOperator	        new is isnot as
+syn keyword fanLongOperator     plus minus mult div mod get set slice lshift rshift and or xor inverse negate increment decrement equals compare
+syn keyword fanType		Void Bool Int Float Decimal Str Duration Uri Type Range List Map Obj
+syn keyword fanStatement	return
+syn keyword fanStorageClass	static const final
+syn keyword fanSlot      	virtual override once
+syn keyword fanField      	readonly
+syn keyword fanExceptions	throw try catch finally
+syn keyword fanAssert		assert
+syn keyword fanTypedef		class enum mixin
+syn match   fanFacet            "@[_a-zA-Z][_a-zA-Z0-9_]*\>"
+syn keyword fanBranch		break continue
+syn keyword fanScopeDecl	public internal protected private abstract
+
+if exists("fan_space_errors")
+  if !exists("fan_no_trail_space_error")
+    syn match   fanSpaceError  "\s\+$"
+  endif
+  if !exists("fan_no_tab_space_error")
+    syn match   fanSpaceError  " \+\t"me=e-1
+  endif
+endif
+
+syn region  fanLabelRegion     transparent matchgroup=fanLabel start="\<case\>" matchgroup=NONE end=":" contains=fanNumber,fanCharacter
+syn keyword fanLabel		default
+syn keyword fanLabel		case
+
+" The following cluster contains all fan groups except the contained ones
+syn cluster fanTop add=fanExternal,fanError,fanConditional,fanRepeat,fanBoolean,fanConstant,fanTypedef,fanOperator,fanLongOperator,fanType,fanType,fanStatement,fanStorageClass,fanSlot,fanField,fanExceptions,fanAssert,fanClassDecl,fanTypedef,fanFacet,fanBranch,fanScopeDecl,fanLabelRegion,fanLabel
+
+" Comments
+syn keyword fanTodo		 contained TODO FIXME XXX
+syn region  fanComment		 start="/\*"  end="\*/" contains=@fanCommentSpecial,fanTodo,fanComment,@Spell
+syn match   fanCommentStar      contained "^\s*\*[^/]"me=e-1
+syn match   fanCommentStar      contained "^\s*\*$"
+syn match   fanLineComment      "//.*" contains=@fanCommentSpecial2,fanTodo,@Spell
+syn match   fanDocComment       "\*\*.*" contains=@fanCommentSpecial2,fanTodo,@Spell
+hi def link fanCommentString fanString
+hi def link fanComment2String fanString
+hi def link fanCommentCharacter fanCharacter
+
+syn cluster fanTop add=fanComment,fanLineComment,fanDocComment
+
+" match the special comment /**/
+syn match   fanComment		 "/\*\*/"
+
+" Strings and constants
+syn match   fanSpecialError    	 	contained "\\."
+syn match   fanSpecialCharError 	contained "[^']"
+syn match   fanSpecialChar      	contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\|\$\)"
+syn match   fanStringSubst      	contained "\$[A-Za-z][A-Za-z_.]*"
+syn match   fanStringSubst      	contained "\${[^}]*}"
+syn region  fanString		start=+"+ end=+"+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
+syn region  fanTripleString	start=+"""+ end=+"""+ contains=fanSpecialChar,fanSpecialError,fanStringSubst,@Spell
+syn region  fanDSL		start=+<|+ end=+|>+ 
+syn match   fanUri		 "`[^`]*`"
+syn match   fanCharacter	 "'[^']*'" contains=fanSpecialChar,fanSpecialCharError
+syn match   fanCharacter	 "'\\''" contains=fanSpecialChar
+syn match   fanCharacter	 "'[^\\]'"
+syn match   fanNumber		 "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match   fanNumber		 "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match   fanNumber		 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match   fanNumber		 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+syn cluster fanTop add=fanString,fanCharacter,fanNumber,fanSpecial,fanStringError
+
+" The default highlighting.
+hi def link fanBranch			Conditional
+hi def link fanLabel			Label
+hi def link fanUserLabel		Label
+hi def link fanConditional		Conditional
+hi def link fanRepeat			Repeat
+hi def link fanExceptions		Exception
+hi def link fanAssert			Statement
+hi def link fanStorageClass		StorageClass
+hi def link fanSlot        		StorageClass
+hi def link fanField        		StorageClass
+hi def link fanScopeDecl		StorageClass
+hi def link fanBoolean		Boolean
+hi def link fanSpecial		Special
+hi def link fanSpecialError		Error
+hi def link fanSpecialCharError	Error
+hi def link fanTripleString		String
+hi def link fanString			String
+hi def link fanDSL			String
+hi def link fanCharacter		String
+hi def link fanStringSubst		Identifier
+hi def link fanUri			SpecialChar
+hi def link fanSpecialChar		SpecialChar
+hi def link fanNumber			Number
+hi def link fanError			Error
+hi def link fanStringError		Error
+hi def link fanStatement		Statement
+hi def link fanOperator		Operator
+hi def link fanLongOperator		Operator
+hi def link fanComment		Comment
+hi def link fanDocComment		Comment
+hi def link fanLineComment		Comment
+hi def link fanConstant		Constant
+hi def link fanTypedef		Typedef
+hi def link fanTodo			Todo
+hi def link fanFacet                  PreProc
+
+hi def link fanCommentTitle		SpecialComment
+hi def link fanCommentStar		SpecialComment
+hi def link fanType			Identifier
+hi def link fanExternal		Include
+
+hi def link fanSpaceError		Error
+
+let b:current_syntax = "fan"
+
+" vim: ts=8