add tree-sitter sources to languages.toml

Here we add syntax to the languages.toml languge

    [[grammar]]
    name = "<name>"
    source = { .. }

Which can be used to specify a tree-sitter grammar separately of
the language that defines it, and we make this distinction for
two reasons:

* In later commits, we will separate this code from helix-core
  and bring it to a new helix-loader crate. Using separate schemas
  for language and grammar configurations allows for a nice divide
  between the types needed to be declared in helix-loader and in
  helix-core/syntax

* Two different languages may use the same grammar. This is currently
  the case with llvm-mir-yaml and yaml. We could accomplish a config
  that works for this with just `[[languages]]`, but it gets a bit
  dicey with languages depending on one another. If you enable
  llvm-mir-yaml and disable yaml, does helix still need to fetch and
  build tree-sitter-yaml? It could be a matter of interpretation.
This commit is contained in:
Michael Davis 2022-02-13 12:11:44 -06:00 committed by Blaž Hrastnik
parent fbb98300df
commit c1f90a127b
3 changed files with 275 additions and 28 deletions

View File

@ -444,6 +444,7 @@ pub fn change<I>(document: &Document, changes: I) -> Self
debugger: None, debugger: None,
auto_pairs: None, auto_pairs: None,
}], }],
grammar: vec![],
}); });
// set runtime path so we can find the queries // set runtime path so we can find the queries

View File

@ -54,6 +54,7 @@ pub fn deserialize_auto_pairs<'de, D>(deserializer: D) -> Result<Option<AutoPair
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
pub struct Configuration { pub struct Configuration {
pub language: Vec<LanguageConfiguration>, pub language: Vec<LanguageConfiguration>,
pub grammar: Vec<GrammarConfiguration>,
} }
// largely based on tree-sitter/cli/src/loader.rs // largely based on tree-sitter/cli/src/loader.rs
@ -239,6 +240,29 @@ pub struct IndentQuery {
pub outdent: HashSet<String>, pub outdent: HashSet<String>,
} }
#[derive(Debug, Serialize, Deserialize)]
pub struct GrammarConfiguration {
#[serde(rename = "name")]
pub grammar_id: String, // c-sharp, rust
pub source: GrammarSource,
pub path: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
#[serde(untagged)]
pub enum GrammarSource {
Local {
path: String,
},
Git {
#[serde(rename = "git")]
remote: String,
#[serde(rename = "rev")]
revision: String,
},
}
#[derive(Debug)] #[derive(Debug)]
pub struct TextObjectQuery { pub struct TextObjectQuery {
pub query: Query, pub query: Query,
@ -2055,7 +2079,10 @@ fn test_parser() {
.map(String::from) .map(String::from)
.collect(); .collect();
let loader = Loader::new(Configuration { language: vec![] }); let loader = Loader::new(Configuration {
language: vec![],
grammar: vec![],
});
let language = get_language(&crate::RUNTIME_DIR, "Rust").unwrap(); let language = get_language(&crate::RUNTIME_DIR, "Rust").unwrap();
let config = HighlightConfiguration::new( let config = HighlightConfiguration::new(

View File

@ -45,6 +45,10 @@ request = "attach"
completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ] completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ]
args = { attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] } args = { attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] }
[[grammar]]
name = "rust"
source = { git = "https://github.com/tree-sitter/tree-sitter-rust", rev = "a360da0a29a19c281d08295a35ecd0544d2da211" }
[[language]] [[language]]
name = "toml" name = "toml"
scope = "source.toml" scope = "source.toml"
@ -52,9 +56,12 @@ injection-regex = "toml"
file-types = ["toml"] file-types = ["toml"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "toml"
source = { git = "https://github.com/ikatyang/tree-sitter-toml", rev = "7cff70bbcbbc62001b465603ca1ea88edd668704" }
[[language]] [[language]]
name = "protobuf" name = "protobuf"
scope = "source.proto" scope = "source.proto"
@ -62,9 +69,12 @@ injection-regex = "protobuf"
file-types = ["proto"] file-types = ["proto"]
roots = [] roots = []
comment-token = "//" comment-token = "//"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "protobuf"
source = { git = "https://github.com/yusdacra/tree-sitter-protobuf", rev = "19c211a01434d9f03efff99f85e19f967591b175" }
[[language]] [[language]]
name = "elixir" name = "elixir"
scope = "source.elixir" scope = "source.elixir"
@ -73,10 +83,13 @@ file-types = ["ex", "exs"]
shebangs = ["elixir"] shebangs = ["elixir"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
language-server = { command = "elixir-ls" } language-server = { command = "elixir-ls" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "elixir"
source = { git = "https://github.com/elixir-lang/tree-sitter-elixir", rev = "f5d7bda543da788bd507b05bd722627dde66c9ec" }
[[language]] [[language]]
name = "fish" name = "fish"
scope = "source.fish" scope = "source.fish"
@ -85,9 +98,12 @@ file-types = ["fish"]
shebangs = ["fish"] shebangs = ["fish"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "fish"
source = { git = "https://github.com/ram02z/tree-sitter-fish", rev = "04e54ab6585dfd4fee6ddfe5849af56f101b6d4f" }
[[language]] [[language]]
name = "mint" name = "mint"
scope = "source.mint" scope = "source.mint"
@ -96,7 +112,6 @@ file-types = ["mint"]
shebangs = [] shebangs = []
roots = [] roots = []
comment-token = "//" comment-token = "//"
language-server = { command = "mint", args = ["ls"] } language-server = { command = "mint", args = ["ls"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
@ -106,9 +121,12 @@ scope = "source.json"
injection-regex = "json" injection-regex = "json"
file-types = ["json"] file-types = ["json"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "json"
source = { git = "https://github.com/tree-sitter/tree-sitter-json", rev = "65bceef69c3b0f24c0b19ce67d79f57c96e90fcb" }
[[language]] [[language]]
name = "c" name = "c"
scope = "source.c" scope = "source.c"
@ -116,7 +134,6 @@ injection-regex = "c"
file-types = ["c"] # TODO: ["h"] file-types = ["c"] # TODO: ["h"]
roots = [] roots = []
comment-token = "//" comment-token = "//"
language-server = { command = "clangd" } language-server = { command = "clangd" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
@ -143,6 +160,10 @@ request = "attach"
completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ] completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ]
args = { console = "internalConsole", attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] } args = { console = "internalConsole", attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] }
[[grammar]]
name = "c"
source = { git = "https://github.com/tree-sitter/tree-sitter-c", rev = "f05e279aedde06a25801c3f2b2cc8ac17fac52ae" }
[[language]] [[language]]
name = "cpp" name = "cpp"
scope = "source.cpp" scope = "source.cpp"
@ -150,7 +171,6 @@ injection-regex = "cpp"
file-types = ["cc", "hh", "cpp", "hpp", "h", "ipp", "tpp", "cxx", "hxx", "ixx", "txx", "ino"] file-types = ["cc", "hh", "cpp", "hpp", "h", "ipp", "tpp", "cxx", "hxx", "ixx", "txx", "ino"]
roots = [] roots = []
comment-token = "//" comment-token = "//"
language-server = { command = "clangd" } language-server = { command = "clangd" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
@ -177,6 +197,10 @@ request = "attach"
completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ] completion = [ { name = "lldb connect url", default = "connect://localhost:3333" }, { name = "file", completion = "filename" }, "pid" ]
args = { console = "internalConsole", attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] } args = { console = "internalConsole", attachCommands = [ "platform select remote-gdb-server", "platform connect {0}", "file {1}", "attach {2}" ] }
[[grammar]]
name = "cpp"
source = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "e8dcc9d2b404c542fd236ea5f7208f90be8a6e89" }
[[language]] [[language]]
name = "c-sharp" name = "c-sharp"
scope = "source.csharp" scope = "source.csharp"
@ -184,9 +208,12 @@ injection-regex = "c-?sharp"
file-types = ["cs"] file-types = ["cs"]
roots = [] roots = []
comment-token = "//" comment-token = "//"
indent = { tab-width = 4, unit = "\t" } indent = { tab-width = 4, unit = "\t" }
[[grammar]]
name = "c-sharp"
source = { git = "https://github.com/tree-sitter/tree-sitter-c-sharp", rev = "53a65a908167d6556e1fcdb67f1ee62aac101dda" }
[[language]] [[language]]
name = "go" name = "go"
scope = "source.go" scope = "source.go"
@ -195,7 +222,6 @@ file-types = ["go"]
roots = ["Gopkg.toml", "go.mod"] roots = ["Gopkg.toml", "go.mod"]
auto-format = true auto-format = true
comment-token = "//" comment-token = "//"
language-server = { command = "gopls" } language-server = { command = "gopls" }
# TODO: gopls needs utf-8 offsets? # TODO: gopls needs utf-8 offsets?
indent = { tab-width = 4, unit = "\t" } indent = { tab-width = 4, unit = "\t" }
@ -231,6 +257,10 @@ request = "attach"
completion = [ "pid" ] completion = [ "pid" ]
args = { mode = "local", processId = "{0}" } args = { mode = "local", processId = "{0}" }
[[grammar]]
name = "go"
source = { git = "https://github.com/tree-sitter/tree-sitter-go", rev = "0fa917a7022d1cd2e9b779a6a8fc5dc7fad69c75" }
[[language]] [[language]]
name = "javascript" name = "javascript"
scope = "source.js" scope = "source.js"
@ -240,7 +270,6 @@ shebangs = ["node"]
roots = [] roots = []
comment-token = "//" comment-token = "//"
# TODO: highlights-jsx, highlights-params # TODO: highlights-jsx, highlights-params
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "javascript" } language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "javascript" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
@ -256,6 +285,10 @@ request = "launch"
completion = [ { name = "main", completion = "filename", default = "index.js" } ] completion = [ { name = "main", completion = "filename", default = "index.js" } ]
args = { program = "{0}" } args = { program = "{0}" }
[[grammar]]
name = "javascript"
source = { git = "https://github.com/tree-sitter/tree-sitter-javascript", rev = "4a95461c4761c624f2263725aca79eeaefd36cad" }
[[language]] [[language]]
name = "typescript" name = "typescript"
scope = "source.ts" scope = "source.ts"
@ -264,10 +297,14 @@ file-types = ["ts"]
shebangs = [] shebangs = []
roots = [] roots = []
# TODO: highlights-jsx, highlights-params # TODO: highlights-jsx, highlights-params
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescript"} language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescript"}
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "typescript"
source = { git = "https://github.com/tree-sitter/tree-sitter-typescript", rev = "3e897ea5925f037cfae2e551f8e6b12eec2a201a" }
path = "typescript"
[[language]] [[language]]
name = "tsx" name = "tsx"
scope = "source.tsx" scope = "source.tsx"
@ -275,28 +312,38 @@ injection-regex = "^(tsx)$" # |typescript
file-types = ["tsx"] file-types = ["tsx"]
roots = [] roots = []
# TODO: highlights-jsx, highlights-params # TODO: highlights-jsx, highlights-params
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescriptreact" } language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescriptreact" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "tsx"
source = { git = "https://github.com/tree-sitter/tree-sitter-typescript", rev = "3e897ea5925f037cfae2e551f8e6b12eec2a201a" }
path = "tsx"
[[language]] [[language]]
name = "css" name = "css"
scope = "source.css" scope = "source.css"
injection-regex = "css" injection-regex = "css"
file-types = ["css", "scss"] file-types = ["css", "scss"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "css"
source = { git = "https://github.com/tree-sitter/tree-sitter-css", rev = "94e10230939e702b4fa3fa2cb5c3bc7173b95d07" }
[[language]] [[language]]
name = "html" name = "html"
scope = "text.html.basic" scope = "text.html.basic"
injection-regex = "html" injection-regex = "html"
file-types = ["html"] file-types = ["html"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "html"
source = { git = "https://github.com/tree-sitter/tree-sitter-html", rev = "d93af487cc75120c89257195e6be46c999c6ba18" }
[[language]] [[language]]
name = "python" name = "python"
scope = "source.python" scope = "source.python"
@ -305,11 +352,14 @@ file-types = ["py"]
shebangs = ["python"] shebangs = ["python"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
language-server = { command = "pylsp" } language-server = { command = "pylsp" }
# TODO: pyls needs utf-8 offsets # TODO: pyls needs utf-8 offsets
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "python"
source = { git = "https://github.com/tree-sitter/tree-sitter-python", rev = "d6210ceab11e8d812d4ab59c07c81458ec6e5184" }
[[language]] [[language]]
name = "nix" name = "nix"
scope = "source.nix" scope = "source.nix"
@ -318,10 +368,13 @@ file-types = ["nix"]
shebangs = [] shebangs = []
roots = [] roots = []
comment-token = "#" comment-token = "#"
language-server = { command = "rnix-lsp" } language-server = { command = "rnix-lsp" }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "nix"
source = { git = "https://github.com/cstrahan/tree-sitter-nix", rev = "50f38ceab667f9d482640edfee803d74f4edeba5" }
[[language]] [[language]]
name = "ruby" name = "ruby"
scope = "source.ruby" scope = "source.ruby"
@ -330,10 +383,13 @@ file-types = ["rb"]
shebangs = ["ruby"] shebangs = ["ruby"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
language-server = { command = "solargraph", args = ["stdio"] } language-server = { command = "solargraph", args = ["stdio"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "ruby"
source = { git = "https://github.com/tree-sitter/tree-sitter-ruby", rev = "dfff673b41df7fadcbb609c6338f38da3cdd018e" }
[[language]] [[language]]
name = "bash" name = "bash"
scope = "source.bash" scope = "source.bash"
@ -342,10 +398,13 @@ file-types = ["sh", "bash", "zsh", ".bash_login", ".bash_logout", ".bash_profile
shebangs = ["sh", "bash", "dash"] shebangs = ["sh", "bash", "dash"]
roots = [] roots = []
comment-token = "#" comment-token = "#"
language-server = { command = "bash-language-server", args = ["start"] } language-server = { command = "bash-language-server", args = ["start"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "bash"
source = { git = "https://github.com/tree-sitter/tree-sitter-bash", rev = "a8eb5cb57c66f74c63ab950de081207cccf52017" }
[[language]] [[language]]
name = "php" name = "php"
scope = "source.php" scope = "source.php"
@ -353,18 +412,24 @@ injection-regex = "php"
file-types = ["php"] file-types = ["php"]
shebangs = ["php"] shebangs = ["php"]
roots = [] roots = []
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "php"
source = { git = "https://github.com/tree-sitter/tree-sitter-php", rev = "57f855461aeeca73bd4218754fb26b5ac143f98f" }
[[language]] [[language]]
name = "twig" name = "twig"
scope = "source.twig" scope = "source.twig"
injection-regex = "twig" injection-regex = "twig"
file-types = ["twig"] file-types = ["twig"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "twig"
source = { git = "https://github.com/eirabben/tree-sitter-twig", rev = "b7444181fb38e603e25ea8fcdac55f9492e49c27" }
[[language]] [[language]]
name = "latex" name = "latex"
scope = "source.tex" scope = "source.tex"
@ -372,9 +437,12 @@ injection-regex = "tex"
file-types = ["tex"] file-types = ["tex"]
roots = [] roots = []
comment-token = "%" comment-token = "%"
indent = { tab-width = 4, unit = "\t" } indent = { tab-width = 4, unit = "\t" }
[[grammar]]
name = "latex"
source = { git = "https://github.com/latex-lsp/tree-sitter-latex", rev = "7f720661de5316c0f8fee956526d4002fa1086d8" }
[[language]] [[language]]
name = "lean" name = "lean"
scope = "source.lean" scope = "source.lean"
@ -383,9 +451,12 @@ file-types = ["lean"]
roots = [ "lakefile.lean" ] roots = [ "lakefile.lean" ]
comment-token = "--" comment-token = "--"
language-server = { command = "lean", args = [ "--server" ] } language-server = { command = "lean", args = [ "--server" ] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "lean"
source = { git = "https://github.com/Julian/tree-sitter-lean", rev = "d98426109258b266e1e92358c5f11716d2e8f638" }
[[language]] [[language]]
name = "julia" name = "julia"
scope = "source.julia" scope = "source.julia"
@ -410,6 +481,10 @@ language-server = { command = "julia", args = [
] } ] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "julia"
source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "12ea597262125fc22fd2e91aa953ac69b19c26ca" }
[[language]] [[language]]
name = "java" name = "java"
scope = "source.java" scope = "source.java"
@ -418,6 +493,10 @@ file-types = ["java"]
roots = ["pom.xml"] roots = ["pom.xml"]
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "java"
source = { git = "https://github.com/tree-sitter/tree-sitter-java", rev = "bd6186c24d5eb13b4623efac9d944dcc095c0dad" }
[[language]] [[language]]
name = "ledger" name = "ledger"
scope = "source.ledger" scope = "source.ledger"
@ -427,6 +506,10 @@ roots = []
comment-token = ";" comment-token = ";"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "ledger"
source = { git = "https://github.com/cbarrete/tree-sitter-ledger", rev = "0cdeb0e51411a3ba5493662952c3039de08939ca" }
[[language]] [[language]]
name = "ocaml" name = "ocaml"
scope = "source.ocaml" scope = "source.ocaml"
@ -437,6 +520,11 @@ roots = []
comment-token = "(**)" comment-token = "(**)"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "ocaml"
source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "23d419ba45789c5a47d31448061557716b02750a" }
path = "ocaml"
[[language]] [[language]]
name = "ocaml-interface" name = "ocaml-interface"
scope = "source.ocaml.interface" scope = "source.ocaml.interface"
@ -446,6 +534,11 @@ roots = []
comment-token = "(**)" comment-token = "(**)"
indent = { tab-width = 2, unit = " "} indent = { tab-width = 2, unit = " "}
[[grammar]]
name = "ocaml-interface"
source = { git = "https://github.com/tree-sitter/tree-sitter-ocaml", rev = "23d419ba45789c5a47d31448061557716b02750a" }
path = "interface"
[[language]] [[language]]
name = "lua" name = "lua"
scope = "source.lua" scope = "source.lua"
@ -455,6 +548,10 @@ roots = []
comment-token = "--" comment-token = "--"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "lua"
source = { git = "https://github.com/nvim-treesitter/tree-sitter-lua", rev = "6f5d40190ec8a0aa8c8410699353d820f4f7d7a6" }
[[language]] [[language]]
name = "svelte" name = "svelte"
scope = "source.svelte" scope = "source.svelte"
@ -464,6 +561,9 @@ roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
language-server = { command = "svelteserver", args = ["--stdio"] } language-server = { command = "svelteserver", args = ["--stdio"] }
[[grammar]]
name = "svelte"
source = { git = "https://github.com/Himujjal/tree-sitter-svelte", rev = "349a5984513b4a4a9e143a6e746120c6ff6cf6ed" }
[[language]] [[language]]
name = "vue" name = "vue"
@ -473,6 +573,10 @@ file-types = ["vue"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "vue"
source = { git = "https://github.com/ikatyang/tree-sitter-vue", rev = "91fe2754796cd8fba5f229505a23fa08f3546c06" }
[[language]] [[language]]
name = "yaml" name = "yaml"
scope = "source.yaml" scope = "source.yaml"
@ -482,6 +586,10 @@ comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
injection-regex = "yml|yaml" injection-regex = "yml|yaml"
[[grammar]]
name = "yaml"
source = { git = "https://github.com/ikatyang/tree-sitter-yaml", rev = "0e36bed171768908f331ff7dff9d956bae016efb" }
[[language]] [[language]]
name = "haskell" name = "haskell"
scope = "source.haskell" scope = "source.haskell"
@ -492,6 +600,10 @@ comment-token = "--"
language-server = { command = "haskell-language-server-wrapper", args = ["--lsp"] } language-server = { command = "haskell-language-server-wrapper", args = ["--lsp"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "haskell"
source = { git = "https://github.com/tree-sitter/tree-sitter-haskell", rev = "b6ec26f181dd059eedd506fa5fbeae1b8e5556c8" }
[[language]] [[language]]
name = "zig" name = "zig"
scope = "source.zig" scope = "source.zig"
@ -500,10 +612,13 @@ file-types = ["zig"]
roots = ["build.zig"] roots = ["build.zig"]
auto-format = true auto-format = true
comment-token = "//" comment-token = "//"
language-server = { command = "zls" } language-server = { command = "zls" }
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "zig"
source = { git = "https://github.com/maxxnino/tree-sitter-zig", rev = "93331b8bd8b4ebee2b575490b2758f16ad4e9f30" }
[[language]] [[language]]
name = "prolog" name = "prolog"
scope = "source.prolog" scope = "source.prolog"
@ -511,7 +626,6 @@ roots = []
file-types = ["pl", "prolog"] file-types = ["pl", "prolog"]
shebangs = ["swipl"] shebangs = ["swipl"]
comment-token = "%" comment-token = "%"
language-server = { command = "swipl", args = [ language-server = { command = "swipl", args = [
"-g", "use_module(library(lsp_server))", "-g", "use_module(library(lsp_server))",
"-g", "lsp_server:main", "-g", "lsp_server:main",
@ -526,6 +640,10 @@ comment-token = ";"
injection-regex = "tsq" injection-regex = "tsq"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "tsq"
source = { git = "https://github.com/tree-sitter/tree-sitter-tsq", rev = "b665659d3238e6036e22ed0e24935e60efb39415" }
[[language]] [[language]]
name = "cmake" name = "cmake"
scope = "source.cmake" scope = "source.cmake"
@ -536,6 +654,10 @@ indent = { tab-width = 2, unit = " " }
language-server = { command = "cmake-language-server" } language-server = { command = "cmake-language-server" }
injection-regex = "cmake" injection-regex = "cmake"
[[grammar]]
name = "cmake"
source = { git = "https://github.com/uyha/tree-sitter-cmake", rev = "f6616f1e417ee8b62daf251aa1daa5d73781c596" }
[[language]] [[language]]
name = "make" name = "make"
scope = "source.make" scope = "source.make"
@ -544,6 +666,10 @@ roots =[]
comment-token = "#" comment-token = "#"
indent = { tab-width = 4, unit = "\t" } indent = { tab-width = 4, unit = "\t" }
[[grammar]]
name = "make"
source = { git = "https://github.com/alemuller/tree-sitter-make", rev = "a4b9187417d6be349ee5fd4b6e77b4172c6827dd" }
[[language]] [[language]]
name = "glsl" name = "glsl"
scope = "source.glsl" scope = "source.glsl"
@ -553,6 +679,10 @@ comment-token = "//"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
injection-regex = "glsl" injection-regex = "glsl"
[[grammar]]
name = "glsl"
source = { git = "https://github.com/theHamsta/tree-sitter-glsl", rev = "88408ffc5e27abcffced7010fc77396ae3636d7e" }
[[language]] [[language]]
name = "perl" name = "perl"
scope = "source.perl" scope = "source.perl"
@ -562,6 +692,10 @@ roots = []
comment-token = "#" comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "perl"
source = { git = "https://github.com/ganezdragon/tree-sitter-perl", rev = "0ac2c6da562c7a2c26ed7e8691d4a590f7e8b90a" }
[[language]] [[language]]
name = "racket" name = "racket"
scope = "source.rkt" scope = "source.rkt"
@ -578,6 +712,10 @@ roots = []
file-types = [] file-types = []
injection-regex = "comment" injection-regex = "comment"
[[grammar]]
name = "comment"
source = { git = "https://github.com/stsewd/tree-sitter-comment", rev = "5dd3c62f1bbe378b220fe16b317b85247898639e" }
[[language]] [[language]]
name = "wgsl" name = "wgsl"
scope = "source.wgsl" scope = "source.wgsl"
@ -586,6 +724,10 @@ roots = []
comment-token = "//" comment-token = "//"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "wgsl"
source = { git = "https://github.com/szebniok/tree-sitter-wgsl", rev = "f00ff52251edbd58f4d39c9c3204383253032c11" }
[[language]] [[language]]
name = "llvm" name = "llvm"
scope = "source.llvm" scope = "source.llvm"
@ -595,6 +737,10 @@ comment-token = ";"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
injection-regex = "llvm" injection-regex = "llvm"
[[grammar]]
name = "llvm"
source = { git = "https://github.com/benwilliamgraham/tree-sitter-llvm", rev = "3b213925b9c4f42c1acfe2e10bfbb438d9c6834d" }
[[language]] [[language]]
name = "llvm-mir" name = "llvm-mir"
scope = "source.llvm_mir" scope = "source.llvm_mir"
@ -604,9 +750,15 @@ comment-token = ";"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
injection-regex = "mir" injection-regex = "mir"
[[grammar]]
name = "llvm-mir"
source = { git = "https://github.com/Flakebi/tree-sitter-llvm-mir", rev = "06fabca19454b2dc00c1b211a7cb7ad0bc2585f1" }
[[language]] [[language]]
name = "llvm-mir-yaml" name = "llvm-mir-yaml"
tree-sitter-library = "yaml" # TODO allow languages to point to their grammar like so:
#
# grammar = "yaml"
scope = "source.yaml" scope = "source.yaml"
roots = [] roots = []
file-types = ["mir"] file-types = ["mir"]
@ -622,15 +774,22 @@ comment-token = "//"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
injection-regex = "tablegen" injection-regex = "tablegen"
[[grammar]]
name = "tablegen"
source = { git = "https://github.com/Flakebi/tree-sitter-tablegen", rev = "568dd8a937347175fd58db83d4c4cdaeb6069bd2" }
[[language]] [[language]]
name = "markdown" name = "markdown"
scope = "source.md" scope = "source.md"
injection-regex = "md|markdown" injection-regex = "md|markdown"
file-types = ["md"] file-types = ["md"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "markdown"
source = { git = "https://github.com/MDeiml/tree-sitter-markdown", rev = "ad8c32917a16dfbb387d1da567bf0c3fb6fffde2" }
[[language]] [[language]]
name = "dart" name = "dart"
scope = "source.dart" scope = "source.dart"
@ -641,6 +800,10 @@ comment-token = "//"
language-server = { command = "dart", args = ["language-server", "--client-id=helix"] } language-server = { command = "dart", args = ["language-server", "--client-id=helix"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "dart"
source = { git = "https://github.com/UserNobody14/tree-sitter-dart", rev = "6a25376685d1d47968c2cef06d4db8d84a70025e" }
[[language]] [[language]]
name = "scala" name = "scala"
scope = "source.scala" scope = "source.scala"
@ -650,6 +813,10 @@ comment-token = "//"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
language-server = { command = "metals" } language-server = { command = "metals" }
[[grammar]]
name = "scala"
source = { git = "https://github.com/tree-sitter/tree-sitter-scala", rev = "0a3dd53a7fc4b352a538397d054380aaa28be54c" }
[[language]] [[language]]
name = "dockerfile" name = "dockerfile"
scope = "source.dockerfile" scope = "source.dockerfile"
@ -660,6 +827,10 @@ comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
language-server = { command = "docker-langserver", args = ["--stdio"] } language-server = { command = "docker-langserver", args = ["--stdio"] }
[[grammar]]
name = "dockerfile"
source = { git = "https://github.com/camdencheek/tree-sitter-dockerfile", rev = "7af32bc04a66ab196f5b9f92ac471f29372ae2ce" }
[[language]] [[language]]
name = "git-commit" name = "git-commit"
scope = "git.commitmsg" scope = "git.commitmsg"
@ -668,6 +839,10 @@ file-types = ["COMMIT_EDITMSG"]
comment-token = "#" comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "git-commit"
source = { git = "https://github.com/the-mikedavis/tree-sitter-git-commit", rev = "066e395e1107df17183cf3ae4230f1a1406cc972" }
[[language]] [[language]]
name = "git-diff" name = "git-diff"
scope = "source.diff" scope = "source.diff"
@ -677,6 +852,10 @@ injection-regex = "diff"
comment-token = "#" comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "git-diff"
source = { git = "https://github.com/the-mikedavis/tree-sitter-git-diff", rev = "c12e6ecb54485f764250556ffd7ccb18f8e2942b" }
[[language]] [[language]]
name = "git-rebase" name = "git-rebase"
scope = "source.gitrebase" scope = "source.gitrebase"
@ -686,6 +865,10 @@ injection-regex = "git-rebase"
comment-token = "#" comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "git-rebase"
source = { git = "https://github.com/the-mikedavis/tree-sitter-git-rebase", rev = "332dc528f27044bc4427024dbb33e6941fc131f2" }
[[language]] [[language]]
name = "regex" name = "regex"
scope = "source.regex" scope = "source.regex"
@ -693,6 +876,10 @@ injection-regex = "regex"
file-types = ["regex"] file-types = ["regex"]
roots = [] roots = []
[[grammar]]
name = "regex"
source = { git = "https://github.com/tree-sitter/tree-sitter-regex", rev = "e1cfca3c79896ff79842f057ea13e529b66af636" }
[[language]] [[language]]
name = "git-config" name = "git-config"
scope = "source.gitconfig" scope = "source.gitconfig"
@ -703,6 +890,10 @@ injection-regex = "git-config"
comment-token = "#" comment-token = "#"
indent = { tab-width = 4, unit = "\t" } indent = { tab-width = 4, unit = "\t" }
[[grammar]]
name = "git-config"
source = { git = "https://github.com/the-mikedavis/tree-sitter-git-config", rev = "0e4f0baf90b57e5aeb62dcdbf03062c6315d43ea" }
[[language]] [[language]]
name = "graphql" name = "graphql"
scope = "source.graphql" scope = "source.graphql"
@ -711,6 +902,10 @@ file-types = ["gql", "graphql"]
roots = [] roots = []
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "graphql"
source = { git = "https://github.com/bkegley/tree-sitter-graphql", rev = "5e66e961eee421786bdda8495ed1db045e06b5fe" }
[[language]] [[language]]
name = "elm" name = "elm"
scope = "source.elm" scope = "source.elm"
@ -722,6 +917,10 @@ comment-token = "--"
language-server = { command = "elm-language-server" } language-server = { command = "elm-language-server" }
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "elm"
source = { git = "https://github.com/elm-tooling/tree-sitter-elm", rev = "bd50ccf66b42c55252ac8efc1086af4ac6bab8cd" }
[[language]] [[language]]
name = "iex" name = "iex"
scope = "source.iex" scope = "source.iex"
@ -729,6 +928,10 @@ injection-regex = "iex"
file-types = ["iex"] file-types = ["iex"]
roots = [] roots = []
[[grammar]]
name = "iex"
source = { git = "https://github.com/elixir-lang/tree-sitter-iex", rev = "39f20bb51f502e32058684e893c0c0b00bb2332c" }
[[language]] [[language]]
name = "rescript" name = "rescript"
scope = "source.rescript" scope = "source.rescript"
@ -740,6 +943,10 @@ comment-token = "//"
language-server = { command = "rescript-language-server", args = ["--stdio"] } language-server = { command = "rescript-language-server", args = ["--stdio"] }
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "rescript"
source = { git = "https://github.com/jaredramirez/tree-sitter-rescript", rev = "789a171d9bcf73f6d76e67aca39ed14a75375b04" }
[[language]] [[language]]
name = "erlang" name = "erlang"
scope = "source.erlang" scope = "source.erlang"
@ -749,6 +956,10 @@ roots = ["rebar.config"]
comment-token = "%%" comment-token = "%%"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "erlang"
source = { git = "https://github.com/the-mikedavis/tree-sitter-erlang", rev = "86985bde399c5f40b00bc75f7ab70a6c69a5f9c3" }
[[language]] [[language]]
name = "kotlin" name = "kotlin"
scope = "source.kotlin" scope = "source.kotlin"
@ -758,6 +969,10 @@ comment-token = "//"
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
language-server = { command = "kotlin-language-server" } language-server = { command = "kotlin-language-server" }
[[grammar]]
name = "kotlin"
source = { git = "https://github.com/fwcd/tree-sitter-kotlin", rev = "a4f71eb9b8c9b19ded3e0e9470be4b1b77c2b569" }
[[language]] [[language]]
name = "hcl" name = "hcl"
scope = "source.hcl" scope = "source.hcl"
@ -768,3 +983,7 @@ comment-token = "#"
indent = { tab-width = 2, unit = " " } indent = { tab-width = 2, unit = " " }
language-server = { command = "terraform-ls", args = ["serve"] } language-server = { command = "terraform-ls", args = ["serve"] }
auto-format = true auto-format = true
[[grammar]]
name = "hcl"
source = { git = "https://github.com/MichaHoffmann/tree-sitter-hcl", rev = "3cb7fc28247efbcb2973b97e71c78838ad98a583" }