diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index f0039508..bf07663f 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -261,6 +261,7 @@ | scfg | ✓ | | | | | | | scheme | ✓ | ✓ | ✓ | ✓ | ✓ | | | scss | ✓ | | ✓ | | ✓ | `vscode-css-language-server` | +| sgf | ✓ | ✓ | ✓ | | | | | shellcheckrc | ✓ | ✓ | | | | | | slang | ✓ | ✓ | ✓ | | | `slangd` | | slint | ✓ | ✓ | ✓ | | | `slint-lsp` | diff --git a/languages.toml b/languages.toml index 0830ef57..7523d33f 100644 --- a/languages.toml +++ b/languages.toml @@ -5329,6 +5329,17 @@ comment-token = "#" name = "scfg" source = { git = "https://github.com/rockorager/tree-sitter-scfg", rev = "d850fd470445d73de318a21d734d1e09e29b773c" } +[[language]] +name = "sgf" +scope = "source.sgf" +injection-regex = "sgf" +file-types = ["sgf"] +indent = { tab-width = 2, unit = " " } + +[[grammar]] +name = "sgf" +source = { git = "https://github.com/lykahb/tree-sitter-sgf", rev = "b7e0fb713b29495722e056fdc3dc4f889f6d6ed2" } + [[language]] name = "ripple" scope = "source.ripple" diff --git a/runtime/queries/sgf/highlights.scm b/runtime/queries/sgf/highlights.scm new file mode 100644 index 00000000..91aaa8a7 --- /dev/null +++ b/runtime/queries/sgf/highlights.scm @@ -0,0 +1,12 @@ +; SGF structure + +(property_identifier) @attribute +(value_content) @string + +; Punctuation + +"(" @punctuation.bracket +")" @punctuation.bracket +"[" @punctuation.bracket +"]" @punctuation.bracket +";" @punctuation.delimiter diff --git a/runtime/queries/sgf/indents.scm b/runtime/queries/sgf/indents.scm new file mode 100644 index 00000000..fac9697b --- /dev/null +++ b/runtime/queries/sgf/indents.scm @@ -0,0 +1,4 @@ +; Indent nested variations and outdent when a game tree closes. + +(game_tree) @indent +")" @outdent diff --git a/runtime/queries/sgf/textobjects.scm b/runtime/queries/sgf/textobjects.scm new file mode 100644 index 00000000..1b26814b --- /dev/null +++ b/runtime/queries/sgf/textobjects.scm @@ -0,0 +1,8 @@ +(property + (_) @entry.inside) @entry.around + +(node + (_) @entry.inside) @entry.around + +(game_tree + (_) @entry.inside) @entry.around