summaryrefslogtreecommitdiffstats
path: root/syntax/dsdl.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/dsdl.vim')
-rw-r--r--syntax/dsdl.vim94
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"