diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index a79f79f0..432efb78 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 287d4534..c1f197aa 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 00000000..9f1b6cbe --- /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 00000000..440a5782 --- /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 "^\\*"))