From acb91d3905cfef5eff8edfb76e62a6b6bab1e91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Pell=C3=A9?= Date: Fri, 1 Sep 2023 23:10:26 +0200 Subject: runtime(zserio): add zserio syntax (#13005) Signed-off-by: Christian Brabandt --- .github/CODEOWNERS | 1 + runtime/makemenu.vim | 1 + runtime/synmenu.vim | 1 + runtime/syntax/zserio.vim | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 runtime/syntax/zserio.vim diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0cde2772c5..916c0fef42 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -516,6 +516,7 @@ runtime/syntax/xs.vim @petdance runtime/syntax/xslt.vim @Boobies runtime/syntax/xxd.vim @cecamp runtime/syntax/yacc.vim @cecamp +runtime/syntax/zserio.vim @dpelle runtime/syntax/zsh.vim @chrisbra runtime/tutor/tutor.eo @dpelle runtime/tutor/tutor.eo.utf-8 @dpelle diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 4dfd2cc791..4de9d48233 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -678,6 +678,7 @@ SynMenu WXYZ.XFree86\ Config:xf86conf SynMenu WXYZ.YAML:yaml SynMenu WXYZ.Yacc:yacc SynMenu WXYZ.Zimbu:zimbu +SynMenu WXYZ.Zserio:zserio append(lnum, "") diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index 9a6ec997d3..5251045a96 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -645,6 +645,7 @@ an 50.170.390 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf") an 50.170.410 &Syntax.WXYZ.YAML :cal SetSyn("yaml") an 50.170.420 &Syntax.WXYZ.Yacc :cal SetSyn("yacc") an 50.170.440 &Syntax.WXYZ.Zimbu :cal SetSyn("zimbu") +an 50.170.440 &Syntax.WXYZ.Zserio:cal SetSyn("zserio") " The End Of The Syntax Menu diff --git a/runtime/syntax/zserio.vim b/runtime/syntax/zserio.vim new file mode 100644 index 0000000000..5459915c01 --- /dev/null +++ b/runtime/syntax/zserio.vim @@ -0,0 +1,112 @@ +" Vim syntax file +" Language: Zserio +" Maintainer: Dominique Pellé +" 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 -- cgit v1.2.3