" File: groovy.vim " Author: Kenneth Benzie (Benie) " Description: Extended groovy syntax for Jenkins DSL. " Highlight shell('') and shell('''''') blocks with the sh filetype. " unlet !b:current_syntax " Highlight batchFile('') and batchFile('''''') blocks with the batch filetype. " syn include @groovyHighlightBatch syntax/batch.vim " syn region groovyHighlightBatch matchgroup=groovyString start="batchFile(\zs'\(''\)\=" end="\(''\)\='\ze)" contains=@groovyHighlightBatch " keyword definitions syn keyword groovyExternal native package syn match groovyExternal "\\(\s\+static\>\)\?" syn keyword groovyError goto const syn keyword groovyConditional if else switch syn keyword groovyRepeat while for do syn keyword groovyBoolean true false syn keyword groovyConstant null syn keyword groovyTypedef this super syn keyword groovyOperator new instanceof syn keyword groovyType boolean char byte short int long float double void Integer Double Date Boolean Float String Array Vector List syn keyword groovyStatement return syn keyword groovyStorageClass static synchronized transient volatile final strictfp serializable syn keyword groovyExceptions throw try catch finally syn keyword groovyAssert assert syn keyword groovyMethodDecl synchronized throws syn keyword groovyClassDecl extends implements interface " To differentiate the keyword class from MyClass.class we use a match here syn match groovyTypedef "\.\s*\"ms=s+1 syn keyword groovyClassDecl enum syn match groovyClassDecl "^class\>" syn match groovyClassDecl "[^.]\s*\"ms=s+1 " syn keyword groovyBranch break continue nextgroup=groovyUserLabelRef skipwhite " syn match groovyUserLabelRef "\k\+" contained syn keyword groovyScopeDecl public protected private abstract syn match groovyNumber "\<\(0[bB][0-1]\+\|0[0-7]*\|0[xX]\x\+\|\d\(\d\|_\d\)*\)[lL]\=\>" syn match groovyNumber "\(\<\d\(\d\|_\d\)*\.\(\d\(\d\|_\d\)*\)\=\|\.\d\(\d\|_\d\)*\)\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\=" syn match groovyNumber "\<\d\(\d\|_\d\)*[eE][-+]\=\d\(\d\|_\d\)*[fFdD]\=\>" syn match groovyNumber "\<\d\(\d\|_\d\)*\([eE][-+]\=\d\(\d\|_\d\)*\)\=[fFdD]\>" syn region groovyComment start='\/\*' end='\*\/' fold syn match groovyComment '\s*\/\/.*$' syn match groovyDelimiter '[()\[\]]' syn region groovyBlock matchgroup=groovyDelimiter start='{' end='}' transparent fold syn match groovyStructure '\w\+\ze\s*{' syn match groovyFunction '\w\+\ze\s*(' syn region groovyIdentifier start='${' end='}' oneline syn region groovyString start=+"+ end=+"+ oneline contains=groovyIdentifier syn region groovyString start=+'+ end=+'+ oneline contains=groovyIdentifier syn region groovyString start=+'''+ end=+'''+ fold contains=groovyIdentifier syn cluster groovySyntax contains=groovyAssert,groovyBlock,groovyBoolean,groovyBranch,groovyClassDecl,groovyComment,groovyConditional,groovyConstant,groovyDelimiter,groovyError,groovyExceptions,groovyExternal,groovyFunction,groovyIdentifier,groovyMethodDecl,groovyNumber,groovyOperator,groovyRepeat,groovyScopeDecl,groovyStatement,groovyStorageClass,groovyString,groovyStructure,groovyType,groovyTypedef,groovyUserLabelRef syn include @groovyShellSyntax syntax/sh.vim unlet b:current_syntax syn region groovyShellSyntax matchgroup=groovyString start=+\('''\|"""\)+ end=+\('''\|"""\)+ contains=@groovyShellSyntax contained syn region groovyShell matchgroup=groovyFunction start='shell\s*\ze(' end='\ze)' fold contains=groovyShellSyntax,groovyDelimiter syn include @groovyBatchSyntax syntax/dosbatch.vim unlet b:current_syntax syn region groovyBatchSyntax matchgroup=groovyString start=+\('''\|"""\)+ end=+\('''\|"""\)+ contains=@groovyBatchSyntax contained syn region groovyBatch matchgroup=groovyFunction start='batchFile\s*\ze(' end='\ze)' fold contains=groovyBatchSyntax,groovyDelimiter syn region groovyBuildFlowSyntax matchgroup=groovyString start=+\('''\|"""\)+ end=+\('''\|"""\)+ contained contains=groovyStructure,groovyFunction,groovyDelimiter,groovyComment,groovyBlock,groovyString,groovyIdentifier,groovyKeywords,@groovySyntax syn region groovyBuildFlow matchgroup=groovyFunction start='buildFlow\s*\ze(' end='\ze)' fold contains=groovyBuildFlowSyntax,groovyDelimiter hi default link groovyAssert Keyword hi default link groovyBoolean Boolean hi default link groovyBranch Conditional hi default link groovyClassDecl Structure hi default link groovyComment Comment hi default link groovyConditional Conditional hi default link groovyConstant Constant hi default link groovyDelimiter Delimiter hi default link groovyError Error hi default link groovyExceptions Exception hi default link groovyExternal Include hi default link groovyFunction Function hi default link groovyIdentifier Identifier hi default link groovyMethodDecl Function hi default link groovyNumber Number hi default link groovyOperator Operator hi default link groovyRepeat Repeat hi default link groovyScopeDecl Keyword hi default link groovyShellDelimiter groovyDelimiter hi default link groovyStatement Statement hi default link groovyStorageClass StorageClass hi default link groovyString String hi default link groovyStructure Structure hi default link groovyType Type hi default link groovyTypedef Typedef hi default link groovyUserLabelRef Label let b:current_syntax = 'groovy'