diff options
Diffstat (limited to 'syntax/dart.vim')
-rw-r--r-- | syntax/dart.vim | 51 |
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 |