From ccc214436c0a6f53d1315d87b5c3a8c035751234 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Wed, 24 May 2017 10:37:30 +0100 Subject: [PATCH] Improve groovy syntax highlighting --- syntax/groovy.vim | 88 +++++++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/syntax/groovy.vim b/syntax/groovy.vim index fe61f91..ef5257c 100644 --- a/syntax/groovy.vim +++ b/syntax/groovy.vim @@ -10,63 +10,85 @@ " 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 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 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 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 groovyBatchSyntax matchgroup=groovyString start=+\('''\|"""\)+ end=+\('''\|"""\)+ contains=@groovyBatchSyntax contained syn region groovyBatch matchgroup=groovyFunction start='batchFile\s*\ze(' end='\ze)' fold contains=groovyBatchSyntax,groovyDelimiter -hi default link groovyDelimiter Delimiter +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 groovyIdentifier Identifier -hi default link groovyFunction Function -hi default link groovyShellDelimiter groovyDelimiter +hi default link groovyType Type +hi default link groovyTypedef Typedef +hi default link groovyUserLabelRef Label let b:current_syntax = 'groovy'