Skip to content

Commit

Permalink
runtime(zserio): add zserio syntax (vim#13005)
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brabandt <[email protected]>
  • Loading branch information
dpelle authored Sep 1, 2023
1 parent 738ce77 commit acb91d3
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions runtime/makemenu.vim
Original file line number Diff line number Diff line change
Expand Up @@ -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, "")

Expand Down
1 change: 1 addition & 0 deletions runtime/synmenu.vim
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,7 @@ an 50.170.390 &Syntax.WXYZ.XFree86\ Config :cal SetSyn("xf86conf")<CR>
an 50.170.410 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
an 50.170.420 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
an 50.170.440 &Syntax.WXYZ.Zimbu :cal SetSyn("zimbu")<CR>
an 50.170.440 &Syntax.WXYZ.Zserio:cal SetSyn("zserio")<CR>

" The End Of The Syntax Menu

Expand Down
112 changes: 112 additions & 0 deletions runtime/syntax/zserio.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
" Vim syntax file
" Language: Zserio
" Maintainer: Dominique Pellé <[email protected]>
" 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

0 comments on commit acb91d3

Please sign in to comment.