diff options
Diffstat (limited to 'syntax/dart.vim')
-rw-r--r-- | syntax/dart.vim | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/syntax/dart.vim b/syntax/dart.vim new file mode 100644 index 00000000..ebfb7abd --- /dev/null +++ b/syntax/dart.vim @@ -0,0 +1,110 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dart') == -1 + +" Vim syntax file " Language: Dart +" Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +" for details. All rights reserved. Use of this source code is governed by a +" BSD-style license that can be found in the LICENSE file. + +if !exists("g:main_syntax") + if version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let g:main_syntax = 'dart' + syntax region dartFold start="{" end="}" transparent fold +endif + +" Ensure long multiline strings are highlighted. +syntax sync fromstart + +" keyword definitions +syntax keyword dartConditional if else switch +syntax keyword dartRepeat do while for +syntax keyword dartBoolean true false +syntax keyword dartConstant null +syntax keyword dartTypedef this super class typedef +syntax keyword dartOperator new is as in factory +syntax match dartOperator "+=\=\|-=\=\|*=\=\|/=\=\|%=\=\|\~/=\=\|<<=\=\|>>=\=\|[<>]=\=\|===\=\|\!==\=\|&=\=\|\^=\=\||=\=\|||\|&&\|\[\]=\=\|=>\|!\|\~\|?\|:" +syntax keyword dartType void var bool int double num dynamic +syntax keyword dartStatement return +syntax keyword dartStorageClass static abstract final const +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 match dartUserLabelRef "\k\+" contained + +syntax region dartLabelRegion transparent matchgroup=dartLabel start="\<case\>" matchgroup=NONE end=":" +syntax keyword dartLabel default + +syntax match dartLibrary "^\(import\|part of\|part\|export\|library\|show\|hide\)\s" + +" Comments +syntax keyword dartTodo contained TODO FIXME XXX +syntax region dartComment start="/\*" end="\*/" contains=dartTodo,dartDocLink,@Spell +syntax match dartLineComment "//.*" contains=dartTodo,@Spell +syntax match dartLineDocComment "///.*" contains=dartTodo,dartDocLink,@Spell +syntax region dartDocLink 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 + + +" The default highlighting. +highlight default link dartBranch Conditional +highlight default link dartUserLabelRef dartUserLabel +highlight default link dartLabel Label +highlight default link dartUserLabel Label +highlight default link dartConditional Conditional +highlight default link dartRepeat Repeat +highlight default link dartExceptions Exception +highlight default link dartAssert Statement +highlight default link dartStorageClass StorageClass +highlight default link dartClassDecl dartStorageClass +highlight default link dartBoolean Boolean +highlight default link dartString String +highlight default link dartRawString String +highlight default link dartMultilineString String +highlight default link dartRawMultilineString String +highlight default link dartNumber Number +highlight default link dartStatement Statement +highlight default link dartOperator Operator +highlight default link dartComment Comment +highlight default link dartLineComment Comment +highlight default link dartLineDocComment Comment +highlight default link dartConstant Constant +highlight default link dartTypedef Typedef +highlight default link dartTodo Todo +highlight default link dartKeyword Keyword +highlight default link dartType Type +highlight default link dartInterpolation PreProc +highlight default link dartDocLink SpecialComment +highlight default link dartSpecialChar SpecialChar +highlight default link dartLibrary Include +highlight default link dartCoreClasses Type +highlight default link dartCoreTypedefs Typedef +highlight default link dartCoreExceptions Exception + +let b:current_syntax = "dart" +let b:spell_options = "contained" + +if g:main_syntax is# 'dart' + unlet g:main_syntax +endif + +endif |