aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuf Bera Ertan2021-08-18 10:54:47 +0000
committerBlaž Hrastnik2021-08-19 00:54:14 +0000
commit4b45f27a13500bd5f85d11e2e3bcda49bfdd065c (patch)
tree3da84f41e5df60da71752ba69df254f7d27a4bb7
parent1158fc44870ba21e8dabf3547f89a3be9ddaa286 (diff)
feat: add protobuf tree-sitter parser with highlighting queries
-rw-r--r--.gitmodules4
m---------helix-syntax/languages/tree-sitter-protobuf0
-rw-r--r--languages.toml10
-rw-r--r--runtime/queries/protobuf/highlights.scm60
4 files changed, 74 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
index a1c0589e..e750198a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -98,3 +98,7 @@
path = helix-syntax/languages/tree-sitter-ledger
url = https://github.com/cbarrete/tree-sitter-ledger
shallow = true
+[submodule "helix-syntax/languages/tree-sitter-protobuf"]
+ path = helix-syntax/languages/tree-sitter-protobuf
+ url = https://github.com/yusdacra/tree-sitter-protobuf.git
+ shallow = true
diff --git a/helix-syntax/languages/tree-sitter-protobuf b/helix-syntax/languages/tree-sitter-protobuf
new file mode 160000
+Subproject a835f2568a8a8cbb7d9c02f2e8bcf98efa745d4
diff --git a/languages.toml b/languages.toml
index 480f2a3e..47155523 100644
--- a/languages.toml
+++ b/languages.toml
@@ -31,6 +31,16 @@ comment-token = "#"
indent = { tab-width = 2, unit = " " }
[[language]]
+name = "protobuf"
+scope = "source.proto"
+injection-regex = "protobuf"
+file-types = ["proto"]
+roots = []
+comment-token = "//"
+
+indent = { tab-width = 2, unit = " " }
+
+[[language]]
name = "elixir"
scope = "source.elixir"
injection-regex = "elixir"
diff --git a/runtime/queries/protobuf/highlights.scm b/runtime/queries/protobuf/highlights.scm
new file mode 100644
index 00000000..4597dd5a
--- /dev/null
+++ b/runtime/queries/protobuf/highlights.scm
@@ -0,0 +1,60 @@
+[
+ "syntax"
+ "package"
+ "option"
+ "import"
+ "service"
+ "rpc"
+ "returns"
+ "message"
+ "enum"
+ "oneof"
+ "repeated"
+ "reserved"
+ "to"
+ "stream"
+ "extend"
+] @keyword
+
+[
+ (keyType)
+ (type)
+] @type.builtin
+
+[
+ (mapName)
+ (oneofName)
+ (enumName)
+ (messageName)
+ (extendName)
+ (serviceName)
+ (rpcName)
+] @type
+
+[
+ (fieldName)
+ (optionName)
+] @property
+(enumVariantName) @type.enum.variant
+
+(fullIdent) @namespace
+
+[
+ (intLit)
+ (floatLit)
+] @number
+(boolLit) @constant.builtin
+(strLit) @string
+
+(constant) @constant
+
+(comment) @comment
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+] @punctuation.bracket \ No newline at end of file