Update runtime files.
diff --git a/runtime/syntax/d.vim b/runtime/syntax/d.vim
index b7f5eba..25318d8 100644
--- a/runtime/syntax/d.vim
+++ b/runtime/syntax/d.vim
@@ -2,20 +2,21 @@
"
" Language: D
" Maintainer: Jesse Phillips <Jesse.K.Phillips+D@gmail.com>
-" Last Change: 2010 Sep 21
-" Version: 0.22
+" Last Change: 2012 Jan 11
+" Version: 0.24
"
" Contributors:
" - Jason Mills <jasonmills@nf.sympatico.ca>: original Maintainer
-" - Kirk McDonald: version 0.17 updates, with minor modifications
-" (http://paste.dprogramming.com/dplmb7qx?view=hidelines)
-" - Tim Keating: patch to fix a bug in highlighting the `\` literal
-" - Frank Benoit: Fixed a bug that caused some identifiers and numbers to highlight as octal number errors.
-" - Shougo Matsushita <Shougo.Matsu@gmail.com>: updates for latest 2.047 highlighting
-" - Ellery Newcomer: Fixed some highlighting bugs.
-" - Steven N. Oliver: #! highlighting
+" - Kirk McDonald
+" - Tim Keating
+" - Frank Benoit
+" - Shougo Matsushita <Shougo.Matsu@gmail.com>
+" - Ellery Newcomer
+" - Steven N. Oliver
+" - Sohgo Takeuchi
"
-" Please email me with bugs, comments, and suggestions.
+" Please submit bugs/comments/suggestions to the github repo:
+" https://github.com/he-the-great/d.vim
"
" Options:
" d_comment_strings - Set to highlight strings and numbers in comments.
@@ -23,34 +24,23 @@
" d_hl_operator_overload - Set to highlight D's specially named functions
" that when overloaded implement unary and binary operators (e.g. opCmp).
"
-" Todo:
-" - Determine a better method of sync'ing than simply setting minlines
-" to a large number.
-"
-" - Several keywords (e.g., in, out, inout) are both storage class and
-" statements, depending on their context. Perhaps use pattern matching to
-" figure out which and highlight appropriately. For now I have made such
-" keywords storage classes so their highlighting is consistent with other
-" keywords that are commonly used with them, but are true storage classes,
-" such as lazy. Similarly, I made some statement keywords (e.g. body) storage
-" classes.
-"
-" - Mark contents of the asm statement body as special
-"
-" - Maybe highlight the 'exit', 'failure', and 'success' parts of the
-" scope() statement.
-"
-" - Highlighting DDoc comments.
-"
+" d_hl_object_types - Set to highlight some common types from object.di.
" Quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
+" Support cpoptions
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Set the current syntax to be known as d
+let b:current_syntax = "d"
+
" Keyword definitions
"
-syn keyword dExternal import package module extern
+syn keyword dExternal import module
syn keyword dConditional if else switch
syn keyword dBranch goto break continue
syn keyword dRepeat while for do foreach foreach_reverse
@@ -77,21 +67,34 @@
syn keyword dOpOverload opCall opSlice opSliceAssign opSliceOpAssign
syn keyword dOpOverload opPos opAdd_r opMul_r opAnd_r opOr_r opXor_r
syn keyword dOpOverload opIn opIn_r opPow opDispatch opStar opDot
- syn keyword dOpOverload opApply opApplyReverse
+ syn keyword dOpOverload opApply opApplyReverse opDollar
syn keyword dOpOverload opUnary opIndexUnary opSliceUnary
syn keyword dOpOverload opBinary opBinaryRight
endif
-syn keyword dType void ushort int uint long ulong float
-syn keyword dType byte ubyte double bit char wchar ucent cent
-syn keyword dType short bool dchar wstring dstring
-syn keyword dType real ireal ifloat idouble
-syn keyword dType creal cfloat cdouble
+syn keyword dType byte ubyte short ushort int uint long ulong cent ucent
+syn keyword dType void bool bit
+syn keyword dType float double real
+syn keyword dType ushort int uint long ulong float
+syn keyword dType char wchar dchar string wstring dstring
+syn keyword dType ireal ifloat idouble creal cfloat cdouble
+syn keyword dType size_t ptrdiff_t sizediff_t equals_t hash_t
+if exists("d_hl_object_types")
+ syn keyword dType Object Throwable AssociativeArray Error Exception
+ syn keyword dType Interface OffsetTypeInfo TypeInfo TypeInfo_Typedef
+ syn keyword dType TypeInfo_Enum TypeInfo_Pointer TypeInfo_Array
+ syn keyword dType TypeInfo_StaticArray TypeInfo_AssociativeArray
+ syn keyword dType TypeInfo_Function TypeInfo_Delegate TypeInfo_Class
+ syn keyword dType ClassInfo TypeInfo_Interface TypeInfo_Struct
+ syn keyword dType TypeInfo_Tuple TypeInfo_Const TypeInfo_Invariant
+ syn keyword dType TypeInfo_Shared TypeInfo_Inout MemberInfo
+ syn keyword dType MemberInfo_field MemberInfo_function ModuleInfo
+endif
syn keyword dDebug deprecated unittest invariant
syn keyword dExceptions throw try catch finally
-syn keyword dScopeDecl public protected private export
+syn keyword dScopeDecl public protected private export package
syn keyword dStatement debug return with
-syn keyword dStatement function delegate __traits mixin macro
+syn keyword dStatement function delegate __ctfe mixin macro
syn keyword dStorageClass in out inout ref lazy body
syn keyword dStorageClass pure nothrow
syn keyword dStorageClass auto static override final abstract volatile
@@ -100,15 +103,26 @@
syn keyword dPragma pragma
syn keyword dIdentifier _arguments _argptr __vptr __monitor _ctor _dtor
syn keyword dScopeIdentifier contained exit success failure
+syn keyword dTraitsIdentifier contained isAbstractClass isArithmetic isAssociativeArray
+syn keyword dTraitsIdentifier contained isFinalClass isFloating isIntegral isScalar
+syn keyword dTraitsIdentifier contained isStaticArray isUnsigned isVirtualFunction
+syn keyword dTraitsIdentifier contained isAbstractFunction isFinalFunction isStaticFunction
+syn keyword dTraitsIdentifier contained isRef isOut isLazy hasMember identifier getMember
+syn keyword dTraitsIdentifier contained getOverloads getVirtualFunctions parent compiles
+syn keyword dTraitsIdentifier contained classInstanceSize allMembers derivedMembers isSame
+syn keyword dExternIdentifier contained Windows Pascal Java System D
syn keyword dAttribute contained safe trusted system
syn keyword dAttribute contained property disable
-syn keyword dVersionIdentifier contained DigitalMars GNU LDC LLVM
-syn keyword dVersionIdentifier contained X86 X86_64 Windows Win32 Win64
-syn keyword dVersionIdentifier contained linux Posix OSX FreeBSD
-syn keyword dVersionIdentifier contained LittleEndian BigEndian D_Coverage
-syn keyword dVersionIdentifier contained D_Ddoc D_InlineAsm_X86
-syn keyword dVersionIdentifier contained D_InlineAsm_X86_64 D_LP64 D_PIC
-syn keyword dVersionIdentifier contained unittest D_Version2 none all
+syn keyword dVersionIdentifier contained DigitalMars GNU LDC SDC D_NET
+syn keyword dVersionIdentifier contained X86 X86_64 ARM PPC PPC64 IA64 MIPS MIPS64 Alpha
+syn keyword dVersionIdentifier contained SPARC SPARC64 S390 S390X HPPA HPPA64 SH SH64
+syn keyword dVersionIdentifier contained linux Posix OSX FreeBSD Windows Win32 Win64
+syn keyword dVersionIdentifier contained OpenBSD BSD Solaris AIX SkyOS SysV3 SysV4 Hurd
+syn keyword dVersionIdentifier contained Cygwin MinGW
+syn keyword dVersionIdentifier contained LittleEndian BigEndian
+syn keyword dVersionIdentifier contained D_InlineAsm_X86 D_InlineAsm_X86_64
+syn keyword dVersionIdentifier contained D_Version2 D_Coverage D_Ddoc D_LP64 D_PIC
+syn keyword dVersionIdentifier contained unittest none all
" Highlight the sharpbang
syn match dSharpBang "\%^#!.*" display
@@ -117,23 +131,38 @@
syn match dAnnotation "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>" contains=dAttribute
" Version Identifiers
-syn match dVersion "[^.]version" nextgroup=dVersionInside
-syn match dVersion "^version" nextgroup=dVersionInside
-syn match dVersionInside "([_a-zA-Z][_a-zA-Z0-9]*\>" transparent contained contains=dVersionIdentifier
+syn match dVersion "[^.]\<version\>"hs=s+1 nextgroup=dVersionInside
+syn match dVersion "^\<version\>" nextgroup=dVersionInside
+syn match dVersionInside "\s*([_a-zA-Z][_a-zA-Z0-9]*\>" transparent contained contains=dVersionIdentifier
" Scope StorageClass
-syn match dStorageClass "scope"
+syn match dStorageClass "\<scope\>"
+
+" Traits Expression
+syn match dStatement "\<__traits\>"
+
+" Extern Modifier
+syn match dExternal "\<extern\>"
" Scope Identifiers
-syn match dScope "scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
+syn match dScope "\<scope\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+5 contains=dScopeIdentifier
+
+" Traits Identifiers
+syn match dTraits "\<__traits\s*([_a-zA-Z][_a-zA-Z0-9]*\>"he=s+8 contains=dTraitsIdentifier
+
+" Necessary to highlight C++ in extern modifiers.
+syn match dExternIdentifier "C\(++\)\?" contained
+
+" Extern Identifiers
+syn match dExtern "\<extern\s*([_a-zA-Z][_a-zA-Z0-9\+]*\>"he=s+6 contains=dExternIdentifier
" String is a statement and a module name.
-syn match dType "^string"
-syn match dType "[^.]\s*\<string\>"ms=s+1
+syn match dType "[^.]\<string\>"ms=s+1
+syn match dType "^\<string\>"
" Assert is a statement and a module name.
-syn match dAssert "^assert"
-syn match dAssert "[^.]\s*\<assert\>"ms=s+1
+syn match dAssert "[^.]\<assert\>"ms=s+1
+syn match dAssert "^\<assert\>"
" dTokens is used by the token string highlighting
syn cluster dTokens contains=dExternal,dConditional,dBranch,dRepeat,dBoolean
@@ -161,12 +190,12 @@
syn region dBlockCommentString contained start=+"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=dCommentStar,dUnicode,dEscSequence,@Spell
syn region dNestedCommentString contained start=+"+ end=+"+ end="+"me=s-1,he=s-1 contains=dCommentPlus,dUnicode,dEscSequence,@Spell
syn region dLineCommentString contained start=+"+ end=+$\|"+ contains=dUnicode,dEscSequence,@Spell
- syn region dBlockComment start="/\*" end="\*/" contains=dBlockCommentString,dTodo,@Spell
- syn region dNestedComment start="/+" end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+ syn region dBlockComment start="/\*" end="\*/" contains=dBlockCommentString,dTodo,@Spell fold
+ syn region dNestedComment start="/+" end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
syn match dLineComment "//.*" contains=dLineCommentString,dTodo,@Spell
else
- syn region dBlockComment start="/\*" end="\*/" contains=dBlockCommentString,dTodo,@Spell
- syn region dNestedComment start="/+" end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell
+ syn region dBlockComment start="/\*" end="\*/" contains=dBlockCommentString,dTodo,@Spell fold
+ syn region dNestedComment start="/+" end="+/" contains=dNestedComment,dNestedCommentString,dTodo,@Spell fold
syn match dLineComment "//.*" contains=dLineCommentString,dTodo,@Spell
endif
@@ -280,6 +309,10 @@
" TODO: Highlight following Integer and optional Filespec.
syn region dPragma start="#\s*\(line\>\)" skip="\\$" end="$"
+" Block
+"
+syn region dBlock start="{" end="}" transparent fold
+
" The default highlighting.
"
@@ -330,12 +363,14 @@
hi def link dSharpBang PreProc
hi def link dAttribute StorageClass
hi def link dIdentifier Identifier
-hi def link dVersionIdentifier Identifier
hi def link dVersion dStatement
-hi def link dScopeIdentifier dStatement
+hi def link dVersionIdentifier Identifier
hi def link dScope dStorageClass
-
-let b:current_syntax = "d"
+hi def link dScopeIdentifier Identifier
+hi def link dTraits dStatement
+hi def link dTraitsIdentifier Identifier
+hi def link dExtern dExternal
+hi def link dExternIdentifier Identifier
" Marks contents of the asm statment body as special
@@ -464,3 +499,5 @@
syn keyword dAsmOpCode contained pfrsqit1 pfrsqrt pfsub pfsubr pi2fd
syn keyword dAsmOpCode contained pmulhrw pswapd
+let &cpo = s:cpo_save
+unlet s:cpo_save