Add Treesitter Protobuf support

This commit is contained in:
Miguel Pérez Pasalodos 2022-08-29 14:38:51 +02:00
parent 82c84bbf60
commit 1ce27f20b8
5 changed files with 65 additions and 0 deletions

View file

@ -135,6 +135,7 @@ automatically fetch symbols from treesitter.
- norg
- org
- php
- proto
- python
- rst
- ruby

View file

@ -90,6 +90,10 @@ return {
method_declaration = "Method",
trait_declaration = "Class",
},
proto = {
message = "Class",
enum = "Enum",
},
python = {
function_definition = "Function",
class_definition = "Class",

7
queries/proto/aerial.scm Normal file
View file

@ -0,0 +1,7 @@
(message
(message_name) @name
) @type
(enum
(enum_name) @name
) @type

View file

@ -0,0 +1,37 @@
local util = require("tests.test_util")
describe("treesitter proto", function()
it("parses all symbols correctly", function()
util.test_file_symbols("treesitter", "./tests/treesitter/proto_test.proto", {
{
kind = "Class",
name = "MessageA",
level = 0,
lnum = 3,
col = 0,
end_lnum = 11,
end_col = 1,
children = {
{
kind = "Enum",
name = "Number",
level = 1,
lnum = 7,
col = 2,
end_lnum = 10,
end_col = 3,
},
},
},
{
kind = "Class",
name = "MessageB",
level = 0,
lnum = 13,
col = 0,
end_lnum = 16,
end_col = 1,
},
})
end)
end)

View file

@ -0,0 +1,16 @@
syntax = "proto3";
message MessageA {
string foo = 1;
Number bar = 2;
enum Number {
ONE = 1;
TWO = 2;
}
}
message MessageB {
string foo = 1;
int32 bar = 2;
}