From 4ce5a94552d887b9b14000dfdd1abe76a6d5f315 Mon Sep 17 00:00:00 2001 From: "Kyle L. Davis" Date: Mon, 8 Aug 2022 17:59:55 -0500 Subject: [PATCH] Add language: beancount (#3297) Co-authored-by: erasin Co-authored-by: Michael Davis Co-authored-by: Erasin --- book/src/generated/lang-support.md | 1 + languages.toml | 13 +++++++ runtime/queries/beancount/folds.scm | 4 ++ runtime/queries/beancount/highlights.scm | 49 ++++++++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 runtime/queries/beancount/folds.scm create mode 100644 runtime/queries/beancount/highlights.scm diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index a79f79f02..432efb785 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -1,6 +1,7 @@ | Language | Syntax Highlighting | Treesitter Textobjects | Auto Indent | Default LSP | | --- | --- | --- | --- | --- | | bash | ✓ | | | `bash-language-server` | +| beancount | ✓ | | | | | c | ✓ | ✓ | ✓ | `clangd` | | c-sharp | ✓ | | | `OmniSharp` | | cairo | ✓ | | | | diff --git a/languages.toml b/languages.toml index 287d45348..c1f197aad 100644 --- a/languages.toml +++ b/languages.toml @@ -599,6 +599,19 @@ indent = { tab-width = 4, unit = " " } name = "ledger" source = { git = "https://github.com/cbarrete/tree-sitter-ledger", rev = "1f864fb2bf6a87fe1b48545cc6adc6d23090adf7" } +[[language]] +name = "beancount" +scope = "source.beancount" +injection-regex = "beancount" +file-types = ["beancount", "bean"] +roots = [] +comment-token = ";" +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "beancount" +source = { git = "https://github.com/polarmutex/tree-sitter-beancount", rev = "4cbd1f09cd07c1f1fabf867c2cf354f9da53cc4c" } + [[language]] name = "ocaml" scope = "source.ocaml" diff --git a/runtime/queries/beancount/folds.scm b/runtime/queries/beancount/folds.scm new file mode 100644 index 000000000..9f1b6cbed --- /dev/null +++ b/runtime/queries/beancount/folds.scm @@ -0,0 +1,4 @@ +[ + (transaction) + (section) +] @fold diff --git a/runtime/queries/beancount/highlights.scm b/runtime/queries/beancount/highlights.scm new file mode 100644 index 000000000..440a5782f --- /dev/null +++ b/runtime/queries/beancount/highlights.scm @@ -0,0 +1,49 @@ +(date) @variable.builtin +(txn) @variable.builtin + +(account) @type + +[ + (amount) + (incomplete_amount) + (amount_tolerance) + (number) +] @constant.numeric + + +[(key_value) (key)] @variable.other.member +(string) @string + +[ + (currency) + (tag) + (link) +] @constant + +(comment) @comment + +[ + (minus) + (plus) +] @operator + +[ + (balance) (open) (close) (commodity) (pad) + (event) (price) (note) (document) (query) + (custom) (pushtag) (poptag) (pushmeta) + (popmeta) (option) (include) (plugin) +] @keyword + + +((headline item: (item) @markup.heading.6) @markup.heading.marker + (#match? @markup.heading.marker "^\\*\\*\\*\\*\\*\\*")) +((headline item: (item) @markup.heading.5) @markup.heading.marker + (#match? @markup.heading.marker "^\\*\\*\\*\\*\\*")) +((headline item: (item) @markup.heading.4) @markup.heading.marker + (#match? @markup.heading.marker "^\\*\\*\\*\\*")) +((headline item: (item) @markup.heading.3) @markup.heading.marker + (#match? @markup.heading.marker "^\\*\\*\\*")) +((headline item: (item) @markup.heading.2) @markup.heading.marker + (#match? @markup.heading.marker "^\\*\\*")) +((headline item: (item) @markup.heading.1) @markup.heading.marker + (#match? @markup.heading.marker "^\\*"))