Commit: runtime(bpftrace): add base syntax plugin

0 views
Skip to first unread message

Christian Brabandt

unread,
2:00 PM (7 hours ago) 2:00 PM
to vim...@googlegroups.com
runtime(bpftrace): add base syntax plugin

Commit: https://github.com/vim/vim/commit/7982966f3e3f23f3b45639407be92ea5d926d492
Author: Stanislaw Gruszka <stf...@wp.pl>
Date: Mon Dec 22 18:46:44 2025 +0000

runtime(bpftrace): add base syntax plugin

Problem: No syntax highlighting for bpftrace files.
Solution: Add basic syntax rules, which cover comments, keywords, strings,
numbers, macros and probes (the bpftrace specific items).

closes: #18999

Signed-off-by: Stanislaw Gruszka <stf...@wp.pl>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS
index 809664441..64ec25726 100644
--- a/.github/MAINTAINERS
+++ b/.github/MAINTAINERS
@@ -454,6 +454,7 @@ runtime/syntax/asy.vim @avidseeker
runtime/syntax/autohotkey.vim @mmikeww
runtime/syntax/awk.vim @dkearns
runtime/syntax/basic.vim @dkearns
+runtime/syntax/bpftrace.vim @sgruszka
runtime/syntax/bst.vim @tpope
runtime/syntax/bzl.vim @dbarnett
runtime/syntax/bzr.vim @hdima
diff --git a/runtime/syntax/bpftrace.vim b/runtime/syntax/bpftrace.vim
new file mode 100644
index 000000000..4e23bcbde
--- /dev/null
+++ b/runtime/syntax/bpftrace.vim
@@ -0,0 +1,66 @@
+" Vim syntax file
+" Language: bpftrace
+" Maintainer: Stanislaw Gruszka <stf...@wp.pl>
+" Last Change: 2025 Dec 22
+
+" Quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword bpftraceConditional if else
+syn keyword bpftraceRepeat while for unroll
+syn keyword bpftraceStatement break continue return
+syn keyword bpftraceKeyword let macro import config
+syn keyword bpftraceOperator sizeof offsetof
+
+syn keyword bpftraceProbe BEGIN END begin end
+syn match bpftraceProbe " <(bench|self|test)\ze:"
+syn match bpftraceProbe " <(fentry|fexit|kfunc|kretfunc|kprobe|kretprobe)\ze:"
+syn match bpftraceProbe " <(profile|interval|iterator|hardware|software|uprobe|uretprobe)\ze:"
+syn match bpftraceProbe " <(usdt|tracepoint|rawtracepoint|watchpoint|asyncwatchpoint)\ze:"
+syn match bpftraceProbe " (^|[^:])<\zs(h|i|it|f|fr|k|kr|p|rt|s|t|u|ur|U|w|aw)\ze:"
+
+syn keyword bpftraceType bool int8 int16 int32 int64
+syn keyword bpftraceType uint8 uint16 uint32 uint64
+syn keyword bpftraceType struct
+
+syn match bpftraceMacro "\<\h\w*\ze\_s*("
+
+syn match bpftraceNumber display "[+-]\=\<\d\+\>"
+syn match bpftraceNumber display "\<0x\x\+\>"
+
+syn keyword bpftraceBoolean true false
+
+syn region bpftraceString start=+"+ skip=+\\\|\"+ end=+"+ contains=@Spell extend
+
+syn keyword bpftraceTodo contained TODO FIXME XXX
+syn match bpftraceShebang /\%^#![^[].*/
+syn region bpftraceCommentLine start="//" end="$" contains=bpftraceTodo,@Spell
+syn region bpftraceCommentBlock matchgroup=bpftraceCommentBlock start="/\*" end="\*/" contains=bpftraceTodo,@Spell
+
+" Define the default highlighting.
+hi def link bpftraceConditional Conditional
+hi def link bpftraceMacro Macro
+hi def link bpftraceRepeat Repeat
+hi def link bpftraceKeyword Keyword
+hi def link bpftraceNumber Number
+hi def link bpftraceBoolean Boolean
+hi def link bpftraceShebang Comment
+hi def link bpftraceCommentLine Comment
+hi def link bpftraceCommentBlock Comment
+hi def link bpftraceString String
+hi def link bpftraceType Type
+hi def link bpftraceProbe Identifier
+
+syn sync minlines=100
+
+let b:current_syntax = "bpftrace"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+" vim: ts=8 sw=8 noexpandtab
Reply all
Reply to author
Forward
0 new messages