diff options
Diffstat (limited to 'syntax/dsdl.vim')
-rw-r--r-- | syntax/dsdl.vim | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/syntax/dsdl.vim b/syntax/dsdl.vim new file mode 100644 index 00000000..f9ffc877 --- /dev/null +++ b/syntax/dsdl.vim @@ -0,0 +1,94 @@ +if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'dlang') != -1 + finish +endif + +" Vim syntax file for DUB configurations." +" +" Language: SDLang (dub config) +" Maintainer: Jesse Phillips <Jesse.K.Phillips+D@gmail.com> +" Last Change: 2015-07-11 +" +" Contributors: +" - Joakim Brannstrom <joakim.brannstrom@gmx.com> +" +" Please submit bugs/comments/suggestions to the github repo: +" https://github.com/JesseKPhillips/d.vim + +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" General matchers +syn match dsdlAssign contained "=" +syn match dsdlAttribute "\w*\s*=" contains=dsdlAssign +syn match dsdlStatement "^\s*[a-zA-Z:]*" + +" Keyword grouping +syn keyword dsdlInfo name description copyright authors license +syn keyword dsdlStructure buildRequirements buildType configuration +syn keyword dsdlBoolean true false on off + +syn keyword dsdlTodo contained TODO FIXME XXX + +" dsdlCommentGroup allows adding matches for special things in comments +syn cluster dsdlCommentGroup contains=dsdlTodo + +" Highlight % items in strings. +syn match dsdlFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + +" dsdlCppString: same as dsdlString, but ends at end of line +syn region dsdlString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,dsdlFormat,@Spell extend +syn region dsdlCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,dsdlFormat,@Spell + +syn cluster dsdlStringGroup contains=dsdlCppString + +" Comments +syn region dsdlCommentL start="//" skip="\\$" end="$" keepend contains=@dsdlCommentGroup,cSpaceError,@Spell +syn region dsdlComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@dsdlCommentGroup,dsdlCommentStartError,cSpaceError,@Spell fold extend +" keep a // comment separately, it terminates a preproc. conditional +syn match dsdlCommentError display "\*/" +syn match dsdlCommentStartError display "/\*"me=e-1 contained + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match dsdlNumbers display transparent "\<\d\|\.\d" contains=dsdlNumber,dsdlFloat,cOctalError,dsdlOctal +" Same, but without octal error (for comments) +syn match dsdlNumbersCom display contained transparent "\<\d\|\.\d" contains=dsdlNumber,dsdlFloat,dsdlOctal +syn match dsdlNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match dsdlNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match dsdlOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=dsdlOctalZero +syn match dsdlOctalZero display contained "\<0" +syn match dsdlFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match dsdlFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match dsdlFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match dsdlFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +syn case match + +" Define the default highlighting. +" Only used when an item doesn't have highlighting yet +hi def link dsdlInfo Constant +hi def link dsdlAssign Special +hi def link dsdlBoolean Boolean +hi def link dsdlFormat SpecialChar +hi def link dsdlCppString dsdlString +hi def link dsdlCommentL dsdlComment +hi def link dsdlNumber Number +hi def link dsdlOctal Number +hi def link dsdlOctalZero PreProc " link this to Error if you want +hi def link dsdlFloat Float +hi def link dsdlCommentError Error +hi def link dsdlCommentStartError Error +hi def link dsdlStructure Structure +hi def link dsdlString String +hi def link dsdlComment Comment +hi def link dsdlTodo Todo +hi def link dsdlStatement Statement +hi def link dsdlAttribute Tag + +let b:current_syntax = "dsdl" |