mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-03-24 02:37:06 +08:00
1130 lines
26 KiB
Lua
1130 lines
26 KiB
Lua
local api = vim.api
|
|
local ts = vim.treesitter
|
|
|
|
local filetype_to_parsername = {
|
|
arduino = "cpp",
|
|
javascriptreact = "javascript",
|
|
ecma = "javascript",
|
|
jsx = "javascript",
|
|
PKGBUILD = "bash",
|
|
html_tags = "html",
|
|
["typescript.tsx"] = "tsx",
|
|
terraform = "hcl",
|
|
["html.handlebars"] = "glimmer",
|
|
systemverilog = "verilog",
|
|
cls = "latex",
|
|
sty = "latex",
|
|
OpenFOAM = "foam",
|
|
pandoc = "markdown",
|
|
rmd = "markdown",
|
|
}
|
|
|
|
local list = setmetatable({}, {
|
|
__newindex = function(table, parsername, parserconfig)
|
|
rawset(
|
|
table,
|
|
parsername,
|
|
setmetatable(parserconfig, {
|
|
__newindex = function(parserconfigtable, key, value)
|
|
if key == "used_by" then
|
|
require("nvim-treesitter.utils").notify(
|
|
"used_by is deprecated, please use 'filetype_to_parsername'",
|
|
vim.log.levels.WARN
|
|
)
|
|
filetype_to_parsername[value] = parsername
|
|
else
|
|
rawset(parserconfigtable, key, value)
|
|
end
|
|
end,
|
|
})
|
|
)
|
|
|
|
filetype_to_parsername[parserconfig.filetype or parsername] = parsername
|
|
end,
|
|
})
|
|
|
|
list.scheme = {
|
|
install_info = {
|
|
url = "https://github.com/6cdh/tree-sitter-scheme",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@6cdh" },
|
|
}
|
|
|
|
list.javascript = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-javascript",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.rego = {
|
|
install_info = {
|
|
url = "https://github.com/FallenAngel97/tree-sitter-rego",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@FallenAngel97" },
|
|
filetype = "rego",
|
|
}
|
|
|
|
list.c = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-c",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@vigoux" },
|
|
}
|
|
|
|
list.clojure = {
|
|
install_info = {
|
|
url = "https://github.com/sogaiu/tree-sitter-clojure",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@sogaiu" },
|
|
}
|
|
|
|
list.commonlisp = {
|
|
install_info = {
|
|
url = "https://github.com/theHamsta/tree-sitter-commonlisp",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
filetype = "lisp",
|
|
maintainers = { "@theHamsta" },
|
|
}
|
|
|
|
list.cpp = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-cpp",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@theHamsta" },
|
|
}
|
|
|
|
list.cuda = {
|
|
install_info = {
|
|
url = "https://github.com/theHamsta/tree-sitter-cuda",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@theHamsta" },
|
|
}
|
|
|
|
list.d = {
|
|
install_info = {
|
|
url = "https://github.com/CyberShadow/tree-sitter-d",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
requires_generate_from_grammar = true,
|
|
},
|
|
maintainers = { "@nawordar" },
|
|
-- Generating grammar takes ~60s
|
|
experimental = true,
|
|
}
|
|
|
|
list.glsl = {
|
|
install_info = {
|
|
url = "https://github.com/theHamsta/tree-sitter-glsl",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@theHamsta" },
|
|
}
|
|
|
|
list.dockerfile = {
|
|
install_info = {
|
|
url = "https://github.com/camdencheek/tree-sitter-dockerfile",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@camdencheek" },
|
|
}
|
|
|
|
list.dot = {
|
|
install_info = {
|
|
url = "https://github.com/rydesun/tree-sitter-dot",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@rydesun" },
|
|
}
|
|
|
|
list.rust = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-rust",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@vigoux" },
|
|
}
|
|
|
|
list.fusion = {
|
|
install_info = {
|
|
url = "https://gitlab.com/jirgn/tree-sitter-fusion.git",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@jirgn" },
|
|
}
|
|
|
|
list.ledger = {
|
|
install_info = {
|
|
url = "https://github.com/cbarrete/tree-sitter-ledger",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@cbarrete" },
|
|
}
|
|
|
|
list.lua = {
|
|
install_info = {
|
|
url = "https://github.com/MunifTanjim/tree-sitter-lua",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@muniftanjim" },
|
|
}
|
|
|
|
list.python = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-python",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@stsewd", "@theHamsta" },
|
|
}
|
|
|
|
list.go = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-go",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@theHamsta", "@WinWisely268" },
|
|
}
|
|
|
|
list.gomod = {
|
|
install_info = {
|
|
url = "https://github.com/camdencheek/tree-sitter-go-mod",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@camdencheek" },
|
|
filetype = "gomod",
|
|
}
|
|
|
|
list.gowork = {
|
|
install_info = {
|
|
url = "https://github.com/omertuc/tree-sitter-go-work",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@omertuc" },
|
|
filetype = "gowork",
|
|
}
|
|
|
|
list.graphql = {
|
|
install_info = {
|
|
url = "https://github.com/bkegley/tree-sitter-graphql",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@bkegley" },
|
|
}
|
|
|
|
list.ruby = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-ruby",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@TravonteD" },
|
|
}
|
|
|
|
list.perl = {
|
|
install_info = {
|
|
url = "https://github.com/ganezdragon/tree-sitter-perl",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@ganezdragon" },
|
|
}
|
|
|
|
list.bash = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-bash",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
filetype = "sh",
|
|
maintainers = { "@TravonteD" },
|
|
}
|
|
|
|
list.fish = {
|
|
install_info = {
|
|
url = "https://github.com/ram02z/tree-sitter-fish",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@ram02z" },
|
|
}
|
|
|
|
list.php = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-php",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@tk-shirasaka" },
|
|
}
|
|
|
|
list.java = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-java",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@p00f" },
|
|
}
|
|
|
|
list.kotlin = {
|
|
install_info = {
|
|
url = "https://github.com/fwcd/tree-sitter-kotlin",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@SalBakraa" },
|
|
}
|
|
|
|
list.html = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-html",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@TravonteD" },
|
|
}
|
|
|
|
list.julia = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-julia",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@mroavi", "@theHamsta" },
|
|
}
|
|
|
|
list.json = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-json",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.css = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-css",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@TravonteD" },
|
|
}
|
|
|
|
list.scss = {
|
|
install_info = {
|
|
url = "https://github.com/serenadeai/tree-sitter-scss",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@elianiva" },
|
|
}
|
|
|
|
list.erlang = {
|
|
install_info = {
|
|
url = "https://github.com/AbstractMachinesLab/tree-sitter-erlang",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@ostera" },
|
|
}
|
|
|
|
list.elixir = {
|
|
install_info = {
|
|
url = "https://github.com/elixir-lang/tree-sitter-elixir",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@jonatanklosko", "@connorlay" },
|
|
}
|
|
|
|
list.gleam = {
|
|
install_info = {
|
|
url = "https://github.com/J3RN/tree-sitter-gleam",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@connorlay" },
|
|
}
|
|
|
|
list.surface = {
|
|
install_info = {
|
|
url = "https://github.com/connorlay/tree-sitter-surface",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
filetype = "sface",
|
|
maintainers = { "@connorlay" },
|
|
}
|
|
|
|
list.eex = {
|
|
install_info = {
|
|
url = "https://github.com/connorlay/tree-sitter-eex",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
filetype = "eex",
|
|
maintainers = { "@connorlay" },
|
|
}
|
|
|
|
list.heex = {
|
|
install_info = {
|
|
url = "https://github.com/connorlay/tree-sitter-heex",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
filetype = "heex",
|
|
maintainers = { "@connorlay" },
|
|
}
|
|
|
|
list.ocaml = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-ocaml",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
location = "tree-sitter-ocaml/ocaml",
|
|
},
|
|
maintainers = { "@undu" },
|
|
}
|
|
|
|
list.ocaml_interface = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-ocaml",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
location = "tree-sitter-ocaml_interface/interface",
|
|
},
|
|
maintainers = { "@undu" },
|
|
filetype = "ocamlinterface",
|
|
}
|
|
|
|
list.ocamllex = {
|
|
install_info = {
|
|
url = "https://github.com/atom-ocaml/tree-sitter-ocamllex",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
requires_generate_from_grammar = true,
|
|
},
|
|
maintainers = { "@undu" },
|
|
}
|
|
|
|
list.swift = {
|
|
install_info = {
|
|
url = "https://github.com/alex-pinkus/tree-sitter-swift",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
requires_generate_from_grammar = true,
|
|
generate_requires_npm = true,
|
|
},
|
|
}
|
|
|
|
list.c_sharp = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-c-sharp",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
filetype = "cs",
|
|
maintainers = { "@Luxed" },
|
|
}
|
|
|
|
list.todotxt = {
|
|
install_info = {
|
|
url = "https://github.com/arnarg/tree-sitter-todotxt.git",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
filetype = "todotxt",
|
|
maintainers = { "@arnarg" },
|
|
experimental = true,
|
|
}
|
|
|
|
list.typescript = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-typescript",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
location = "tree-sitter-typescript/typescript",
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.tsx = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-typescript",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
location = "tree-sitter-tsx/tsx",
|
|
generate_requires_npm = true,
|
|
},
|
|
filetype = "typescriptreact",
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.scala = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-scala",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@stevanmilic" },
|
|
}
|
|
|
|
list.supercollider = {
|
|
install_info = {
|
|
url = "https://github.com/madskjeldgaard/tree-sitter-supercollider",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@madskjeldgaard" },
|
|
filetype = "supercollider",
|
|
}
|
|
|
|
list.slint = {
|
|
install_info = {
|
|
url = "https://github.com/jrmoulton/tree-sitter-slint",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@jrmoulton" },
|
|
experimental = true,
|
|
}
|
|
|
|
list.haskell = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-haskell",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
}
|
|
|
|
list.hcl = {
|
|
install_info = {
|
|
url = "https://github.com/MichaHoffmann/tree-sitter-hcl",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@MichaHoffmann" },
|
|
filetype = "hcl",
|
|
}
|
|
|
|
list.markdown = {
|
|
install_info = {
|
|
url = "https://github.com/MDeiml/tree-sitter-markdown",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
branch = "main",
|
|
},
|
|
experimental = true,
|
|
}
|
|
|
|
list.tlaplus = {
|
|
install_info = {
|
|
url = "https://github.com/tlaplus-community/tree-sitter-tlaplus",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@ahelwer", "@susliko" },
|
|
filetype = "tla",
|
|
}
|
|
|
|
list.toml = {
|
|
install_info = {
|
|
url = "https://github.com/ikatyang/tree-sitter-toml",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@tk-shirasaka" },
|
|
}
|
|
|
|
list.glimmer = {
|
|
install_info = {
|
|
url = "https://github.com/alexlafroscia/tree-sitter-glimmer",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
branch = "main",
|
|
},
|
|
readme_name = "Glimmer and Ember",
|
|
maintainers = { "@alexlafroscia" },
|
|
filetype = "handlebars",
|
|
}
|
|
|
|
list.pug = {
|
|
install_info = {
|
|
url = "https://github.com/zealot128/tree-sitter-pug",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@zealot128" },
|
|
filetype = "pug",
|
|
}
|
|
|
|
list.vue = {
|
|
install_info = {
|
|
url = "https://github.com/ikatyang/tree-sitter-vue",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@WhyNotHugo" },
|
|
}
|
|
|
|
list.jsonc = {
|
|
install_info = {
|
|
url = "https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
readme_name = "JSON with comments",
|
|
maintainers = { "@WhyNotHugo" },
|
|
}
|
|
|
|
list.elm = {
|
|
install_info = {
|
|
url = "https://github.com/elm-tooling/tree-sitter-elm",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
}
|
|
|
|
list.yaml = {
|
|
install_info = {
|
|
url = "https://github.com/ikatyang/tree-sitter-yaml",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@stsewd" },
|
|
}
|
|
|
|
list.yang = {
|
|
install_info = {
|
|
url = "https://github.com/Hubro/tree-sitter-yang",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@Hubro" },
|
|
filetype = "yang",
|
|
}
|
|
|
|
list.ninja = {
|
|
install_info = {
|
|
url = "https://github.com/alemuller/tree-sitter-ninja",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@alemuller" },
|
|
}
|
|
|
|
list.nix = {
|
|
install_info = {
|
|
url = "https://github.com/cstrahan/tree-sitter-nix",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@leo60228" },
|
|
}
|
|
|
|
list.dart = {
|
|
install_info = {
|
|
url = "https://github.com/UserNobody14/tree-sitter-dart",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@Akin909" },
|
|
}
|
|
|
|
list.rst = {
|
|
install_info = {
|
|
url = "https://github.com/stsewd/tree-sitter-rst",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@stsewd" },
|
|
}
|
|
|
|
list.fennel = {
|
|
install_info = {
|
|
url = "https://github.com/travonted/tree-sitter-fennel",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@TravonteD" },
|
|
}
|
|
|
|
list.teal = {
|
|
install_info = {
|
|
url = "https://github.com/euclidianAce/tree-sitter-teal",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
requires_generate_from_grammar = true,
|
|
},
|
|
maintainers = { "@euclidianAce" },
|
|
}
|
|
|
|
list.ql = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-ql",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@pwntester" },
|
|
}
|
|
|
|
list.verilog = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-verilog",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@zegervdv" },
|
|
-- The parser still uses API version 12, because it does not compile with 13
|
|
experimental = true,
|
|
}
|
|
|
|
list.pascal = {
|
|
install_info = {
|
|
url = "https://github.com/Isopod/tree-sitter-pascal.git",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@isopod" },
|
|
}
|
|
|
|
-- Parsers for injections
|
|
list.phpdoc = {
|
|
install_info = {
|
|
url = "https://github.com/claytonrcarter/tree-sitter-phpdoc",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
-- parser.c in the repo still based on TS 0.17 due to other dependencies
|
|
requires_generate_from_grammar = true,
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@mikehaertl" },
|
|
experimental = true,
|
|
}
|
|
|
|
list.regex = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-regex",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@theHamsta" },
|
|
}
|
|
|
|
list.comment = {
|
|
install_info = {
|
|
url = "https://github.com/stsewd/tree-sitter-comment",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@stsewd" },
|
|
}
|
|
|
|
list.jsdoc = {
|
|
install_info = {
|
|
url = "https://github.com/tree-sitter/tree-sitter-jsdoc",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.query = {
|
|
install_info = {
|
|
url = "https://github.com/nvim-treesitter/tree-sitter-query",
|
|
files = { "src/parser.c" },
|
|
},
|
|
readme_name = "Tree-sitter query language",
|
|
maintainers = { "@steelsojka" },
|
|
}
|
|
|
|
list.sparql = {
|
|
install_info = {
|
|
url = "https://github.com/BonaBeavis/tree-sitter-sparql",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@bonabeavis" },
|
|
}
|
|
|
|
list.gdscript = {
|
|
install_info = {
|
|
url = "https://github.com/PrestonKnopp/tree-sitter-gdscript",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
readme_name = "Godot (gdscript)",
|
|
maintainers = { "@Shatur95" },
|
|
}
|
|
|
|
list.godot_resource = {
|
|
install_info = {
|
|
url = "https://github.com/PrestonKnopp/tree-sitter-godot-resource",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
requires_generate_from_grammar = true,
|
|
},
|
|
filetype = "gdresource",
|
|
readme_name = "Godot Resources (gdresource)",
|
|
maintainers = { "@pierpo" },
|
|
}
|
|
|
|
list.turtle = {
|
|
install_info = {
|
|
url = "https://github.com/BonaBeavis/tree-sitter-turtle",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
maintainers = { "@bonabeavis" },
|
|
}
|
|
|
|
list.devicetree = {
|
|
install_info = {
|
|
url = "https://github.com/joelspadin/tree-sitter-devicetree",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
requires_generate_from_grammar = true,
|
|
},
|
|
filetype = "dts",
|
|
maintainers = { "@jedrzejboczar" },
|
|
}
|
|
|
|
list.svelte = {
|
|
install_info = {
|
|
url = "https://github.com/Himujjal/tree-sitter-svelte",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
branch = "master",
|
|
},
|
|
maintainers = { "@elianiva" },
|
|
}
|
|
|
|
list.r = {
|
|
install_info = {
|
|
url = "https://github.com/r-lib/tree-sitter-r",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@jimhester" },
|
|
}
|
|
|
|
list.beancount = {
|
|
install_info = {
|
|
url = "https://github.com/polarmutex/tree-sitter-beancount",
|
|
files = { "src/parser.c" },
|
|
branch = "master",
|
|
},
|
|
maintainers = { "@polarmutex" },
|
|
}
|
|
|
|
list.latex = {
|
|
install_info = {
|
|
url = "https://github.com/latex-lsp/tree-sitter-latex",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
filetype = "tex",
|
|
maintainers = { "@theHamsta, @clason" },
|
|
}
|
|
|
|
list.bibtex = {
|
|
install_info = {
|
|
url = "https://github.com/latex-lsp/tree-sitter-bibtex",
|
|
files = { "src/parser.c" },
|
|
},
|
|
filetype = "bib",
|
|
maintainers = { "@theHamsta, @clason" },
|
|
}
|
|
|
|
list.zig = {
|
|
install_info = {
|
|
url = "https://github.com/maxxnino/tree-sitter-zig",
|
|
files = { "src/parser.c" },
|
|
branch = "main",
|
|
},
|
|
filetype = "zig",
|
|
maintainers = { "@maxxnino" },
|
|
}
|
|
|
|
list.fortran = {
|
|
install_info = {
|
|
url = "https://github.com/stadelmanma/tree-sitter-fortran",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
}
|
|
|
|
list.cmake = {
|
|
install_info = {
|
|
url = "https://github.com/uyha/tree-sitter-cmake",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@uyha" },
|
|
}
|
|
|
|
list.vim = {
|
|
install_info = {
|
|
url = "https://github.com/vigoux/tree-sitter-viml",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
filetype = "vim",
|
|
maintainers = { "@vigoux" },
|
|
}
|
|
|
|
list.help = {
|
|
install_info = {
|
|
url = "https://github.com/vigoux/tree-sitter-vimdoc",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
filetype = "help",
|
|
maintainers = { "@vigoux" },
|
|
experimental = true,
|
|
}
|
|
|
|
list.json5 = {
|
|
install_info = {
|
|
url = "https://github.com/Joakker/tree-sitter-json5",
|
|
files = { "src/parser.c" },
|
|
},
|
|
filetype = "json5",
|
|
maintainers = { "@Joakker" },
|
|
}
|
|
|
|
list.pioasm = {
|
|
install_info = {
|
|
url = "https://github.com/leo60228/tree-sitter-pioasm",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@leo60228" },
|
|
}
|
|
|
|
list.hjson = {
|
|
install_info = {
|
|
url = "https://github.com/winston0410/tree-sitter-hjson",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@winston0410" },
|
|
}
|
|
|
|
list.hocon = {
|
|
install_info = {
|
|
url = "https://github.com/antosha417/tree-sitter-hocon",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@antosha417" },
|
|
}
|
|
|
|
list.llvm = {
|
|
install_info = {
|
|
url = "https://github.com/benwilliamgraham/tree-sitter-llvm",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@benwilliamgraham" },
|
|
}
|
|
|
|
list.http = {
|
|
install_info = {
|
|
url = "https://github.com/NTBBloodbath/tree-sitter-http",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
generate_requires_npm = true,
|
|
},
|
|
maintainers = { "@NTBBloodbath" },
|
|
}
|
|
|
|
list.prisma = {
|
|
install_info = {
|
|
url = "https://github.com/victorhqc/tree-sitter-prisma",
|
|
branch = "master",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@elianiva" },
|
|
}
|
|
|
|
list.make = {
|
|
install_info = {
|
|
url = "https://github.com/alemuller/tree-sitter-make",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@lewis6991" },
|
|
}
|
|
|
|
list.rasi = {
|
|
install_info = {
|
|
url = "https://github.com/Fymyte/tree-sitter-rasi",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@Fymyte" },
|
|
}
|
|
|
|
list.foam = {
|
|
install_info = {
|
|
url = "https://github.com/FoamScience/tree-sitter-foam",
|
|
branch = "master",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@FoamScience" },
|
|
filetype = "foam",
|
|
-- Queries might change over time on the grammar's side
|
|
-- Otherwise everything runs fine
|
|
experimental = true,
|
|
}
|
|
|
|
list.hack = {
|
|
install_info = {
|
|
url = "https://github.com/slackhq/tree-sitter-hack",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
}
|
|
|
|
list.norg = {
|
|
install_info = {
|
|
url = "https://github.com/nvim-neorg/tree-sitter-norg",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
use_makefile = true,
|
|
cxx_standard = "c++14",
|
|
},
|
|
maintainers = { "@JoeyGrajciar", "@vhyrro", "@mrossinek" },
|
|
}
|
|
|
|
list.vala = {
|
|
install_info = {
|
|
url = "https://github.com/matbme/tree-sitter-vala",
|
|
branch = "main",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@matbme" },
|
|
}
|
|
|
|
list.lalrpop = {
|
|
install_info = {
|
|
url = "https://github.com/traxys/tree-sitter-lalrpop",
|
|
branch = "master",
|
|
files = { "src/parser.c", "src/scanner.c" },
|
|
},
|
|
maintainers = { "@traxys" },
|
|
}
|
|
|
|
list.solidity = {
|
|
install_info = {
|
|
url = "https://github.com/YongJieYongJie/tree-sitter-solidity",
|
|
branch = "with-generated-c-code",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@YongJieYongJie" },
|
|
}
|
|
|
|
list.cooklang = {
|
|
install_info = {
|
|
url = "https://github.com/addcninblue/tree-sitter-cooklang",
|
|
branch = "master",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@addcninblue" },
|
|
}
|
|
|
|
list.elvish = {
|
|
install_info = {
|
|
url = "https://github.com/ckafi/tree-sitter-elvish",
|
|
branch = "main",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@ckafi" },
|
|
}
|
|
|
|
list.astro = {
|
|
install_info = {
|
|
url = "https://github.com/virchau13/tree-sitter-astro",
|
|
branch = "master",
|
|
files = { "src/parser.c", "src/scanner.cc" },
|
|
},
|
|
maintainers = { "@virchau13" },
|
|
}
|
|
|
|
list.wgsl = {
|
|
install_info = {
|
|
url = "https://github.com/szebniok/tree-sitter-wgsl",
|
|
files = { "src/parser.c" },
|
|
},
|
|
maintainers = { "@szebniok" },
|
|
filetype = "wgsl",
|
|
}
|
|
|
|
local M = {
|
|
list = list,
|
|
filetype_to_parsername = filetype_to_parsername,
|
|
}
|
|
|
|
function M.ft_to_lang(ft)
|
|
local result = filetype_to_parsername[ft]
|
|
if result then
|
|
return result
|
|
else
|
|
ft = vim.split(ft, ".", true)[1]
|
|
return filetype_to_parsername[ft] or ft
|
|
end
|
|
end
|
|
|
|
function M.available_parsers()
|
|
if vim.fn.executable "tree-sitter" == 1 and vim.fn.executable "node" == 1 then
|
|
return vim.tbl_keys(M.list)
|
|
else
|
|
return vim.tbl_filter(function(p)
|
|
return not M.list[p].install_info.requires_generate_from_grammar
|
|
end, vim.tbl_keys(M.list))
|
|
end
|
|
end
|
|
|
|
function M.maintained_parsers()
|
|
require("nvim-treesitter.utils").notify(
|
|
"ensure_installed='maintained' will be removed April 30, 2022. Specify parsers explicitly or use 'all'.",
|
|
vim.log.levels.WARN
|
|
)
|
|
local has_tree_sitter_cli = vim.fn.executable "tree-sitter" == 1 and vim.fn.executable "node" == 1
|
|
return vim.tbl_filter(function(lang)
|
|
return M.list[lang].maintainers
|
|
and not M.list[lang].experimental
|
|
and (has_tree_sitter_cli or not M.list[lang].install_info.requires_generate_from_grammar)
|
|
end, M.available_parsers())
|
|
end
|
|
|
|
function M.get_parser_configs()
|
|
return M.list
|
|
end
|
|
|
|
local parser_files
|
|
|
|
function M.reset_cache()
|
|
parser_files = setmetatable({}, {
|
|
__index = function(tbl, key)
|
|
rawset(tbl, key, api.nvim_get_runtime_file("parser/" .. key .. ".*", false))
|
|
return rawget(tbl, key)
|
|
end,
|
|
})
|
|
end
|
|
|
|
M.reset_cache()
|
|
|
|
function M.has_parser(lang)
|
|
lang = lang or M.get_buf_lang(api.nvim_get_current_buf())
|
|
|
|
if not lang or #lang == 0 then
|
|
return false
|
|
end
|
|
-- HACK: nvim internal API
|
|
if vim._ts_has_language(lang) then
|
|
return true
|
|
end
|
|
return #parser_files[lang] > 0
|
|
end
|
|
|
|
function M.get_parser(bufnr, lang)
|
|
bufnr = bufnr or api.nvim_get_current_buf()
|
|
lang = lang or M.get_buf_lang(bufnr)
|
|
|
|
if M.has_parser(lang) then
|
|
return ts.get_parser(bufnr, lang)
|
|
end
|
|
end
|
|
|
|
-- @deprecated This is only kept for legacy purposes.
|
|
-- All root nodes should be accounted for.
|
|
function M.get_tree_root(bufnr)
|
|
bufnr = bufnr or api.nvim_get_current_buf()
|
|
return M.get_parser(bufnr):parse()[1]:root()
|
|
end
|
|
|
|
-- get language of given buffer
|
|
-- @param optional buffer number or current buffer
|
|
-- @returns language string of buffer
|
|
function M.get_buf_lang(bufnr)
|
|
bufnr = bufnr or api.nvim_get_current_buf()
|
|
return M.ft_to_lang(api.nvim_buf_get_option(bufnr, "ft"))
|
|
end
|
|
|
|
return M
|