view runtime/syntax/zserio.vim @ 35039:fbdb6aeca2e2

runtime(java): Improve the recognition of the "style" method declarations Commit: https://github.com/vim/vim/commit/a4c085a3e607bd01d34e1db600b6460fc35fb0a3 Author: Aliaksei Budavei <0x000c70@gmail.com> Date: Wed Apr 24 21:04:25 2024 +0200 runtime(java): Improve the recognition of the "style" method declarations - Request the new regexp engine (v7.3.970) for [:upper:] and [:lower:]. - Recognise declarations of in-line annotated methods. - Recognise declarations of _strictfp_ methods. - Establish partial order for method modifiers as shown in the MethodModifier production; namely, _public_ and friends should be written the leftmost, possibly followed by _abstract_ or _default_, or possibly followed by other modifiers. - Stop looking for parameterisable primitive types (void<?>, int<Object>, etc., are malformed). - Stop looking for arrays of _void_. - Acknowledge the prevailing convention for method names to begin with a small letter and for class/interface names to begin with a capital letter; and, therefore, desist from claiming declarations of enum constants and constructors with javaFuncDef. Rationale: + Constructor is distinct from method: * its (overloaded) name is not arbitrary; * its return type is implicit; * its _throws_ clause depends on indirect vagaries of instance (variable) initialisers; * its invocation makes other constructors of its type hierarchy invoked one by one, concluding with the primordial constructor; * its explicit invocation, via _this_ or _super_, can only appear as the first statement in a constructor (not anymore, see JEP 447); else, its _super_ call cannot appear in constructors of _record_ or _enum_; and neither invocation is allowed for the primordial constructor; * it is not a member of its class, like initialisers, and is never inherited; * it is never _abstract_ or _native_. + Constructor declarations tend to be few in number and merit visual recognition from method declarations. + Enum constants define a fixed set of type instances and more resemble class variable initialisers. Note that the code duplicated for @javaFuncParams is written keeping in mind for g:java_highlight_functions a pending 3rd variant, which would require none of the :syn-cluster added groups. closes: #14620 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 24 Apr 2024 21:15:02 +0200
parents 0fdb758ceec2
children
line wrap: on
line source

" Vim syntax file
" Language:	Zserio
" Maintainer:	Dominique Pellé <dominique.pelle@gmail.com>
" Last Change:	2023 Jun 18
"
" Zserio is a serialization schema language for modeling binary
" data types, bitstreams or file formats. Based on the zserio
" language it is possible to automatically generate encoders and
" decoders for a given schema in various target languages
" (e.g. Java, C++, Python).
"
" Zserio is an evolution of the DataScript language.
"
" For more information, see:
" - http://zserio.org/
" - https://github.com/ndsev/zserio

" quit when a syntax file was already loaded
if exists("b:current_syntax")
  finish
endif

let s:keepcpo= &cpo
set cpo&vim

syn case match

syn keyword zserioPackage      import package zserio_compatibility_version
syn keyword zserioType         bit bool string
syn keyword zserioType         int int8 int16 int32 int64
syn keyword zserioType         uint8 uint16 uint32 uint64
syn keyword zserioType         float16 float32 float64
syn keyword zserioType         varint varint16 varint32 varint64
syn keyword zserioType         varuint varsize varuint16 varuint32 varuint64
syn keyword zserioAlign        align
syn keyword zserioLabel        case default
syn keyword zserioConditional  if condition
syn keyword zserioBoolean      true false
syn keyword zserioCompound     struct union choice on enum bitmask subtype
syn keyword zserioKeyword      function return
syn keyword zserioOperator     lengthof valueof instanceof numbits isset
syn keyword zserioRpc          service pubsub topic publish subscribe
syn keyword zserioRule         rule_group rule
syn keyword zserioStorageClass const implicit packed instantiate
syn keyword zserioTodo         contained TODO FIXME XXX
syn keyword zserioSql          sql sql_table sql_database sql_virtual sql_without_rowid
syn keyword zserioSql          explicit using

" zserioCommentGroup allows adding matches for special things in comments.
syn cluster zserioCommentGroup  contains=zserioTodo

syn match   zserioOffset        display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"

syn match   zserioNumber        display "\<\d\+\>"
syn match   zserioNumberHex     display "\<0[xX]\x\+\>"
syn match   zserioNumberBin     display "\<[01]\+[bB]\>" contains=zserioBinaryB
syn match   zserioBinaryB       display contained "[bB]\>"
syn match   zserioOctal         display "\<0\o\+\>" contains=zserioOctalZero
syn match   zserioOctalZero     display contained "\<0"

syn match   zserioOctalError    display "\<0\o*[89]\d*\>"

syn match   zserioCommentError      display "\*/"
syn match   zserioCommentStartError display "/\*"me=e-1 contained

syn region   zserioCommentL
  \ start="//" skip="\\$" end="$" keepend
  \ contains=@zserioCommentGroup,@Spell
syn region   zserioComment
  \ matchgroup=zserioCommentStart start="/\*" end="\*/"
  \ contains=@zserioCommentGroup,zserioCommentStartError,@Spell extend

syn region  zserioString
  \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell

syn sync ccomment zserioComment

" Define the default highlighting.
hi def link zserioType              Type
hi def link zserioEndian            StorageClass
hi def link zserioStorageClass      StorageClass
hi def link zserioAlign             Label
hi def link zserioLabel             Label
hi def link zserioOffset            Label
hi def link zserioSql               PreProc
hi def link zserioCompound          Structure
hi def link zserioConditional       Conditional
hi def link zserioBoolean           Boolean
hi def link zserioKeyword           Statement
hi def link zserioRpc               Keyword
hi def link zserioRule              Keyword
hi def link zserioString            String
hi def link zserioNumber            Number
hi def link zserioNumberBin         Number
hi def link zserioBinaryB           Special
hi def link zserioOctal             Number
hi def link zserioOctalZero         Special
hi def link zserioOctalError        Error
hi def link zserioNumberHex         Number
hi def link zserioTodo              Todo
hi def link zserioOperator          Operator
hi def link zserioPackage           Include
hi def link zserioCommentError      Error
hi def link zserioCommentStartError Error
hi def link zserioCommentStart      zserioComment
hi def link zserioCommentL          zserioComment
hi def link zserioComment           Comment

let b:current_syntax = "zserio"

let &cpo = s:keepcpo
unlet s:keepcpo