Unnamed repository; edit this file 'description' to name the repository.
Add support for textproto language. (#11874)
Sebastian Dörner 2024-11-21
parent 6373027 · commit 3fd7ca3
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml13
-rw-r--r--runtime/queries/textproto/highlights.scm22
-rw-r--r--runtime/queries/textproto/indents.scm11
-rw-r--r--runtime/queries/textproto/textobjects.scm12
5 files changed, 59 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 09f15b37..9308bec8 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -204,6 +204,7 @@
| task | ✓ | | | |
| tcl | ✓ | | ✓ | |
| templ | ✓ | | | `templ` |
+| textproto | ✓ | ✓ | ✓ | |
| tfvars | ✓ | | ✓ | `terraform-ls` |
| thrift | ✓ | | | |
| todotxt | ✓ | | | |
diff --git a/languages.toml b/languages.toml
index f24c70d8..5ad48c0c 100644
--- a/languages.toml
+++ b/languages.toml
@@ -345,6 +345,19 @@ name = "protobuf"
source = { git = "https://github.com/yusdacra/tree-sitter-protobuf", rev = "19c211a01434d9f03efff99f85e19f967591b175"}
[[language]]
+name = "textproto"
+file-types = ["txtpb", "textpb", "textproto"]
+comment-token = "#"
+scope = "source.textproto"
+indent = { tab-width = 2, unit = " " }
+formatter = { command = "txtpbfmt" }
+auto-format = true
+
+[[grammar]]
+name = "textproto"
+source = { git = "https://github.com/PorterAtGoogle/tree-sitter-textproto", rev = "568471b80fd8793d37ed01865d8c2208a9fefd1b"}
+
+[[language]]
name = "elixir"
scope = "source.elixir"
injection-regex = "(elixir|ex)"
diff --git a/runtime/queries/textproto/highlights.scm b/runtime/queries/textproto/highlights.scm
new file mode 100644
index 00000000..766897f4
--- /dev/null
+++ b/runtime/queries/textproto/highlights.scm
@@ -0,0 +1,22 @@
+(string) @string
+
+(field_name) @variable.other.member
+
+(comment) @comment
+
+(number) @constant.numeric
+; covers e.g. booleans and "inf"
+(scalar_value (identifier)) @constant
+; Covers "-inf"
+(scalar_value (signed_identifier)) @constant.numeric
+
+[
+ (open_squiggly)
+ (close_squiggly)
+ (open_square)
+ (close_square)
+ (open_arrow)
+ (close_arrow)
+] @punctuation.bracket
+
+"," @punctuation.delimiter
diff --git a/runtime/queries/textproto/indents.scm b/runtime/queries/textproto/indents.scm
new file mode 100644
index 00000000..ebea3ff3
--- /dev/null
+++ b/runtime/queries/textproto/indents.scm
@@ -0,0 +1,11 @@
+[
+ (message_value)
+ (message_list)
+ (scalar_list)
+] @indent
+
+[
+ (close_arrow)
+ (close_square)
+ (close_squiggly)
+] @outdent
diff --git a/runtime/queries/textproto/textobjects.scm b/runtime/queries/textproto/textobjects.scm
new file mode 100644
index 00000000..9cc428c6
--- /dev/null
+++ b/runtime/queries/textproto/textobjects.scm
@@ -0,0 +1,12 @@
+(message_field
+ (_) @entry.inside) @entry.around
+
+(scalar_field
+ (_) @entry.inside) @entry.around
+
+(message_list
+ (_) @entry.around)
+
+(scalar_list
+ (_) @entry.around)
+