Add protobuf support (#6748)
Release Notes: - Added protobuf syntax highlighting ([#5160](https://github.com/zed-industries/zed/issues/5160)).
This commit is contained in:
parent
dfbcaf36fc
commit
7bfa584eb6
8 changed files with 109 additions and 0 deletions
10
Cargo.lock
generated
10
Cargo.lock
generated
|
@ -8665,6 +8665,15 @@ dependencies = [
|
||||||
"tree-sitter",
|
"tree-sitter",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tree-sitter-proto"
|
||||||
|
version = "0.0.2"
|
||||||
|
source = "git+https://github.com/rewinfrey/tree-sitter-proto?rev=36d54f288aee112f13a67b550ad32634d0c2cb52#36d54f288aee112f13a67b550ad32634d0c2cb52"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"tree-sitter",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tree-sitter-purescript"
|
name = "tree-sitter-purescript"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -9876,6 +9885,7 @@ dependencies = [
|
||||||
"tree-sitter-nix",
|
"tree-sitter-nix",
|
||||||
"tree-sitter-nu",
|
"tree-sitter-nu",
|
||||||
"tree-sitter-php",
|
"tree-sitter-php",
|
||||||
|
"tree-sitter-proto",
|
||||||
"tree-sitter-purescript",
|
"tree-sitter-purescript",
|
||||||
"tree-sitter-python",
|
"tree-sitter-python",
|
||||||
"tree-sitter-racket",
|
"tree-sitter-racket",
|
||||||
|
|
|
@ -149,6 +149,7 @@ tree-sitter-json = { git = "https://github.com/tree-sitter/tree-sitter-json", re
|
||||||
tree-sitter-rust = "0.20.3"
|
tree-sitter-rust = "0.20.3"
|
||||||
tree-sitter-markdown = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "330ecab87a3e3a7211ac69bbadc19eabecdb1cca" }
|
tree-sitter-markdown = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "330ecab87a3e3a7211ac69bbadc19eabecdb1cca" }
|
||||||
tree-sitter-php = "0.21.1"
|
tree-sitter-php = "0.21.1"
|
||||||
|
tree-sitter-proto = {git = "https://github.com/rewinfrey/tree-sitter-proto", rev = "36d54f288aee112f13a67b550ad32634d0c2cb52"}
|
||||||
tree-sitter-purescript = { git = "https://github.com/ivanmoreau/tree-sitter-purescript", rev = "a37140f0c7034977b90faa73c94fcb8a5e45ed08" }
|
tree-sitter-purescript = { git = "https://github.com/ivanmoreau/tree-sitter-purescript", rev = "a37140f0c7034977b90faa73c94fcb8a5e45ed08" }
|
||||||
tree-sitter-python = "0.20.2"
|
tree-sitter-python = "0.20.2"
|
||||||
tree-sitter-toml = { git = "https://github.com/tree-sitter/tree-sitter-toml", rev = "342d9be207c2dba869b9967124c679b5e6fd0ebe" }
|
tree-sitter-toml = { git = "https://github.com/tree-sitter/tree-sitter-toml", rev = "342d9be207c2dba869b9967124c679b5e6fd0ebe" }
|
||||||
|
|
|
@ -127,6 +127,7 @@ tree-sitter-heex.workspace = true
|
||||||
tree-sitter-json.workspace = true
|
tree-sitter-json.workspace = true
|
||||||
tree-sitter-rust.workspace = true
|
tree-sitter-rust.workspace = true
|
||||||
tree-sitter-markdown.workspace = true
|
tree-sitter-markdown.workspace = true
|
||||||
|
tree-sitter-proto.workspace = true
|
||||||
tree-sitter-python.workspace = true
|
tree-sitter-python.workspace = true
|
||||||
tree-sitter-toml.workspace = true
|
tree-sitter-toml.workspace = true
|
||||||
tree-sitter-typescript.workspace = true
|
tree-sitter-typescript.workspace = true
|
||||||
|
|
|
@ -295,6 +295,7 @@ pub fn init(
|
||||||
tree_sitter_uiua::language(),
|
tree_sitter_uiua::language(),
|
||||||
vec![Arc::new(uiua::UiuaLanguageServer {})],
|
vec![Arc::new(uiua::UiuaLanguageServer {})],
|
||||||
);
|
);
|
||||||
|
language("proto", tree_sitter_proto::language(), vec![]);
|
||||||
|
|
||||||
if let Ok(children) = std::fs::read_dir(&*PLUGINS_DIR) {
|
if let Ok(children) = std::fs::read_dir(&*PLUGINS_DIR) {
|
||||||
for child in children {
|
for child in children {
|
||||||
|
|
12
crates/zed/src/languages/proto/config.toml
Normal file
12
crates/zed/src/languages/proto/config.toml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
name = "proto"
|
||||||
|
path_suffixes = ["proto"]
|
||||||
|
line_comments = ["// "]
|
||||||
|
autoclose_before = ";:.,=}])>"
|
||||||
|
brackets = [
|
||||||
|
{ start = "{", end = "}", close = true, newline = true },
|
||||||
|
{ start = "[", end = "]", close = true, newline = true },
|
||||||
|
{ start = "(", end = ")", close = true, newline = true },
|
||||||
|
{ start = "\"", end = "\"", close = true, newline = false, not_in = ["comment", "string"] },
|
||||||
|
{ start = "'", end = "'", close = true, newline = false, not_in = ["comment", "string"] },
|
||||||
|
{ start = "/*", end = " */", close = true, newline = false, not_in = ["comment", "string"] },
|
||||||
|
]
|
61
crates/zed/src/languages/proto/highlights.scm
Normal file
61
crates/zed/src/languages/proto/highlights.scm
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
[
|
||||||
|
"syntax"
|
||||||
|
"package"
|
||||||
|
"option"
|
||||||
|
"optional"
|
||||||
|
"import"
|
||||||
|
"service"
|
||||||
|
"rpc"
|
||||||
|
"returns"
|
||||||
|
"message"
|
||||||
|
"enum"
|
||||||
|
"oneof"
|
||||||
|
"repeated"
|
||||||
|
"reserved"
|
||||||
|
"to"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
|
[
|
||||||
|
(key_type)
|
||||||
|
(type)
|
||||||
|
(message_name)
|
||||||
|
(enum_name)
|
||||||
|
(service_name)
|
||||||
|
(rpc_name)
|
||||||
|
(message_or_enum_type)
|
||||||
|
] @type
|
||||||
|
|
||||||
|
(enum_field
|
||||||
|
(identifier) @constant)
|
||||||
|
|
||||||
|
[
|
||||||
|
(string)
|
||||||
|
"\"proto3\""
|
||||||
|
] @string
|
||||||
|
|
||||||
|
(int_lit) @number
|
||||||
|
|
||||||
|
[
|
||||||
|
(true)
|
||||||
|
(false)
|
||||||
|
] @boolean
|
||||||
|
|
||||||
|
(comment) @comment
|
||||||
|
|
||||||
|
[
|
||||||
|
"("
|
||||||
|
")"
|
||||||
|
"["
|
||||||
|
"]"
|
||||||
|
"{"
|
||||||
|
"}"
|
||||||
|
"<"
|
||||||
|
">"
|
||||||
|
] @punctuation.bracket
|
||||||
|
|
||||||
|
[
|
||||||
|
";"
|
||||||
|
","
|
||||||
|
] @punctuation.delimiter
|
||||||
|
|
||||||
|
"=" @operator
|
19
crates/zed/src/languages/proto/outline.scm
Normal file
19
crates/zed/src/languages/proto/outline.scm
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
(message
|
||||||
|
"message" @context
|
||||||
|
(message_name
|
||||||
|
(identifier) @name)) @item
|
||||||
|
|
||||||
|
(service
|
||||||
|
"service" @context
|
||||||
|
(service_name
|
||||||
|
(identifier) @name)) @item
|
||||||
|
|
||||||
|
(rpc
|
||||||
|
"rpc" @context
|
||||||
|
(rpc_name
|
||||||
|
(identifier) @name)) @item
|
||||||
|
|
||||||
|
(enum
|
||||||
|
"enum" @context
|
||||||
|
(enum_name
|
||||||
|
(identifier) @name)) @item
|
4
docs/src/languages/proto.md
Normal file
4
docs/src/languages/proto.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Proto
|
||||||
|
|
||||||
|
- Tree-Sitter: [tree-sitter-proto](https://github.com/rewinfrey/tree-sitter-proto)
|
||||||
|
- Language-Server: N/A
|
Loading…
Add table
Add a link
Reference in a new issue