From fb60ea759a1aea8d19cf23214606e70283ac322b Mon Sep 17 00:00:00 2001 From: Stefan VanBuren Date: Fri, 13 Mar 2026 10:40:11 -0400 Subject: [PATCH] feat(proto): sync highlights with upstream Syncs with coder3101/tree-sitter-proto#22, which adjusts captures to better align with nvim-treesitter conventions: - Package idents use @module, extend/oneof idents use @type - Adds map_field, oneof_field @property captures - option/syntax/edition use @keyword.directive - extend/extensions/oneof/service moved to @keyword.type - key_type/type use @type.builtin; rpc_name uses @function.method - Import paths use @string.special.path - proto2/proto3 syntax strings use @string.special.symbol - Simplifies comment captures (removes doc comment distinction) Honestly not sure how well other tree-sitter clients handle the nvim-specific highlights, but I figure this is the primary client I'm (at least personally) concerned about. --- runtime/queries/proto/highlights.scm | 53 ++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/runtime/queries/proto/highlights.scm b/runtime/queries/proto/highlights.scm index 22df9002f..9175d8ebc 100644 --- a/runtime/queries/proto/highlights.scm +++ b/runtime/queries/proto/highlights.scm @@ -1,13 +1,27 @@ -(full_ident - (identifier) @variable) +(package + (full_ident + (identifier) @module)) -(full_ident - (identifier) - (identifier) @variable.member) +(extend + (full_ident + (identifier) @type)) + +(constant + (full_ident + (identifier) @constant)) (field (identifier) @property) +(map_field + (identifier) @property) + +(oneof + (identifier) @type) + +(oneof_field + (identifier) @property) + (field_option (identifier) @property) @@ -18,23 +32,26 @@ (identifier) @property) [ - "extend" - "extensions" - "oneof" "option" - "reserved" "syntax" "edition" +] @keyword.directive + +[ + "reserved" "to" "max" ] @keyword [ "enum" + "extend" + "extensions" "group" - "service" "message" "map" + "oneof" + "service" ] @keyword.type "rpc" @keyword.function @@ -60,22 +77,29 @@ [ (key_type) (type) +] @type.builtin + +[ (message_name) (enum_name) (service_name) - (rpc_name) (message_or_enum_type) ] @type +(rpc_name) @function.method + (enum_field (identifier) @constant) (string) @string +(import + path: (string) @string.special.path) + [ "\"proto3\"" "\"proto2\"" -] @string.special +] @string.special.symbol (escape_sequence) @string.escape @@ -88,10 +112,9 @@ (false) ] @boolean -(comment) @comment @spell +(comment) @spell -((comment) @comment.documentation - (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$")) +(comment) @comment [ "("