summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominique Pellé <dominique.pelle@gmail.com>2023-09-01 23:10:26 +0200
committerGitHub <noreply@github.com>2023-09-01 23:10:26 +0200
commitacb91d3905cfef5eff8edfb76e62a6b6bab1e91e (patch)
tree4b93b1f8370ef5b1fbaced52f99a3296d23b13d5
parent738ce77aa9e4922dd724d1470960285cbb9ab3c2 (diff)
runtime(zserio): add zserio syntax (#13005)
Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--.github/CODEOWNERS1
-rw-r--r--runtime/makemenu.vim1
-rw-r--r--runtime/synmenu.vim1
-rw-r--r--runtime/syntax/zserio.vim112
4 files changed, 115 insertions, 0 deletions
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")<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
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é <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