diff --git a/Cargo.lock b/Cargo.lock index ad58e44425..40d594ff42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8729,6 +8729,15 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "tree-sitter-beancount" +version = "2.2.0" +source = "git+https://github.com/polarmutex/tree-sitter-beancount?rev=da1bf8c6eb0ae7a97588affde7227630bcd678b6#da1bf8c6eb0ae7a97588affde7227630bcd678b6" +dependencies = [ + "cc", + "tree-sitter", +] + [[package]] name = "tree-sitter-c" version = "0.20.6" @@ -10369,6 +10378,7 @@ dependencies = [ "toml", "tree-sitter", "tree-sitter-bash", + "tree-sitter-beancount", "tree-sitter-c", "tree-sitter-c-sharp", "tree-sitter-cpp", diff --git a/Cargo.toml b/Cargo.toml index 5a276ef8b3..edfc968ffb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -141,6 +141,7 @@ time = { version = "0.3", features = ["serde", "serde-well-known"] } toml = "0.5" tree-sitter = { version = "0.20", features = ["wasm"] } tree-sitter-bash = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "7331995b19b8f8aba2d5e26deb51d2195c18bc94" } +tree-sitter-beancount = { git = "https://github.com/polarmutex/tree-sitter-beancount", rev = "da1bf8c6eb0ae7a97588affde7227630bcd678b6" } tree-sitter-c = "0.20.1" tree-sitter-c-sharp = { git = "https://github.com/tree-sitter/tree-sitter-c-sharp", rev = "dd5e59721a5f8dae34604060833902b882023aaf" } tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "f44509141e7e483323d2ec178f2d2e6c0fc041c1" } diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index 61df53a9fb..f3ba0825c7 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -108,6 +108,7 @@ thiserror.workspace = true tiny_http = "0.8" toml.workspace = true tree-sitter-bash.workspace = true +tree-sitter-beancount.workspace = true tree-sitter-c-sharp.workspace = true tree-sitter-c.workspace = true tree-sitter-cpp.workspace = true diff --git a/crates/zed/src/languages.rs b/crates/zed/src/languages.rs index 15bd180a2e..248ff3c7fd 100644 --- a/crates/zed/src/languages.rs +++ b/crates/zed/src/languages.rs @@ -67,6 +67,7 @@ pub fn init( }; language("bash", tree_sitter_bash::language(), vec![]); + language("beancount", tree_sitter_beancount::language(), vec![]); language( "c", tree_sitter_c::language(), diff --git a/crates/zed/src/languages/beancount/config.toml b/crates/zed/src/languages/beancount/config.toml new file mode 100644 index 0000000000..722b8a39b7 --- /dev/null +++ b/crates/zed/src/languages/beancount/config.toml @@ -0,0 +1,3 @@ +name = "Beancount" +path_suffixes = ["beancount"] +brackets = [{ start = "\"", end = "\"", close = false, newline = false }] diff --git a/crates/zed/src/languages/beancount/highlights.scm b/crates/zed/src/languages/beancount/highlights.scm new file mode 100644 index 0000000000..87a383ddbf --- /dev/null +++ b/crates/zed/src/languages/beancount/highlights.scm @@ -0,0 +1,21 @@ +(comment) @comment +(headline) @comment +[ + (payee) + (narration) + (string) +] @string + +(number) @number +(date) @function +(currency) @constant +(account) @identifier + +[ + (option) + (include) + (open) + (balance) + (pad) + (close) +] @keyword