summaryrefslogtreecommitdiffstats
path: root/syntax/dart.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/dart.vim')
-rw-r--r--syntax/dart.vim51
1 files changed, 34 insertions, 17 deletions
diff --git a/syntax/dart.vim b/syntax/dart.vim
index 21749b45..460c74a1 100644
--- a/syntax/dart.vim
+++ b/syntax/dart.vim
@@ -18,6 +18,8 @@ endif
" Ensure long multiline strings are highlighted.
syntax sync fromstart
+syntax case match
+
" keyword definitions
syntax keyword dartConditional if else switch
syntax keyword dartRepeat do while for
@@ -26,14 +28,14 @@ syntax keyword dartConstant null
syntax keyword dartTypedef this super class typedef enum
syntax keyword dartOperator new is as in
syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:"
-syntax keyword dartType void var bool int double num dynamic
+syntax keyword dartType void var bool int double num dynamic covariant
syntax keyword dartStatement return
syntax keyword dartStorageClass static abstract final const factory
syntax keyword dartExceptions throw rethrow try on catch finally
syntax keyword dartAssert assert
syntax keyword dartClassDecl extends with implements
syntax keyword dartBranch break continue nextgroup=dartUserLabelRef skipwhite
-syntax keyword dartKeyword get set operator call external async await yield sync
+syntax keyword dartKeyword get set operator call external async await yield sync native
syntax match dartUserLabelRef "\k\+" contained
syntax region dartLabelRegion transparent matchgroup=dartLabel start="\<case\>" matchgroup=NONE end=":"
@@ -47,6 +49,24 @@ syntax match dartLibrary "^\(library\|part of\|part\)\>"
syntax match dartMetadata "@\([_$a-zA-Z][_$a-zA-Z0-9]*\.\)*[_$a-zA-Z][_$a-zA-Z0-9]*\>"
+" Numbers
+syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>"
+
+" Core libraries
+if !exists('dart_corelib_highlight') || dart_corelib_highlight
+ syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime
+ \ Duration Expando Function Invocation Iterable Iterator List Map Match
+ \ Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String
+ \ StringBuffer StringSink Symbol Type
+ syntax keyword dartCoreTypedefs Comparator
+ syntax keyword dartCoreExceptions AbstractClassInstantiationError
+ \ ArgumentError AssertionError CastError ConcurrentModificationError
+ \ Error Exception FallThroughError FormatException
+ \ IntegerDivisionByZeroException NoSuchMethodError NullThrownError
+ \ OutOfMemoryError RangeError RuntimeError StackOverflowError StateError
+ \ TypeError UnimplementedError UnsupportedError
+endif
+
" Comments
syntax keyword dartTodo contained TODO FIXME XXX
syntax region dartComment start="/\*" end="\*/" contains=dartComment,dartTodo,dartDocLink,@Spell
@@ -55,21 +75,18 @@ syntax match dartLineDocComment "///.*" contains=dartTodo,dartDocLink,@Spell
syntax region dartDocLink oneline contained start=+\[+ end=+\]+
" Strings
-syntax region dartString start=+\z(["']\)+ end=+\z1+ contains=@Spell,dartInterpolation,dartSpecialChar
-syntax region dartRawString start=+r\z(["']\)+ end=+\z1+ contains=@Spell
-syntax region dartMultilineString start=+\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@Spell,dartInterpolation,dartSpecialChar
-syntax region dartRawMultilineString start=+r\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@Spell
-syntax match dartInterpolation contained "\$\(\w\+\|{[^}]\+}\)"
-syntax match dartSpecialChar contained "\\\(u\x\{4\}\|u{\x\+}\|x\x\x\|x{\x\+}\|.\)"
-
-" Numbers
-syntax match dartNumber "\<\d\+\(\.\d\+\)\=\>"
-
-" TODO(antonm): consider conditional highlighting of corelib classes.
-syntax keyword dartCoreClasses BidirectionalIterator Comparable DateTime Duration Expando Function Invocation Iterable Iterator List Map Match Object Pattern RegExp RuneIterator Runes Set StackTrace Stopwatch String StringBuffer StringSink Symbol Type
-syntax keyword dartCoreTypedefs Comparator
-syntax keyword dartCoreExceptions AbstractClassInstantiationError ArgumentError AssertionError CastError ConcurrentModificationError Error Exception FallThroughError FormatException IntegerDivisionByZeroException NoSuchMethodError NullThrownError OutOfMemoryError RangeError RuntimeError StackOverflowError StateError TypeError UnimplementedError UnsupportedError
-
+syntax cluster dartRawStringContains contains=@Spell
+if exists('dart_html_in_strings') && dart_html_in_strings
+ syntax include @HTML syntax/html.vim
+ syntax cluster dartRawStringContains add=@HTML
+endif
+syntax cluster dartStringContains contains=@dartRawStringContains,dartInterpolation,dartSpecialChar
+syntax region dartString oneline start=+\z(["']\)+ end=+\z1+ contains=@dartStringContains keepend
+syntax region dartRawString oneline start=+r\z(["']\)+ end=+\z1+ contains=@dartRawStringContains keepend
+syntax region dartMultilineString start=+\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@dartStringContains
+syntax region dartRawMultilineString start=+r\z("\{3\}\|'\{3\}\)+ end=+\z1+ contains=@dartSRawtringContains
+syntax match dartInterpolation contained "\$\(\w\+\|{[^}]\+}\)" extend
+syntax match dartSpecialChar contained "\\\(u\x\{4\}\|u{\x\+}\|x\x\x\|x{\x\+}\|.\)" extend
" The default highlighting.
highlight default link dartBranch Conditional