Add some additional support for Java syntax

It modifies the 'import' statement by fixing some bugs and adding some
new support.

Plus enum values and classes used with the dot operator are also now
highlighted.
This commit is contained in:
Ludovic Koenig
2019-08-02 07:37:18 +02:00
2 changed files with 44 additions and 32 deletions
+21 -15
View File
@@ -17,21 +17,27 @@
"
" Java Syntax {{{
syntax keyword javaOdysseyThis this
syntax match javaOdysseyArrow "->" containedin=javaParenT,javaParenT1,javaParenT2
syntax match javaOdysseyClass "\%(\<class\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyInterface "\%(\<interface\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyEnum "\%(\<enum\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyArray "\[\]" contained
syntax match javaOdysseyGeneric "[><]" contained
syntax match javaOdysseySeparator "," contained
syntax match javaOdysseyType "\%(\<\u\w*\>\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=\%(\[\]\)\=\)\%(\s*\<\l\w*\>\)\@=" containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseyArray,javaOdysseySeparator
syntax match javaOdysseyConstructor "\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=\%((\|\[\)"me=e-1 containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseySeparator
syntax match javaOdysseyMethod "\<\l\w*\>("me=e-1 containedin=javaParenT,javaParenT1,javaParenT2
syntax match javaOdysseyCasting "(\<\u\w*\>\%(<\%(\u\w*\|,\|\s\|<\|>\)\+>\)\=\%(\[\]\)\=)"hs=s+1,he=e-1 containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseyArray,javaOdysseySeparator
syntax match javaOdysseyImport "\%(\<import\>\s\+\%(\l\+.\)\+\)\@<=\%(\u\w*\)\s*;"
syntax match javaOdysseyExtends "\%(\<extends\>\s\+\)\@<=\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=" contains=javaOdysseyGeneric,javaOdysseySeparator
syntax match javaOdysseyImplements "\%(\<implements\>\s\+\)\@<=\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=" contains=javaOdysseyGeneric,javaOdysseySeparator
syntax keyword javaOdysseyThis this
syntax keyword javaOdysseyLombok val var
syntax match javaOdysseyArrow "->" containedin=javaParenT,javaParenT1,javaParenT2
syntax match javaOdysseyClass "\%(\<class\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyInterface "\%(\<interface\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyEnum "\%(\<enum\>\s\+\)\@<=\<\u\w*\>"
syntax match javaOdysseyArray "\[\]" contained
syntax match javaOdysseyGeneric "[><]" contained
syntax match javaOdysseySeparator "," contained
syntax match javaOdysseyType "\%(\<\u\w*\>\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=\%(\[\]\)\=\)\%(\s*\<\l\w*\>\)\@=" containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseyArray,javaOdysseySeparator
syntax match javaOdysseyConstructor "\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=\%((\|\[\)"me=e-1 containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseySeparator
syntax match javaOdysseyMethod "\<\l\w*\>("me=e-1 containedin=javaParenT,javaParenT1,javaParenT2
syntax match javaOdysseyCasting "(\<\u\w*\>\%(<\%(\u\w*\|,\|\s\|<\|>\)\+>\)\=\%(\[\]\)\=)"hs=s+1,he=e-1 containedin=javaParenT,javaParenT1,javaParenT2 contains=javaOdysseyGeneric,javaOdysseyArray,javaOdysseySeparator
syntax match javaOdysseyImport "\%(\<import\>\s\+\%(\l\+\.\)\+\)\@<=\%(\u\w*\)\%(\s*;\)\@="
syntax match javaOdysseyStaticMethod "\%(\<import\>\s\+\<static\>\s\+\%(\w\+\.\)\+\)\@<=\%(\l\w*\)\%(\s*;\)\@="
syntax match javaOdysseyStaticClass "\%(\<import\>\s\+\<static\>\s\+\%(\w\+\.\)\+\)\@<=\%(\u\w*\)\%(\s*;\)\@="
syntax match javaOdysseyExtends "\%(\<extends\>\s\+\)\@<=\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=" contains=javaOdysseyGeneric,javaOdysseySeparator
syntax match javaOdysseyImplements "\%(\<implements\>\s\+\)\@<=\%(\<\u\w*\>\)\%(<\%(\u\w*\|,\|\s\|<\|>\)*>\)\=" contains=javaOdysseyGeneric,javaOdysseySeparator
syntax match javaOdysseyDottedClass "\<\u\w*\>\."me=e-1 containedin=javaParenT,javaParenT1,javaParenT2
syntax match javaOdysseyEnumValue "\<[A-Z][_A-Z0-9]\+\>" containedin=javaParenT,javaParenT1,javaParenT2,javaLabelRegion
syntax match javaOdysseyEnumConstructor "\<[A-Z][_A-Z0-9]\+\>("me=e-1 containedin=javaParenT,javaParenT1,javaParenT2
" }}}
" vim: foldmethod=marker
+23 -17
View File
@@ -258,23 +258,29 @@ call s:h( 'Todo', 'background', 'warning', 'bold')
" }}}
" Java Highlights {{{
call s:h( 'javaAnnotation', 'background', 'warning', 'italic')
call s:l( 'javaExternal', 'Statement')
call s:l( 'javaTypeDef', 'javaOdysseyThis')
call s:l( 'javaOdysseyClass', 'Type')
call s:l( 'javaOdysseyInterface', 'Type')
call s:l( 'javaOdysseyEnum', 'Type')
call s:l( 'javaOdysseyCasting', 'Type')
call s:l( 'javaOdysseyImport', 'Type')
call s:l( 'javaOdysseyExtends', 'Type')
call s:l( 'javaOdysseyImplements', 'Type')
call s:l( 'javaOdysseyArray', 'Normal')
call s:l( 'javaOdysseyGeneric', 'Normal')
call s:l( 'javaOdysseyType', 'Type')
call s:l('javaOdysseyConstructor', 'Type')
call s:l( 'javaOdysseyMethod', 'Function')
call s:l( 'javaOdysseyThis', 'Special')
call s:l( 'javaOdysseyArrow', 'Operator')
call s:h( 'javaAnnotation', 'background', 'warning', 'italic')
call s:l( 'javaExternal', 'Statement')
call s:l( 'javaTypeDef', 'javaOdysseyThis')
call s:l( 'javaOdysseyClass', 'Type')
call s:l( 'javaOdysseyDottedClass', 'Type')
call s:l( 'javaOdysseyInterface', 'Type')
call s:l( 'javaOdysseyEnum', 'Type')
call s:l( 'javaOdysseyCasting', 'Type')
call s:l( 'javaOdysseyImport', 'Type')
call s:l( 'javaOdysseyStaticMethod', 'Function')
call s:l( 'javaOdysseyStaticClass', 'Type')
call s:l( 'javaOdysseyExtends', 'Type')
call s:l( 'javaOdysseyImplements', 'Type')
call s:l( 'javaOdysseyArray', 'Normal')
call s:l( 'javaOdysseyGeneric', 'Normal')
call s:l( 'javaOdysseyType', 'Type')
call s:l( 'javaOdysseyConstructor', 'Type')
call s:l( 'javaOdysseyMethod', 'Function')
call s:l( 'javaOdysseyThis', 'Special')
call s:l( 'javaOdysseyArrow', 'Operator')
call s:l( 'javaOdysseyLombok', 'Statement')
call s:l( 'javaOdysseyEnumValue', 'Constant')
call s:l('javaOdysseyEnumConstructor', 'Constant')
" }}}
" Ruby Highlights {{{