diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2024-04-14 16:25:28 +0200 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | c17de5689045f75c6244462182ae3b4b62df02d9 (patch) | |
| tree | ec7785ec523ad4704d09bb5dc5393e1f00046508 | |
| parent | fix: vim.tbl_flatten is deprecated (diff) | |
| download | nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar.gz nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar.bz2 nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar.lz nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar.xz nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.tar.zst nvim-treesitter-c17de5689045f75c6244462182ae3b4b62df02d9.zip | |
feat!: track parser revision in Lua
Problem: Tracking parser revision in lockfile and allowing override
through the parsers module complicates the code. In addition, only
revision changes are handled robustly, not changes to other installation
info.
Solution: Track parser revision in the parsers module directly. Reload
parser table on every install or update call. Support modifying parser
table in a `User TSUpdate` autocommand.
| -rw-r--r-- | .github/workflows/tests.yml | 1 | ||||
| -rw-r--r-- | .github/workflows/update-lockfile.yml | 55 | ||||
| -rw-r--r-- | .github/workflows/update-parsers.yml | 55 | ||||
| -rw-r--r-- | .github/workflows/update-readme.yml | 3 | ||||
| -rw-r--r-- | CONTRIBUTING.md | 18 | ||||
| -rw-r--r-- | README.md | 65 | ||||
| -rw-r--r-- | SUPPORTED_LANGUAGES.md | 20 | ||||
| -rw-r--r-- | TODO.md | 9 | ||||
| -rw-r--r-- | doc/nvim-treesitter.txt | 2 | ||||
| -rw-r--r-- | lua/nvim-treesitter/_meta/parsers.lua | 47 | ||||
| -rw-r--r-- | lua/nvim-treesitter/config.lua | 82 | ||||
| -rw-r--r-- | lua/nvim-treesitter/health.lua | 2 | ||||
| -rw-r--r-- | lua/nvim-treesitter/install.lua | 77 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 1379 | ||||
| -rw-r--r-- | plugin/nvim-treesitter.lua | 2 | ||||
| -rwxr-xr-x | scripts/check-queries.lua | 2 | ||||
| -rwxr-xr-x | scripts/convert-lockfile.lua | 21 | ||||
| -rwxr-xr-x | scripts/update-lockfile.lua | 64 | ||||
| -rwxr-xr-x | scripts/update-parsers.lua | 65 | ||||
| -rwxr-xr-x | scripts/update-readme.lua | 5 | ||||
| -rw-r--r-- | tests/query/injections/nix/test-nix-injections.nix | 2 |
21 files changed, 994 insertions, 982 deletions
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 86c7ad630..f78afe711 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - "main" + workflow_dispatch: # Cancel any in-progress CI runs for a PR if it is updated concurrency: diff --git a/.github/workflows/update-lockfile.yml b/.github/workflows/update-lockfile.yml deleted file mode 100644 index 70d2c0c0a..000000000 --- a/.github/workflows/update-lockfile.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Update lockfile - -on: - schedule: - - cron: "30 6 * * 6" - workflow_dispatch: - -jobs: - update-lockfile: - name: Update lockfile - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - ref: main - - - uses: actions/create-github-app-token@v2 - id: app-token - with: - app-id: ${{ vars.TOKEN_ID }} - private-key: ${{ secrets.TOKEN_PRIVATE_KEY }} - - - name: Prepare - env: - NVIM_TAG: nightly - run: | - wget https://github.com/josephburnett/jd/releases/download/v1.7.1/jd-amd64-linux - mv jd-amd64-linux /tmp/jd - chmod +x /tmp/jd - bash scripts/ci-install.sh - - - name: Update parsers - env: - SKIP_LOCKFILE_UPDATE_FOR_LANGS: "bp,devicetree,dhall,elm,enforce,git_config,nickel,rescript,rust,slint,sql,t32,templ,typespec,verilog,wit" - run: | - cp lockfile.json /tmp/old_lockfile.json - nvim -l ./scripts/update-lockfile.lua - UPDATED_PARSERS=$(/tmp/jd -f merge /tmp/old_lockfile.json lockfile.json | jq -r 'keys | join(", ")') - echo "UPDATED_PARSERS=$UPDATED_PARSERS" >> $GITHUB_ENV - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ steps.app-token.outputs.token }} - sign-commits: true - commit-message: "bot(lockfile): update ${{ env.UPDATED_PARSERS }}" - title: "Update lockfile.json: ${{ env.UPDATED_PARSERS }}" - body: "[beep boop](https://github.com/peter-evans/create-pull-request)" - branch: update-lockfile-pr - base: ${{ github.head_ref }} - - - name: Enable Pull Request Automerge - env: - GH_TOKEN: ${{ steps.app-token.outputs.token }} - run: gh pr merge --rebase --auto update-lockfile-pr diff --git a/.github/workflows/update-parsers.yml b/.github/workflows/update-parsers.yml new file mode 100644 index 000000000..683c732c6 --- /dev/null +++ b/.github/workflows/update-parsers.yml @@ -0,0 +1,55 @@ +name: Update parsers + +on: + schedule: + - cron: "30 6 * * *" + workflow_dispatch: + +env: + BIN_DIR: ${{ github.workspace }}/bin + +jobs: + update-parsers: + name: Update parsers + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: main + + - uses: actions/create-github-app-token@v2 + id: app-token + with: + app-id: ${{ vars.TOKEN_ID }} + private-key: ${{ secrets.TOKEN_PRIVATE_KEY }} + + - name: Add $BIN_DIR to PATH + run: echo "$BIN_DIR" >> $GITHUB_PATH + + - name: Prepare + env: + NVIM_TAG: nightly + run: | + bash scripts/ci-install.sh + wget --directory-prefix="$BIN_DIR" https://github.com/JohnnyMorganz/StyLua/releases/latest/download/stylua-linux-x86_64.zip + (cd "$BIN_DIR"; unzip stylua*.zip) + + - name: Update parsers + run: ./scripts/update-parsers.lua + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + add-paths: lua/nvim-treesitter/parsers.lua + token: ${{ steps.app-token.outputs.token }} + sign-commits: true + commit-message: "bot(parsers): update ${{ env.UPDATED_PARSERS }}" + title: "Update parsers: ${{ env.UPDATED_PARSERS }}" + body: "[beep boop](https://github.com/peter-evans/create-pull-request)" + branch: update-parsers-pr + base: ${{ github.head_ref }} + + - name: Enable Pull Request Automerge + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + run: gh pr merge --rebase --auto update-parsers-pr diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml index 849bb9814..335756619 100644 --- a/.github/workflows/update-readme.yml +++ b/.github/workflows/update-readme.yml @@ -32,10 +32,11 @@ jobs: - name: Create Pull Request uses: peter-evans/create-pull-request@v7 with: + add-paths: SUPPORTED_LANGUAGES.md token: ${{ steps.app-token.outputs.token }} sign-commits: true commit-message: "bot(readme): update" - title: Update README + title: Update SUPPORTED_LANGUAGES.md body: "[beep boop](https://github.com/peter-evans/create-pull-request)" branch: update-readme-pr base: ${{ github.head_ref }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d043e6b08..0ea7dcdbf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,17 +13,17 @@ Depending on which part of the plugin you want to contribute to, please read the To add a new parser, edit the following files: -1. In `lua/parsers.lua`, add an entry to the `M.configs` table of the following form: +1. In `lua/parsers.lua`, add an entry to the returned table of the following form: ```lua zimbu = { install_info = { - url = 'https://github.com/zimbulang/tree-sitter-zimbu', -- local path or git repo + url = 'https://github.com/zimbulang/tree-sitter-zimbu', -- git repo; use `path` for local path files = { 'src/parser.c' }, -- note that some parsers also require src/scanner.c -- optional entries: branch = 'develop', -- only needed if different from default branch location = 'parser', -- only needed if the parser is in subdirectory of a "monorepo" - revision = 'v2.1', -- tag or commit hash; bypasses automated updates + revision = 'v2.1', -- tag or commit hash, will be updated automatically generate = true, -- only needed if repo does not contain pre-generated src/parser.c generate_from_json = true, -- only needed if grammar.js has npm-installed dependencies }, @@ -31,21 +31,13 @@ zimbu = { tier = 3, -- community-contributed parser -- optional entries: requires = { 'vim' }, -- if the queries inherit from another language - readme_note = "an example language", -- if the + readme_note = "an example language", } ``` **Note:** The "maintainers" here refers to the person maintaining the **queries** in `nvim-treesitter`, not the parser maintainers (who likely don't use Neovim). The maintainers' duty is to review issues and PRs related to the query and to keep them updated with respect to parser changes. -2. In `lockfile.json`, add an entry for the current commit your queries are compatible with: - -```json - "zimbu": { - "revision": "0d08703e4c3f426ec61695d7617415fff97029bd" - }, -``` - -3. If the parser name is not the same as the Vim filetype, add an entry to the `filetypes` table in `plugin/filetypes.lua`: +2. If the parser name is not the same as the Vim filetype, add an entry to the `filetypes` table in `plugin/filetypes.lua`: ```lua zimbu = { 'zu' }, @@ -126,28 +126,40 @@ These queries can be used to look up definitions and references to identifiers i If you have a parser that is not on the list of supported languages (either as a repository on Github or in a local directory), you can add it manually for use by `nvim-treesitter` as follows: -1. Clone the repository or [create a new project](https://tree-sitter.github.io/tree-sitter/creating-parsers#project-setup) in, say, `~/projects/tree-sitter-zimbu`. Make sure that the `tree-sitter-cli` executable is installed and in your path; see <https://tree-sitter.github.io/tree-sitter/creating-parsers#installation> for installation instructions. -2. Run `tree-sitter generate` in this directory (followed by `tree-sitter test` for good measure). -3. Add the following snippet to your `init.lua`: +1. Add the following snippet in a `User TSUpdate` autocommand: ```lua -local parser_config = require('nvim-treesitter.parsers').configs -parser_config.zimbu = { - install_info = { - url = '~/projects/tree-sitter-zimbu', -- local path or git repo - files = { 'src/parser.c' }, -- note that some parsers also require src/scanner.c - -- optional entries: - branch = 'develop', -- only needed if different from default branch - location= 'parser', -- only needed if the parser is in subdirectory of a "monorepo" - generate = true, -- only needed if repo does not contain pre-generated src/parser.c - generate_from_json = true, -- only needed if parser has npm dependencies - }, -} +vim.api.nvim_create_autocmd('User', { pattern = 'TSUpdate', +callback = function() + require('nvim-treesitter.parsers').zimbu = { + install_info = { + url = 'https://github.com/zimbulang/tree-sitter-zimbu', + files = { 'src/parser.c' }, -- note that some parsers also require src/scanner.c + revision = <sha>, -- commit hash for revision to check out; HEAD if missing + -- optional entries: + branch = 'develop', -- only needed if different from default branch + location = 'parser', -- only needed if the parser is in subdirectory of a "monorepo" + generate = true, -- only needed if repo does not contain pre-generated src/parser.c + generate_from_json = true, -- only needed if parser has npm dependencies + }, + } +end}) ``` -If you use a git repository for your parser and want to use a specific version, you can set the `revision` key -in the `install_info` table for you parser config. -4. If the parser name differs from the filetype(s) used by Neovim, you need to register the parser via +Alternatively, if you have a local checkout, you can instead use +```lua + install_info = { + path = '~/parsers/tree-sitter-zimbu', + files = { 'src/parser.c' }, -- note that some parsers also require src/scanner.c + -- optional entries + location = 'parser', -- only needed if the parser is in subdirectory of a "monorepo" + generate = true, -- only needed if repo does not contain pre-generated src/parser.c + generate_from_json = true, -- only needed if parser has npm dependencies + }, +``` +This will always use the state of the directory as-is (i.e., `branch` and `revision` will be ignored). + +2. If the parser name differs from the filetype(s) used by Neovim, you need to register the parser via ```lua vim.treesitter.language.register('zimbu', { 'zu' }) @@ -155,13 +167,20 @@ vim.treesitter.language.register('zimbu', { 'zu' }) If Neovim does not detect your language's filetype by default, you can use [Neovim's `vim.filetype.add()`](<https://neovim.io/doc/user/lua.html#vim.filetype.add()>) to add a custom detection rule. -5. Start `nvim` and `:TSInstall zimbu`. - -You can also skip step 2 and use `:TSInstallFromGrammar zimbu` to install directly from a `grammar.js` in the top-level directory specified by `url`. -Once the parser is installed, you can update it (from the latest revision of the `main` branch if `url` is a Github repository) with `:TSUpdate zimbu`. +3. Start `nvim` and `:TSInstall zimbu`. **Note:** Parsers using external scanner need to be written in C. C++ scanners are no longer supported. +### Modifying parsers + +You can use the same approach for overriding parser information. E.g., if you always want to generate the `lua` parser from grammar, add +```lua +vim.api.nvim_create_autocmd('User', { pattern = 'TSUpdate', +callback = function() + require('nvim-treesitter.parsers').lua.install_info.generate = true +end}) +``` + ## Adding queries Queries can be placed anywhere in your `runtimepath` under `queries/<language>`, with earlier directories taking precedence unless the queries are marked with `; extends`; see `:h treesitter-query`. @@ -231,7 +250,7 @@ require("nvim-treesitter.install").prefer_git = true In your Lua config: ```lua -for _, config in pairs(require("nvim-treesitter.parsers").configs) do +for _, config in pairs(require("nvim-treesitter.parsers")) do config.install_info.url = config.install_info.url:gsub("https://github.com/", "something else") end diff --git a/SUPPORTED_LANGUAGES.md b/SUPPORTED_LANGUAGES.md index a63f603e7..d2ba24468 100644 --- a/SUPPORTED_LANGUAGES.md +++ b/SUPPORTED_LANGUAGES.md @@ -26,9 +26,9 @@ Language | Tier | Queries | CLI | Maintainer [bibtex](https://github.com/latex-lsp/tree-sitter-bibtex) | community | `HFI ` | | @theHamsta, @clason [bicep](https://github.com/tree-sitter-grammars/tree-sitter-bicep) | core | `HFIJL` | | @amaanq [bitbake](https://github.com/tree-sitter-grammars/tree-sitter-bitbake) | core | `HFIJL` | | @amaanq -[blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint.git) | unsupported | `H ` | | @gabmus +[blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint) | unsupported | `H ` | | @gabmus [c](https://github.com/tree-sitter/tree-sitter-c) | stable | `HFIJL` | | @amaanq -[c_sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) | core | `HF JL` | | @Luxed +[c_sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) | core | `HF JL` | | @amaanq [cairo](https://github.com/tree-sitter-grammars/tree-sitter-cairo) | core | `HFIJL` | | @amaanq [capnp](https://github.com/tree-sitter-grammars/tree-sitter-capnp) | core | `HFIJL` | | @amaanq [chatito](https://github.com/tree-sitter-grammars/tree-sitter-chatito) | core | `HFIJL` | | @ObserverOfTime @@ -77,7 +77,7 @@ ecma (queries only)[^ecma] | community | `HFIJL` | | @steelsojka [fortran](https://github.com/stadelmanma/tree-sitter-fortran) | community | `HFI ` | | @amaanq [fsh](https://github.com/mgramigna/tree-sitter-fsh) | community | `H ` | | @mgramigna [func](https://github.com/tree-sitter-grammars/tree-sitter-func) | core | `H ` | | @amaanq -[fusion](https://gitlab.com/jirgn/tree-sitter-fusion.git) | community | `HFI L` | | @jirgn +[fusion](https://gitlab.com/jirgn/tree-sitter-fusion) | community | `HFI L` | | @jirgn [gdscript](https://github.com/PrestonKnopp/tree-sitter-gdscript)[^gdscript] | community | `HFIJL` | | @PrestonKnopp [gdshader](https://github.com/GodOfAvacyn/tree-sitter-gdshader) | community | `H J ` | | @godofavacyn [git_config](https://github.com/the-mikedavis/tree-sitter-git-config) | community | `HF J ` | | @amaanq @@ -102,7 +102,7 @@ ecma (queries only)[^ecma] | community | `HFIJL` | | @steelsojka [gstlaunch](https://github.com/tree-sitter-grammars/tree-sitter-gstlaunch) | core | `H ` | | @theHamsta [hack](https://github.com/slackhq/tree-sitter-hack) | unsupported | `H ` | | [hare](https://github.com/tree-sitter-grammars/tree-sitter-hare) | core | `HFIJL` | | @amaanq -[haskell](https://github.com/tree-sitter/tree-sitter-haskell) | core | `HF J ` | | @mrcjkb +[haskell](https://github.com/tree-sitter/tree-sitter-haskell) | core | `HF JL` | | @mrcjkb [haskell_persistent](https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent) | community | `HF ` | | @lykahb [hcl](https://github.com/tree-sitter-grammars/tree-sitter-hcl) | core | `HFIJ ` | | @MichaHoffmann [heex](https://github.com/connorlay/tree-sitter-heex) | community | `HFIJL` | | @connorlay @@ -129,7 +129,7 @@ html_tags (queries only)[^html_tags] | community | `H IJ ` | | @TravonteD [jsdoc](https://github.com/tree-sitter/tree-sitter-jsdoc) | core | `H ` | | @steelsojka [json](https://github.com/tree-sitter/tree-sitter-json) | core | `HFI L` | | @steelsojka [json5](https://github.com/Joakker/tree-sitter-json5) | community | `H J ` | | @Joakker -[jsonc](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git) | community | `HFIJL` | | @WhyNotHugo +[jsonc](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc) | community | `HFIJL` | | @WhyNotHugo [jsonnet](https://github.com/sourcegraph/tree-sitter-jsonnet) | community | `HF L` | | @nawordar jsx (queries only)[^jsx] | community | `HFIJ ` | | @steelsojka [julia](https://github.com/tree-sitter/tree-sitter-julia) | core | `HFIJL` | | @theHamsta @@ -139,7 +139,7 @@ jsx (queries only)[^jsx] | community | `HFIJ ` | | @steelsojka [kotlin](https://github.com/fwcd/tree-sitter-kotlin) | community | `HF JL` | | @SalBakraa [koto](https://github.com/koto-lang/tree-sitter-koto) | community | `HF JL` | | @irh [kusto](https://github.com/Willem-J-an/tree-sitter-kusto) | community | `H J ` | | @Willem-J-an -[lalrpop](https://github.com/traxys/tree-sitter-lalrpop) | community | `H JL` | | @traxys +[lalrpop](https://github.com/traxys/tree-sitter-lalrpop) | community | `HF JL` | | @traxys [latex](https://github.com/latex-lsp/tree-sitter-latex) | community | `HF J ` | ✓ | @theHamsta, @clason [ledger](https://github.com/cbarrete/tree-sitter-ledger) | community | `HFIJ ` | | @cbarrete [leo](https://github.com/r001/tree-sitter-leo) | community | `H IJ ` | | @r001 @@ -175,7 +175,7 @@ jsx (queries only)[^jsx] | community | `HFIJ ` | | @steelsojka [ocamllex](https://github.com/atom-ocaml/tree-sitter-ocamllex) | community | `H J ` | ✓ | @undu [odin](https://github.com/tree-sitter-grammars/tree-sitter-odin) | core | `HFIJL` | | @amaanq [org](https://github.com/milisims/tree-sitter-org) | unsupported | ` ` | | -[pascal](https://github.com/Isopod/tree-sitter-pascal.git) | community | `HFIJL` | | @Isopod +[pascal](https://github.com/Isopod/tree-sitter-pascal) | community | `HFIJL` | | @Isopod [passwd](https://github.com/ath3/tree-sitter-passwd) | community | `H ` | | @amaanq [pem](https://github.com/tree-sitter-grammars/tree-sitter-pem) | core | `HF J ` | | @ObserverOfTime [perl](https://github.com/tree-sitter-perl/tree-sitter-perl) | community | `HF J ` | | @RabbiVeesh, @LeoNerd @@ -245,8 +245,9 @@ jsx (queries only)[^jsx] | community | `HFIJ ` | | @steelsojka [swift](https://github.com/alex-pinkus/tree-sitter-swift) | community | `H I L` | ✓ | @alex-pinkus [sxhkdrc](https://github.com/RaafatTurki/tree-sitter-sxhkdrc) | community | `HF J ` | | @RaafatTurki [systemtap](https://github.com/ok-ryoko/tree-sitter-systemtap) | community | `HF JL` | | @ok-ryoko -[t32](https://gitlab.com/xasc/tree-sitter-t32.git) | community | `HFIJL` | | @xasc +[t32](https://gitlab.com/xasc/tree-sitter-t32) | community | `HFIJL` | | @xasc [tablegen](https://github.com/tree-sitter-grammars/tree-sitter-tablegen) | core | `HFIJL` | | @amaanq +[tact](https://github.com/tact-lang/tree-sitter-tact) | community | `HFIJL` | | @novusnota [tcl](https://github.com/tree-sitter-grammars/tree-sitter-tcl) | core | `HFI ` | | @lewis6991 [teal](https://github.com/euclidianAce/tree-sitter-teal) | community | `HFIJL` | ✓ | @euclidianAce [templ](https://github.com/vrischmann/tree-sitter-templ) | community | `H J ` | | @vrischmann @@ -256,13 +257,14 @@ jsx (queries only)[^jsx] | community | `HFIJ ` | | @steelsojka [tiger](https://github.com/ambroisie/tree-sitter-tiger) | community | `HFIJL` | | @ambroisie [tlaplus](https://github.com/tlaplus-community/tree-sitter-tlaplus) | community | `HF JL` | | @ahelwer, @susliko [tmux](https://github.com/Freed-Wu/tree-sitter-tmux) | community | `H J ` | | @Freed-Wu -[todotxt](https://github.com/arnarg/tree-sitter-todotxt.git) | community | `H ` | | @arnarg +[todotxt](https://github.com/arnarg/tree-sitter-todotxt) | community | `H ` | | @arnarg [toml](https://github.com/tree-sitter-grammars/tree-sitter-toml) | core | `HFIJL` | | @tk-shirasaka [tsv](https://github.com/tree-sitter-grammars/tree-sitter-csv) | core | `H ` | | @amaanq [tsx](https://github.com/tree-sitter/tree-sitter-typescript) | core | `HFIJL` | | @steelsojka [turtle](https://github.com/BonaBeavis/tree-sitter-turtle) | community | `HFIJL` | | @BonaBeavis [twig](https://github.com/gbprod/tree-sitter-twig) | community | `H J ` | | @gbprod [typescript](https://github.com/tree-sitter/tree-sitter-typescript) | core | `HFIJL` | | @steelsojka +[typespec](https://github.com/happenslol/tree-sitter-typespec) | community | `H IJ ` | | @happenslol [typoscript](https://github.com/Teddytrombone/tree-sitter-typoscript) | community | `HFIJ ` | | @Teddytrombone [typst](https://github.com/uben0/tree-sitter-typst) | community | `HFIJ ` | | @uben0, @RaafatTurki [udev](https://github.com/tree-sitter-grammars/tree-sitter-udev) | core | `H JL` | | @ObserverOfTime @@ -4,13 +4,16 @@ This document lists the planned and finished changes in this rewrite towards [Nv ## TODO -- [ ] **`locals.lua`:** move to `nvim-treesitter-refactor`? -- [ ] **`parsers.lua`:** include revision? (<https://stackoverflow.com/questions/64260981>) -- [ ] **update-lockfile:** allow specifying version in addition to commit hash (for Tier 1) +- [ ] **`parsers.lua`:** include revision (serialization at home: `vim.inspect`) + - rename `parsers` to `languages` + - rename `install_info` to `parser` + +- [ ] **`parsers.lua`:** allow specifying version in addition to commit hash (for Tier 1) - [ ] **update-lockfile:** one commit per parser/tier? - [ ] **tests:** fix, update, extend (cover all Tier 1 languages) - [ ] **documentation:** consolidate, autogenerate? - [ ] **documentation:** migration guide +- [ ] **`locals.lua`:** move to `nvim-treesitter-refactor`? - [ ] **textobjects:** include simple(!) function, queries? (check Helix) - [ ] **downstream:** adapt to breaking changes (`nvim-treesitter-refactor`) diff --git a/doc/nvim-treesitter.txt b/doc/nvim-treesitter.txt index 8b530550c..ef55eb2d8 100644 --- a/doc/nvim-treesitter.txt +++ b/doc/nvim-treesitter.txt @@ -37,7 +37,7 @@ To get a list of supported languages To install supported parsers and queries, put this in your `init.lua` file: >lua - require'nvim-treesitter.configs'.setup { + require'nvim-treesitter.config'.setup { -- A directory to install the parsers and queries to. -- Defaults to the `stdpath('data')/site` dir. install_dir = "/some/path/to/store/parsers", diff --git a/lua/nvim-treesitter/_meta/parsers.lua b/lua/nvim-treesitter/_meta/parsers.lua new file mode 100644 index 000000000..09e4d1846 --- /dev/null +++ b/lua/nvim-treesitter/_meta/parsers.lua @@ -0,0 +1,47 @@ +---@meta +error('Cannot require a meta file') + +---@class InstallInfo +--- +---URL of parser repo (Github/Gitlab) +---@field url string +--- +---Commit hash of parser to download (compatible with queries) +---@field revision string +--- +---Files to include when compiling (`src/parser.c` and optionally `src/scanner.c') +---@field files string[] +--- +---Branch of parser repo to download (if not default branch) +---@field branch? string +--- +---Location of `grammar.js` in repo (if not at root, e.g., in a monorepo) +---@field location? string +--- +---Repo does not contain a `parser.c`; must be generated from grammar first +---@field generate? boolean +--- +---Parser needs to be generated from `grammar.json` (generating from `grammar.js` requires npm) +---@field generate_from_json? boolean +--- +---Parser repo is a local directory; overrides `url`, `revision`, and `branch` +---@field path? string + +---@class ParserInfo +--- +---Information necessary to build and install the parser (empty for query-only language) +---@field install_info? InstallInfo +--- +---List of Github users maintaining the queries for Neovim +---@field maintainers? string[] +--- +---List of other languages to install (e.g., if queries inherit from them) +---@field requires? string[] +--- +---Language support tier, maps to "core", "stable", "community", "unmaintained" +---@field tier integer +--- +---Explanatory footnote text to add in SUPPORTED_LANGUAGES.md +---@field readme_note? string + +---@alias nvim-ts.parsers table<string,ParserInfo> diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua index a52c6a10e..4c662bab6 100644 --- a/lua/nvim-treesitter/config.lua +++ b/lua/nvim-treesitter/config.lua @@ -1,5 +1,7 @@ local M = {} +M.tiers = { 'stable', 'core', 'community', 'unsupported' } + ---@class TSConfig ---@field auto_install boolean ---@field ensure_install string[] @@ -33,7 +35,7 @@ function M.setup(user_data) local ft = vim.bo[buf].filetype local lang = vim.treesitter.language.get_lang(ft) or ft if - require('nvim-treesitter.parsers').configs[lang] + require('nvim-treesitter.parsers')[lang] and not vim.list_contains(M.installed_parsers(), lang) and not vim.list_contains(config.ignore_install, lang) then @@ -51,7 +53,7 @@ function M.setup(user_data) local to_install = M.norm_languages(config.ensure_install, { ignored = true, installed = true }) if #to_install > 0 then - require('nvim-treesitter.install').install(to_install) + require('nvim-treesitter.install').install(to_install, { force = true }) end end end @@ -85,6 +87,52 @@ function M.installed_parsers() return installed end +-- Get a list of all available parsers +---@param tier integer? only get parsers of specified tier +---@return string[] +function M.get_available(tier) + local parsers = require('nvim-treesitter.parsers') + --- @type string[] + local languages = vim.tbl_keys(parsers) + table.sort(languages) + if tier then + languages = vim.tbl_filter( + --- @param p string + function(p) + return parsers[p].tier == tier + end, + languages + ) + end + if vim.fn.executable('tree-sitter') == 0 then + languages = vim.tbl_filter( + --- @param p string + function(p) + return parsers[p].install_info ~= nil and not parsers[p].install_info.generate + end, + languages + ) + end + return languages +end + +local function expand_tiers(list) + for i, tier in ipairs(M.tiers) do + if vim.list_contains(list, tier) then + list = vim.tbl_filter( + --- @param l string + function(l) + return l ~= tier + end, + list + ) + vim.list_extend(list, M.get_available(i)) + end + end + + return list +end + ---Normalize languages ---@param languages? string[]|string ---@param skip? { ignored: boolean, missing: boolean, installed: boolean, dependencies: boolean } @@ -96,32 +144,11 @@ function M.norm_languages(languages, skip) languages = { languages } end - local parsers = require('nvim-treesitter.parsers') - if vim.list_contains(languages, 'all') then if skip and skip.missing then return M.installed_parsers() end - languages = parsers.get_available() - end - - -- keep local to avoid leaking parsers module - --- @param list string[] - local function expand_tiers(list) - for i, tier in ipairs(parsers.tiers) do - if vim.list_contains(list, tier) then - list = vim.tbl_filter( - --- @param l string - function(l) - return l ~= tier - end, - list - ) - vim.list_extend(list, parsers.get_available(i)) - end - end - - return list + languages = M.get_available() end languages = expand_tiers(languages) @@ -159,19 +186,20 @@ function M.norm_languages(languages, skip) ) end + local parsers = require('nvim-treesitter.parsers') languages = vim.tbl_filter( --- @param v string function(v) -- TODO(lewis6991): warn of any unknown parsers? - return parsers.configs[v] ~= nil + return parsers[v] ~= nil end, languages ) if not (skip and skip.dependencies) then for _, lang in pairs(languages) do - if parsers.configs[lang].requires then - vim.list_extend(languages, parsers.configs[lang].requires) + if parsers[lang].requires then + vim.list_extend(languages, parsers[lang].requires) end end end diff --git a/lua/nvim-treesitter/health.lua b/lua/nvim-treesitter/health.lua index 5d3a23300..58ede835a 100644 --- a/lua/nvim-treesitter/health.lua +++ b/lua/nvim-treesitter/health.lua @@ -134,7 +134,7 @@ function M.check() health.start('Installed languages' .. string.rep(' ', 5) .. 'H L F I J') local languages = config.installed_parsers() for _, lang in pairs(languages) do - local parser = parsers.configs[lang] + local parser = parsers[lang] local out = lang .. string.rep(' ', 22 - #lang) if parser.install_info then for _, query_group in pairs(M.bundled_queries) do diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua index 6918a1820..8b3dc82fc 100644 --- a/lua/nvim-treesitter/install.lua +++ b/lua/nvim-treesitter/install.lua @@ -25,12 +25,6 @@ local uv_unlink = a.wrap(uv.fs_unlink, 2) local M = {} ----@class LockfileInfo ----@field revision string - ----@type table<string, LockfileInfo> -local lockfile = {} - local max_jobs = 10 local iswin = uv.os_uname().sysname == 'Windows_NT' @@ -63,7 +57,7 @@ end ---@param lang string ---@return InstallInfo? local function get_parser_install_info(lang) - local parser_config = parsers.configs[lang] + local parser_config = parsers[lang] if not parser_config then log.error('Parser not available for language "' .. lang .. '"') @@ -80,24 +74,6 @@ end ---@param lang string ---@return string? -local function get_target_revision(lang) - local info = get_parser_install_info(lang) - if info and info.revision then - return info.revision - end - - if #lockfile == 0 then - local filename = M.get_package_path('lockfile.json') - lockfile = vim.json.decode(util.read_file(filename)) --[[@as table<string, LockfileInfo>]] - end - - if lockfile[lang] then - return lockfile[lang].revision - end -end - ----@param lang string ----@return string? local function get_installed_revision(lang) local lang_file = fs.joinpath(config.get_install_dir('parser-info'), lang .. '.revision') return util.read_file(lang_file) @@ -106,9 +82,9 @@ end ---@param lang string ---@return boolean local function needs_update(lang) - local revision = get_target_revision(lang) - if revision then - return revision ~= get_installed_revision(lang) + local info = get_parser_install_info(lang) + if info and info.revision then + return info.revision ~= get_installed_revision(lang) end -- No revision. Check the queries link to the same place @@ -415,7 +391,7 @@ local function install_lang0(lang, cache_dir, install_dir, generate) local project_name = 'tree-sitter-' .. lang - local revision = get_target_revision(lang) + local revision = repo.revision local compile_location ---@type string if repo.path then @@ -525,40 +501,33 @@ local function install_lang(lang, cache_dir, install_dir, force, generate) return status end +--- Reload the parser table and user modifications in case of update +local function reload_parsers() + package.loaded['nvim-treesitter.parsers'] = nil + parsers = require('nvim-treesitter.parsers') + vim.api.nvim_exec_autocmds('User', { pattern = 'TSUpdate' }) +end + ---@class InstallOptions ---@field force? boolean ---@field generate? boolean ----@field skip? table --- Install a parser ---- @param languages? string[]|string +--- @param languages string[] --- @param options? InstallOptions --- @param _callback? fun() local function install(languages, options, _callback) options = options or {} - local force = options.force - local generate = options.generate - local skip = options.skip local cache_dir = vim.fs.normalize(fn.stdpath('cache')) local install_dir = config.get_install_dir('parser') - if not languages or type(languages) == 'string' then - languages = { languages } - end - - if languages[1] == 'all' then - force = true - end - - languages = config.norm_languages(languages, skip) - local tasks = {} --- @type fun()[] local done = 0 for _, lang in ipairs(languages) do tasks[#tasks + 1] = a.sync(function() a.main() - local status = install_lang(lang, cache_dir, install_dir, force, generate) + local status = install_lang(lang, cache_dir, install_dir, options.force, options.generate) if status ~= 'failed' then done = done + 1 end @@ -572,7 +541,20 @@ local function install(languages, options, _callback) end end -M.install = a.sync(install, 2) +M.install = a.sync(function(languages, options, _callback) + reload_parsers() + if not languages or #languages == 0 then + languages = 'all' + end + + languages = config.norm_languages(languages, options and options.skip) + + if languages[1] == 'all' then + options.force = true + end + + install(languages, options) +end, 2) ---@class UpdateOptions @@ -580,8 +562,7 @@ M.install = a.sync(install, 2) ---@param _options? UpdateOptions ---@param _callback function M.update = a.sync(function(languages, _options, _callback) - M.lockfile = {} - + reload_parsers() if not languages or #languages == 0 then languages = 'all' end diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 4e3222563..83011c7cb 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1,167 +1,146 @@ ----@class InstallInfo ----@field path? string ----@field url string ----@field branch? string ----@field revision? string ----@field files string[] ----@field generate? boolean ----@field generate_from_json? boolean ----@field location? string - ----@class ParserInfo ----@field install_info? InstallInfo ----@field maintainers? string[] ----@field requires? string[] ----@field tier integer ----@field readme_note? string - -local M = {} - -M.tiers = { 'stable', 'core', 'community', 'unsupported' } - ----@type table<string,ParserInfo> -M.configs = { +---@type nvim-ts.parsers +return { ada = { install_info = { - url = 'https://github.com/briot/tree-sitter-ada', files = { 'src/parser.c' }, + revision = 'e8e2515465cc2d7c444498e68bdb9f1d86767f95', + url = 'https://github.com/briot/tree-sitter-ada', }, maintainers = { '@briot' }, tier = 3, }, - agda = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-agda', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'd3dc807692e6bca671d4491b3bf5c67eeca8c016', + url = 'https://github.com/tree-sitter/tree-sitter-agda', }, maintainers = { '@Decodetalkers' }, tier = 2, }, - angular = { install_info = { - url = 'https://github.com/dlvandenberg/tree-sitter-angular', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '10f21f3f1b10584e62ecc113ab3cda1196d0ceb8', + url = 'https://github.com/dlvandenberg/tree-sitter-angular', }, maintainers = { '@dlvandenberg' }, requires = { 'html', 'html_tags' }, tier = 3, }, - apex = { install_info = { - url = 'https://github.com/aheber/tree-sitter-sfapex', files = { 'src/parser.c' }, location = 'apex', + revision = 'c99ad4b16d112fea91745e3f1b769754239fdaba', + url = 'https://github.com/aheber/tree-sitter-sfapex', }, maintainers = { '@aheber', '@xixiafinland' }, tier = 3, }, - arduino = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-arduino', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = 'afb34b2c65f507932c5c6ddbf0d5a9ca6a772f2f', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-arduino', }, maintainers = { '@ObserverOfTime' }, requires = { 'cpp' }, tier = 2, }, - asm = { install_info = { - url = 'https://github.com/RubixDev/tree-sitter-asm', files = { 'src/parser.c' }, + revision = 'b0306e9bb2ebe01c6562f1aef265cc42ccc53070', + url = 'https://github.com/RubixDev/tree-sitter-asm', }, maintainers = { '@RubixDev' }, tier = 3, }, - astro = { install_info = { - url = 'https://github.com/virchau13/tree-sitter-astro', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '4be180759ec13651f72bacee65fa477c64222a1a', + url = 'https://github.com/virchau13/tree-sitter-astro', }, maintainers = { '@virchau13' }, requires = { 'html', 'html_tags' }, tier = 3, }, - authzed = { install_info = { - url = 'https://github.com/mleonidas/tree-sitter-authzed', files = { 'src/parser.c' }, + revision = '1dec7e1af96c56924e3322cd85fdce15d0a31d00', + url = 'https://github.com/mleonidas/tree-sitter-authzed', }, maintainers = { '@mattpolzin' }, tier = 3, }, - awk = { install_info = { - url = 'https://github.com/Beaglefoot/tree-sitter-awk', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'ba7472152d79a8c916550c80fdbfd5724d07a0c9', + url = 'https://github.com/Beaglefoot/tree-sitter-awk', }, tier = 4, }, - bash = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-bash', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '2fbd860f802802ca76a6661ce025b3a3bca2d3ed', + url = 'https://github.com/tree-sitter/tree-sitter-bash', }, maintainers = { '@TravonteD' }, tier = 1, }, - bass = { install_info = { - url = 'https://github.com/vito/tree-sitter-bass', files = { 'src/parser.c' }, + revision = '28dc7059722be090d04cd751aed915b2fee2f89a', + url = 'https://github.com/vito/tree-sitter-bass', }, maintainers = { '@amaanq' }, tier = 3, }, - beancount = { install_info = { - url = 'https://github.com/polarmutex/tree-sitter-beancount', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'c25f8034c977681653a8acd541c8b4877a58f474', + url = 'https://github.com/polarmutex/tree-sitter-beancount', }, maintainers = { '@polarmutex' }, tier = 3, }, - bibtex = { install_info = { - url = 'https://github.com/latex-lsp/tree-sitter-bibtex', files = { 'src/parser.c' }, + revision = 'ccfd77db0ed799b6c22c214fe9d2937f47bc8b34', + url = 'https://github.com/latex-lsp/tree-sitter-bibtex', }, maintainers = { '@theHamsta', '@clason' }, tier = 3, }, - bicep = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-bicep', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '0092c7d1bd6bb22ce0a6f78497d50ea2b87f19c0', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-bicep', }, maintainers = { '@amaanq' }, tier = 2, }, - bitbake = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-bitbake', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a5d04fdb5a69a02b8fa8eb5525a60dfb5309b73b', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-bitbake', }, maintainers = { '@amaanq' }, tier = 2, }, - blade = { install_info = { url = 'https://github.com/EmranMR/tree-sitter-blade', @@ -172,21 +151,22 @@ M.configs = { }, blueprint = { install_info = { - url = 'https://gitlab.com/gabmus/tree-sitter-blueprint.git', files = { 'src/parser.c' }, + revision = '60ba73739c6083c693d86a1a7cf039c07eb4ed59', + url = 'https://gitlab.com/gabmus/tree-sitter-blueprint', }, maintainers = { '@gabmus' }, tier = 4, }, - bp = { install_info = { - url = 'https://github.com/ambroisie/tree-sitter-bp', files = { 'src/parser.c' }, + revision = '2326d709fb9cf73cf124fdbc803c267f851721a4', + url = 'https://github.com/ambroisie/tree-sitter-bp', }, maintainers = { '@ambroisie' }, - tier = 3, readme_note = 'Android Blueprint', + tier = 3, }, brightscript = { install_info = { @@ -198,31 +178,31 @@ M.configs = { }, c = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-c', files = { 'src/parser.c' }, + revision = 'deca017a554045b4c203e7ddff39ae64ff05e071', + url = 'https://github.com/tree-sitter/tree-sitter-c', }, maintainers = { '@amaanq' }, tier = 1, }, - c_sharp = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-c-sharp', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '82fa8f05f41a33e9bc830f85d74a9548f0291738', + url = 'https://github.com/tree-sitter/tree-sitter-c-sharp', }, maintainers = { '@amaanq' }, tier = 2, }, - cairo = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-cairo', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '6238f609bea233040fe927858156dee5515a0745', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-cairo', }, maintainers = { '@amaanq' }, tier = 2, }, - caddy = { install_info = { url = 'https://github.com/opa-oz/tree-sitter-caddy', @@ -231,25 +211,24 @@ M.configs = { maintainers = { '@opa-oz' }, tier = 3, }, - capnp = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-capnp', files = { 'src/parser.c' }, + revision = '7b0883c03e5edd34ef7bcf703194204299d7099f', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-capnp', }, maintainers = { '@amaanq' }, tier = 2, }, - chatito = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-chatito', files = { 'src/parser.c' }, + revision = 'a461f20dedb43905febb12c1635bc7d2e43e96f0', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-chatito', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - circom = { install_info = { url = 'https://github.com/Decurity/tree-sitter-circom', @@ -258,122 +237,121 @@ M.configs = { maintainers = { '@alexandr-martirosyan' }, tier = 3, }, - clojure = { install_info = { - url = 'https://github.com/sogaiu/tree-sitter-clojure', files = { 'src/parser.c' }, + revision = 'f4236d4da8aa92bc105d9c118746474c608e6af7', + url = 'https://github.com/sogaiu/tree-sitter-clojure', }, maintainers = { '@NoahTheDuke' }, tier = 3, }, - cmake = { install_info = { - url = 'https://github.com/uyha/tree-sitter-cmake', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '20ffd6d3b4da1acdbf2d08204b2130a5b2f7c4b3', + url = 'https://github.com/uyha/tree-sitter-cmake', }, maintainers = { '@uyha' }, tier = 3, }, - comment = { install_info = { - url = 'https://github.com/stsewd/tree-sitter-comment', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '5d8b29f6ef3bf64d59430dcfe76b31cc44b5abfd', + url = 'https://github.com/stsewd/tree-sitter-comment', }, maintainers = { '@stsewd' }, tier = 3, }, - commonlisp = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-commonlisp', files = { 'src/parser.c' }, generate_from_json = true, + revision = 'bf2a65b1c119898a1a17389e07f2a399c05cdc0c', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-commonlisp', }, maintainers = { '@theHamsta' }, tier = 2, }, - cooklang = { install_info = { - url = 'https://github.com/addcninblue/tree-sitter-cooklang', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '4ebe237c1cf64cf3826fc249e9ec0988fe07e58e', + url = 'https://github.com/addcninblue/tree-sitter-cooklang', }, maintainers = { '@addcninblue' }, tier = 3, }, - corn = { install_info = { - url = 'https://github.com/jakestanger/tree-sitter-corn', files = { 'src/parser.c' }, + revision = '604d73c38d4c28ca68e9e441ffd405d68cb63051', + url = 'https://github.com/jakestanger/tree-sitter-corn', }, maintainers = { '@jakestanger' }, tier = 3, }, - cpon = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-cpon', files = { 'src/parser.c' }, + revision = '594289eadfec719198e560f9d7fd243c4db678d5', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-cpon', }, maintainers = { '@amaanq' }, tier = 2, }, - cpp = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-cpp', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = 'd29fbff09a8c9ff4f3074de2595dfca12cb33da9', + url = 'https://github.com/tree-sitter/tree-sitter-cpp', }, maintainers = { '@theHamsta' }, requires = { 'c' }, tier = 2, }, - css = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-css', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'f6be52c3d1cdb1c5e4dd7d8bce0a57497f55d6af', + url = 'https://github.com/tree-sitter/tree-sitter-css', }, maintainers = { '@TravonteD' }, tier = 2, }, - csv = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', files = { 'src/parser.c' }, location = 'csv', + revision = '7eb7297823605392d2bbcc4c09b1cd18d6fa9529', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', }, maintainers = { '@amaanq' }, requires = { 'tsv' }, tier = 2, }, - cuda = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-cuda', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '1f188eff83b562ffae36d13e1b804ec6f3b9f1d9', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-cuda', }, maintainers = { '@theHamsta' }, requires = { 'cpp' }, tier = 2, }, - cue = { install_info = { - url = 'https://github.com/eonpatapon/tree-sitter-cue', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '8a5f273bfa281c66354da562f2307c2d394b6c81', + url = 'https://github.com/eonpatapon/tree-sitter-cue', }, maintainers = { '@amaanq' }, tier = 3, }, - cylc = { install_info = { url = 'https://github.com/elliotfontaine/tree-sitter-cylc', @@ -382,141 +360,138 @@ M.configs = { maintainers = { '@elliotfontaine' }, tier = 3, }, - d = { install_info = { - url = 'https://github.com/gdamore/tree-sitter-d', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '750dde90ed9cdbd82493bc28478d8ab1976b0e9f', + url = 'https://github.com/gdamore/tree-sitter-d', }, - tier = 3, maintainers = { '@amaanq' }, + tier = 3, }, - dart = { install_info = { - url = 'https://github.com/UserNobody14/tree-sitter-dart', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'ac0bb849ccd1a923963af47573b5e396736ff582', + url = 'https://github.com/UserNobody14/tree-sitter-dart', }, maintainers = { '@akinsho' }, tier = 3, }, - desktop = { install_info = { - url = 'https://github.com/ValdezFOmar/tree-sitter-desktop', files = { 'src/parser.c' }, + url = 'https://github.com/ValdezFOmar/tree-sitter-desktop', }, maintainers = { '@ValdezFOmar' }, tier = 3, }, - devicetree = { install_info = { - url = 'https://github.com/joelspadin/tree-sitter-devicetree', files = { 'src/parser.c' }, + revision = 'fb07e6044ffd36932c57a5be01ba5d6b8a9337bb', + url = 'https://github.com/joelspadin/tree-sitter-devicetree', }, maintainers = { '@jedrzejboczar' }, tier = 3, }, - dhall = { install_info = { - url = 'https://github.com/jbellerb/tree-sitter-dhall', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'affb6ee38d629c9296749767ab832d69bb0d9ea8', + url = 'https://github.com/jbellerb/tree-sitter-dhall', }, maintainers = { '@amaanq' }, tier = 3, }, - diff = { install_info = { - url = 'https://github.com/the-mikedavis/tree-sitter-diff', files = { 'src/parser.c' }, + revision = '629676fc3919606964231b2c7b9677d6998a2cb4', + url = 'https://github.com/the-mikedavis/tree-sitter-diff', }, maintainers = { '@gbprod' }, tier = 3, }, - disassembly = { install_info = { - url = 'https://github.com/ColinKennedy/tree-sitter-disassembly', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '0229c0211dba909c5d45129ac784a3f4d49c243a', + url = 'https://github.com/ColinKennedy/tree-sitter-disassembly', }, maintainers = { '@ColinKennedy' }, tier = 3, }, - djot = { install_info = { - url = 'https://github.com/treeman/tree-sitter-djot', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '0e9a836ec47612ade15645fb1680adb549894a6c', + url = 'https://github.com/treeman/tree-sitter-djot', }, maintainers = { '@NoahTheDuke' }, tier = 3, }, - dockerfile = { install_info = { - url = 'https://github.com/camdencheek/tree-sitter-dockerfile', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '087daa20438a6cc01fa5e6fe6906d77c869d19fe', + url = 'https://github.com/camdencheek/tree-sitter-dockerfile', }, maintainers = { '@camdencheek' }, tier = 3, }, - dot = { install_info = { - url = 'https://github.com/rydesun/tree-sitter-dot', files = { 'src/parser.c' }, + revision = '9ab85550c896d8b294d9b9ca1e30698736f08cea', + url = 'https://github.com/rydesun/tree-sitter-dot', }, maintainers = { '@rydesun' }, tier = 3, }, - doxygen = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-doxygen', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '4a30eba5d047d6a8c5b005202b4848c0b33d76ca', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-doxygen', }, maintainers = { '@amaanq' }, tier = 2, }, - dtd = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', files = { 'src/parser.c', 'src/scanner.c' }, location = 'dtd', + revision = '648183d86f6f8ffb240ea11b4c6873f6f45d8b67', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - earthfile = { install_info = { - url = 'https://github.com/glehmann/tree-sitter-earthfile', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '6de809419cdfb23e3a8383b6575fa3634900f276', + url = 'https://github.com/glehmann/tree-sitter-earthfile', }, maintainers = { '@glehmann' }, tier = 3, }, - ebnf = { install_info = { - url = 'https://github.com/RubixDev/ebnf', files = { 'src/parser.c' }, location = 'crates/tree-sitter-ebnf', + revision = '8e635b0b723c620774dfb8abf382a7f531894b40', + url = 'https://github.com/RubixDev/ebnf', }, maintainers = { '@RubixDev' }, tier = 3, }, - ecma = { maintainers = { '@steelsojka' }, readme_note = 'queries required by javascript, typescript, tsx, qmljs', tier = 3, }, - editorconfig = { install_info = { url = 'https://github.com/ValdezFOmar/tree-sitter-editorconfig', @@ -525,69 +500,68 @@ M.configs = { maintainers = { '@ValdezFOmar' }, tier = 3, }, - eds = { install_info = { - url = 'https://github.com/uyha/tree-sitter-eds', files = { 'src/parser.c' }, + revision = '5517bdb90c90703df49579a4b04689a614780be2', + url = 'https://github.com/uyha/tree-sitter-eds', }, maintainers = { '@uyha' }, tier = 3, }, - eex = { install_info = { - url = 'https://github.com/connorlay/tree-sitter-eex', files = { 'src/parser.c' }, + revision = 'f742f2fe327463335e8671a87c0b9b396905d1d1', + url = 'https://github.com/connorlay/tree-sitter-eex', }, maintainers = { '@connorlay' }, tier = 3, }, - elixir = { install_info = { - url = 'https://github.com/elixir-lang/tree-sitter-elixir', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'de690fa8a028f122af46d9d2685679fe5f2d7d60', + url = 'https://github.com/elixir-lang/tree-sitter-elixir', }, maintainers = { '@connorlay' }, tier = 3, }, - elm = { install_info = { - url = 'https://github.com/elm-tooling/tree-sitter-elm', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '09dbf221d7491dc8d8839616b27c21b9c025c457', + url = 'https://github.com/elm-tooling/tree-sitter-elm', }, maintainers = { '@zweimach' }, tier = 3, }, - elsa = { install_info = { - url = 'https://github.com/glapa-grossklag/tree-sitter-elsa', files = { 'src/parser.c' }, + revision = '0a66b2b3f3c1915e67ad2ef9f7dbd2a84820d9d7', + url = 'https://github.com/glapa-grossklag/tree-sitter-elsa', }, maintainers = { '@glapa-grossklag', '@amaanq' }, tier = 3, }, - elvish = { install_info = { - url = 'https://github.com/elves/tree-sitter-elvish', files = { 'src/parser.c' }, + revision = '5e7210d945425b77f82cbaebc5af4dd3e1ad40f5', + url = 'https://github.com/elves/tree-sitter-elvish', }, maintainers = { '@elves' }, tier = 3, }, - embedded_template = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-embedded-template', files = { 'src/parser.c' }, + revision = '38d5004a797298dc42c85e7706c5ceac46a3f29f', + url = 'https://github.com/tree-sitter/tree-sitter-embedded-template', }, tier = 4, }, - enforce = { install_info = { url = 'https://github.com/simonvic/tree-sitter-enforce', @@ -596,239 +570,235 @@ M.configs = { maintainers = { '@simonvic' }, tier = 3, }, - erlang = { install_info = { - url = 'https://github.com/WhatsApp/tree-sitter-erlang', files = { 'src/parser.c', 'src/parser.c' }, + revision = '98ea1f9c957b2ad520415eecb5a5b406e931101e', + url = 'https://github.com/WhatsApp/tree-sitter-erlang', }, maintainers = { '@filmor' }, tier = 3, }, - facility = { install_info = { - url = 'https://github.com/FacilityApi/tree-sitter-facility', files = { 'src/parser.c' }, + revision = 'a52579670e2b14ec03d410c3c980fafaf6d659c4', + url = 'https://github.com/FacilityApi/tree-sitter-facility', }, maintainers = { '@bryankenote' }, tier = 3, }, - faust = { install_info = { - url = 'https://github.com/khiner/tree-sitter-faust', files = { 'src/parser.c' }, + revision = 'f3b9274514b5f9bf6b0dd4a01c30f9cc15c58bc4', + url = 'https://github.com/khiner/tree-sitter-faust', }, maintainers = { '@khiner' }, tier = 3, }, - fennel = { install_info = { - url = 'https://github.com/alexmozaidze/tree-sitter-fennel', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = 'cfbfa478dc2dbef267ee94ae4323d9c886f45e94', + url = 'https://github.com/alexmozaidze/tree-sitter-fennel', }, maintainers = { '@alexmozaidze' }, tier = 3, }, - fidl = { install_info = { - url = 'https://github.com/google/tree-sitter-fidl', files = { 'src/parser.c' }, + revision = '0a8910f293268e27ff554357c229ba172b0eaed2', + url = 'https://github.com/google/tree-sitter-fidl', }, maintainers = { '@chaopeng' }, tier = 3, }, - firrtl = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-firrtl', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '8503d3a0fe0f9e427863cb0055699ff2d29ae5f5', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-firrtl', }, maintainers = { '@amaanq' }, tier = 2, }, - fish = { install_info = { - url = 'https://github.com/ram02z/tree-sitter-fish', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a78aef9abc395c600c38a037ac779afc7e3cc9e0', + url = 'https://github.com/ram02z/tree-sitter-fish', }, maintainers = { '@ram02z' }, tier = 3, }, - foam = { install_info = { - url = 'https://github.com/FoamScience/tree-sitter-foam', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '04664b40c0dadb7ef37028acf3422c63271d377b', + url = 'https://github.com/FoamScience/tree-sitter-foam', }, maintainers = { '@FoamScience' }, tier = 3, }, - forth = { install_info = { - url = 'https://github.com/AlexanderBrevig/tree-sitter-forth', files = { 'src/parser.c' }, + revision = '90189238385cf636b9ee99ce548b9e5b5e569d48', + url = 'https://github.com/AlexanderBrevig/tree-sitter-forth', }, maintainers = { '@amaanq' }, tier = 3, }, - fortran = { install_info = { - url = 'https://github.com/stadelmanma/tree-sitter-fortran', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'f73d473e3530862dee7cbb38520f28824e7804f6', + url = 'https://github.com/stadelmanma/tree-sitter-fortran', }, maintainers = { '@amaanq' }, tier = 3, }, - fsh = { install_info = { - url = 'https://github.com/mgramigna/tree-sitter-fsh', files = { 'src/parser.c' }, + revision = 'fad2e175099a45efbc98f000cc196d3674cc45e0', + url = 'https://github.com/mgramigna/tree-sitter-fsh', }, maintainers = { '@mgramigna' }, tier = 3, }, - fsharp = { install_info = { - url = 'https://github.com/ionide/tree-sitter-fsharp', files = { 'src/parser.c', 'src/scanner.c' }, location = 'fsharp', + url = 'https://github.com/ionide/tree-sitter-fsharp', }, maintainers = { '@nsidorenco' }, tier = 3, }, - func = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-func', files = { 'src/parser.c' }, + revision = 'f780ca55e65e7d7360d0229331763e16c452fc98', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-func', }, maintainers = { '@amaanq' }, tier = 2, }, - fusion = { install_info = { - url = 'https://gitlab.com/jirgn/tree-sitter-fusion.git', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6', + url = 'https://gitlab.com/jirgn/tree-sitter-fusion', }, maintainers = { '@jirgn' }, tier = 3, }, - gap = { install_info = { url = 'https://github.com/gap-system/tree-sitter-gap', files = { 'src/parser.c', 'src/scanner.c' }, }, maintainers = { '@reiniscirpons' }, - readme_name = 'GAP system', + readme_note = 'GAP system', tier = 3, }, - gaptst = { install_info = { url = 'https://github.com/gap-system/tree-sitter-gaptst', files = { 'src/parser.c', 'src/scanner.c' }, }, maintainers = { '@reiniscirpons' }, - readme_name = 'GAP system test files', + readme_note = 'GAP system test files', requires = { 'gap' }, tier = 3, }, - gdscript = { install_info = { - url = 'https://github.com/PrestonKnopp/tree-sitter-gdscript', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '1f1e782fe2600f50ae57b53876505b8282388d77', + url = 'https://github.com/PrestonKnopp/tree-sitter-gdscript', }, maintainers = { '@PrestonKnopp' }, readme_note = 'Godot', tier = 3, }, - gdshader = { install_info = { - url = 'https://github.com/GodOfAvacyn/tree-sitter-gdshader', files = { 'src/parser.c' }, + revision = 'ffd9f958df13cae04593781d7d2562295a872455', + url = 'https://github.com/GodOfAvacyn/tree-sitter-gdshader', }, maintainers = { '@godofavacyn' }, tier = 3, }, - + git_config = { + install_info = { + files = { 'src/parser.c' }, + revision = '9c2a1b7894e6d9eedfe99805b829b4ecd871375e', + url = 'https://github.com/the-mikedavis/tree-sitter-git-config', + }, + maintainers = { '@amaanq' }, + tier = 3, + }, git_rebase = { install_info = { - url = 'https://github.com/the-mikedavis/tree-sitter-git-rebase', files = { 'src/parser.c' }, + revision = 'd8a4207ebbc47bd78bacdf48f883db58283f9fd8', + url = 'https://github.com/the-mikedavis/tree-sitter-git-rebase', }, maintainers = { '@gbprod' }, tier = 3, }, - gitattributes = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-gitattributes', files = { 'src/parser.c' }, + revision = '41940e199ba5763abea1d21b4f717014b45f01ea', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-gitattributes', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - gitcommit = { install_info = { - url = 'https://github.com/gbprod/tree-sitter-gitcommit', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'edd817e0532f179b7f7f371dc180629070945f0c', + url = 'https://github.com/gbprod/tree-sitter-gitcommit', }, maintainers = { '@gbprod' }, tier = 3, }, - - git_config = { - install_info = { - url = 'https://github.com/the-mikedavis/tree-sitter-git-config', - files = { 'src/parser.c' }, - }, - maintainers = { '@amaanq' }, - tier = 3, - }, - gitignore = { install_info = { - url = 'https://github.com/shunsambongi/tree-sitter-gitignore', files = { 'src/parser.c' }, + revision = 'f4685bf11ac466dd278449bcfe5fd014e94aa504', + url = 'https://github.com/shunsambongi/tree-sitter-gitignore', }, maintainers = { '@theHamsta' }, tier = 3, }, - gleam = { install_info = { - url = 'https://github.com/gleam-lang/tree-sitter-gleam', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '02a17bf9d0553406268cdbf466d57808ae712bf3', + url = 'https://github.com/gleam-lang/tree-sitter-gleam', }, maintainers = { '@amaanq' }, tier = 3, }, - glimmer = { install_info = { - url = 'https://github.com/ember-tooling/tree-sitter-glimmer', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '6b25d265c990139353e1f7f97baf84987ebb7bf0', + url = 'https://github.com/ember-tooling/tree-sitter-glimmer', }, maintainers = { '@NullVoxPopuli' }, readme_note = 'Glimmer and Ember', tier = 3, }, - glimmer_javascript = { install_info = { url = 'https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript', @@ -836,10 +806,9 @@ M.configs = { generate_requires_npm = true, }, maintainers = { '@NullVoxPopuli' }, - requires = { 'javascript' }, + requires = { 'ecma' }, tier = 3, }, - glimmer_typescript = { install_info = { url = 'https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript', @@ -850,46 +819,45 @@ M.configs = { requires = { 'typescript' }, tier = 3, }, - glsl = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-glsl', files = { 'src/parser.c' }, generate_from_json = true, + revision = '7f91bf34cadc06a96efc475df501ffca4dda9410', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-glsl', }, maintainers = { '@theHamsta' }, requires = { 'c' }, tier = 2, }, - gn = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-gn', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'bc06955bc1e3c9ff8e9b2b2a55b38b94da923c05', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-gn', }, maintainers = { '@amaanq' }, readme_name = 'GN (Generate Ninja)', tier = 2, }, - gnuplot = { install_info = { - url = 'https://github.com/dpezto/tree-sitter-gnuplot', files = { 'src/parser.c' }, + revision = '3c895f5d9c0b3a3c7e02383766b462c21913c000', + url = 'https://github.com/dpezto/tree-sitter-gnuplot', }, maintainers = { '@dpezto' }, tier = 3, }, - go = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-go', files = { 'src/parser.c' }, + revision = '7ee8d928db5202f6831a78f8112fd693bf69f98b', + url = 'https://github.com/tree-sitter/tree-sitter-go', }, maintainers = { '@theHamsta', '@WinWisely268' }, tier = 2, }, - goctl = { install_info = { url = 'https://github.com/chaozwn/tree-sitter-goctl', @@ -898,71 +866,70 @@ M.configs = { maintainers = { '@chaozwn' }, tier = 3, }, - godot_resource = { install_info = { - url = 'https://github.com/PrestonKnopp/tree-sitter-godot-resource', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '2ffb90de47417018651fc3b970e5f6b67214dc9d', + url = 'https://github.com/PrestonKnopp/tree-sitter-godot-resource', }, maintainers = { '@pierpo' }, readme_note = 'Godot Resources', tier = 3, }, - gomod = { install_info = { - url = 'https://github.com/camdencheek/tree-sitter-go-mod', files = { 'src/parser.c' }, + revision = 'bbe2fe3be4b87e06a613e685250f473d2267f430', + url = 'https://github.com/camdencheek/tree-sitter-go-mod', }, maintainers = { '@camdencheek' }, tier = 3, }, - gosum = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-go-sum', files = { 'src/parser.c' }, + revision = 'e2ac513b2240c7ff1069ae33b2df29ce90777c11', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-go-sum', }, maintainers = { '@amaanq' }, tier = 2, }, - - gowork = { + gotmpl = { install_info = { - url = 'https://github.com/omertuc/tree-sitter-go-work', files = { 'src/parser.c' }, + revision = '9d3f6e526dd074b9edae9070b7bb778f00e87a5b', + url = 'https://github.com/ngalaiko/tree-sitter-go-template', }, - maintainers = { '@omertuc' }, + maintainers = { '@qvalentin' }, tier = 3, }, - - graphql = { + gowork = { install_info = { - url = 'https://github.com/bkegley/tree-sitter-graphql', files = { 'src/parser.c' }, + revision = '949a8a470559543857a62102c84700d291fc984c', + url = 'https://github.com/omertuc/tree-sitter-go-work', }, - maintainers = { '@bkegley' }, + maintainers = { '@omertuc' }, tier = 3, }, - - gotmpl = { + gpg = { install_info = { - url = 'https://github.com/ngalaiko/tree-sitter-go-template', files = { 'src/parser.c' }, + revision = 'f99323fb8f3f10b6c69db0c2f6d0a14bd7330675', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-gpg-config', }, - maintainers = { '@qvalentin' }, - tier = 3, + maintainers = { '@ObserverOfTime' }, + tier = 2, }, - - gpg = { + graphql = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-gpg-config', files = { 'src/parser.c' }, + revision = '5e66e961eee421786bdda8495ed1db045e06b5fe', + url = 'https://github.com/bkegley/tree-sitter-graphql', }, - maintainers = { '@ObserverOfTime' }, - tier = 2, + maintainers = { '@bkegley' }, + tier = 3, }, - gren = { install_info = { files = { 'src/parser.c', 'src/scanner.c' }, @@ -971,199 +938,197 @@ M.configs = { maintainers = { '@MaeBrooks' }, tier = 3, }, - groovy = { install_info = { - url = 'https://github.com/murtaza64/tree-sitter-groovy', files = { 'src/parser.c' }, + revision = '6c5c8813233fe326e24c5ef032858d13f8006a8d', + url = 'https://github.com/murtaza64/tree-sitter-groovy', }, maintainers = { '@murtaza64' }, tier = 3, }, - gstlaunch = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-gstlaunch', files = { 'src/parser.c' }, + revision = '549aef253fd38a53995cda1bf55c501174372bf7', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-gstlaunch', }, maintainers = { '@theHamsta' }, tier = 2, }, - hack = { install_info = { - url = 'https://github.com/slackhq/tree-sitter-hack', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'fca1e294f6dce8ec5659233a6a21f5bd0ed5b4f2', + url = 'https://github.com/slackhq/tree-sitter-hack', }, tier = 4, }, - hare = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-hare', files = { 'src/parser.c' }, + revision = '070524937539eb8bb4f10debd9c83b66c434f3a2', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-hare', }, maintainers = { '@amaanq' }, tier = 2, }, - haskell = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-haskell', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a50070d5bb5bd5c1281740a6102ecf1f4b0c4f19', + url = 'https://github.com/tree-sitter/tree-sitter-haskell', }, maintainers = { '@mrcjkb' }, tier = 2, }, - haskell_persistent = { install_info = { - url = 'https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '577259b4068b2c281c9ebf94c109bd50a74d5857', + url = 'https://github.com/MercuryTechnologies/tree-sitter-haskell-persistent', }, maintainers = { '@lykahb' }, tier = 3, }, - hcl = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-hcl', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'e936d3fef8bac884661472dce71ad82284761eb1', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-hcl', }, maintainers = { '@MichaHoffmann' }, tier = 2, }, - heex = { install_info = { - url = 'https://github.com/connorlay/tree-sitter-heex', files = { 'src/parser.c' }, + revision = 'b5ad6e34eea18a15bbd1466ca707a17f9bff7b93', + url = 'https://github.com/connorlay/tree-sitter-heex', }, maintainers = { '@connorlay' }, tier = 3, }, - helm = { install_info = { - url = 'https://github.com/ngalaiko/tree-sitter-go-template', - location = 'dialects/helm', files = { 'src/parser.c' }, + location = 'dialects/helm', + revision = '9d3f6e526dd074b9edae9070b7bb778f00e87a5b', + url = 'https://github.com/ngalaiko/tree-sitter-go-template', }, maintainers = { '@qvalentin' }, tier = 3, }, - hjson = { install_info = { - url = 'https://github.com/winston0410/tree-sitter-hjson', files = { 'src/parser.c' }, generate_from_json = true, + revision = '02fa3b79b3ff9a296066da6277adfc3f26cbc9e0', + url = 'https://github.com/winston0410/tree-sitter-hjson', }, maintainers = { '@winston0410' }, requires = { 'json' }, tier = 3, }, - hlsl = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-hlsl', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '5e1225a30712ca0a9040509806c7ba274a1bbcde', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-hlsl', }, maintainers = { '@theHamsta' }, requires = { 'cpp' }, tier = 2, }, - hlsplaylist = { install_info = { - url = 'https://github.com/Freed-Wu/tree-sitter-hlsplaylist', files = { 'src/parser.c' }, + revision = '64f19029339e75d6762feae39e7878595860c980', + url = 'https://github.com/Freed-Wu/tree-sitter-hlsplaylist', }, maintainers = { '@Freed-Wu' }, tier = 3, }, - hocon = { install_info = { - url = 'https://github.com/antosha417/tree-sitter-hocon', files = { 'src/parser.c' }, generate_from_json = true, + revision = 'c390f10519ae69fdb03b3e5764f5592fb6924bcc', + url = 'https://github.com/antosha417/tree-sitter-hocon', }, maintainers = { '@antosha417' }, tier = 4, }, - hoon = { install_info = { - url = 'https://github.com/urbit-pilled/tree-sitter-hoon', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a24c5a39d1d7e993a8bee913c8e8b6a652ca5ae8', + url = 'https://github.com/urbit-pilled/tree-sitter-hoon', }, maintainers = { '@urbit-pilled' }, tier = 3, }, - - html_tags = { - maintainers = { '@TravonteD' }, - readme_note = 'queries required by html, astro, vue, svelte', - tier = 3, - }, - html = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-html', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'e4d834eb4918df01dcad5c27d1b15d56e3bd94cd', + url = 'https://github.com/tree-sitter/tree-sitter-html', }, maintainers = { '@TravonteD' }, requires = { 'html_tags' }, tier = 2, }, - + html_tags = { + maintainers = { '@TravonteD' }, + readme_note = 'queries required by html, astro, vue, svelte', + tier = 3, + }, htmldjango = { install_info = { - url = 'https://github.com/interdependence/tree-sitter-htmldjango', files = { 'src/parser.c' }, + revision = 'ea71012d3fe14dd0b69f36be4f96bdfe9155ebae', + url = 'https://github.com/interdependence/tree-sitter-htmldjango', }, maintainers = { '@ObserverOfTime' }, tier = 3, }, - http = { install_info = { - url = 'https://github.com/rest-nvim/tree-sitter-http', files = { 'src/parser.c' }, + revision = '8d22f33faa5aa95c6526606fb656ada342e59e40', + url = 'https://github.com/rest-nvim/tree-sitter-http', }, maintainers = { '@amaanq', '@NTBBloodbath' }, tier = 3, }, - hurl = { install_info = { - url = 'https://github.com/pfeiferj/tree-sitter-hurl', files = { 'src/parser.c' }, + revision = 'ad705af8c44c737bdb965fc081329c50716d2d03', + url = 'https://github.com/pfeiferj/tree-sitter-hurl', }, maintainers = { '@pfeiferj' }, tier = 3, }, - hyprlang = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-hyprlang', files = { 'src/parser.c' }, + revision = 'e5da7d0aa44403153e0394d87d9edea4e5bd6609', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-hyprlang', }, maintainers = { '@luckasRanarison' }, tier = 2, }, - idl = { install_info = { - url = 'https://github.com/cathaysia/tree-sitter-idl', files = { 'src/parser.c' }, + revision = '9f56001f8ed29b0ea9fa4f02813f3e83ab0a2aaa', + url = 'https://github.com/cathaysia/tree-sitter-idl', }, maintainers = { '@cathaysia' }, tier = 3, }, - idris = { install_info = { url = 'https://github.com/kayhide/tree-sitter-idris', @@ -1172,25 +1137,24 @@ M.configs = { maintainers = { '@srghma' }, tier = 3, }, - ini = { install_info = { - url = 'https://github.com/justinmk/tree-sitter-ini', files = { 'src/parser.c' }, + revision = '87176e524f0a98f5be75fa44f4f0ff5c6eac069c', + url = 'https://github.com/justinmk/tree-sitter-ini', }, maintainers = { '@theHamsta' }, tier = 3, }, - inko = { install_info = { - url = 'https://github.com/inko-lang/tree-sitter-inko', files = { 'src/parser.c' }, + revision = '234c87be1dac20f766ddf6f486a7bde2a4bc5594', + url = 'https://github.com/inko-lang/tree-sitter-inko', }, maintainers = { '@yorickpeterse' }, tier = 3, }, - ipkg = { install_info = { url = 'https://github.com/srghma/tree-sitter-ipkg', @@ -1199,36 +1163,35 @@ M.configs = { maintainers = { '@srghma' }, tier = 3, }, - ispc = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-ispc', files = { 'src/parser.c' }, generate_from_json = true, + revision = '9b2f9aec2106b94b4e099fe75e73ebd8ae707c04', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-ispc', }, maintainers = { '@fab4100' }, requires = { 'c' }, tier = 2, }, - janet_simple = { install_info = { - url = 'https://github.com/sogaiu/tree-sitter-janet-simple', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '6bfbaadac2ba0da21087041eff85d26129c4c920', + url = 'https://github.com/sogaiu/tree-sitter-janet-simple', }, maintainers = { '@sogaiu' }, tier = 3, }, - java = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-java', files = { 'src/parser.c' }, + revision = '953abfc8bb3eb2f578e1f461edba4a9885f974b8', + url = 'https://github.com/tree-sitter/tree-sitter-java', }, maintainers = { '@p00f' }, tier = 2, }, - javadoc = { install_info = { url = 'https://github.com/rmuir/tree-sitter-javadoc', @@ -1237,17 +1200,16 @@ M.configs = { maintainers = { '@rmuir' }, tier = 2, }, - javascript = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-javascript', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '391a8fcc48a11f63bf18ec9885f6f069e760949a', + url = 'https://github.com/tree-sitter/tree-sitter-javascript', }, maintainers = { '@steelsojka' }, requires = { 'ecma', 'jsx' }, tier = 2, }, - jinja = { install_info = { url = 'https://github.com/cathaysia/tree-sitter-jinja', @@ -1256,9 +1218,9 @@ M.configs = { }, maintainers = { '@cathaysia' }, readme_note = 'basic highlighting', + requires = { 'jinja_inline' }, tier = 3, }, - jinja_inline = { install_info = { url = 'https://github.com/cathaysia/tree-sitter-jinja', @@ -1269,87 +1231,85 @@ M.configs = { readme_note = 'needed for full highlighting', tier = 3, }, - jq = { install_info = { - url = 'https://github.com/flurie/tree-sitter-jq', files = { 'src/parser.c' }, + revision = '13990f530e8e6709b7978503da9bc8701d366791', + url = 'https://github.com/flurie/tree-sitter-jq', }, maintainers = { '@ObserverOfTime' }, tier = 3, }, - jsdoc = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-jsdoc', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '49fde205b59a1d9792efc21ee0b6d50bbd35ff14', + url = 'https://github.com/tree-sitter/tree-sitter-jsdoc', }, maintainers = { '@steelsojka' }, tier = 2, }, - json = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-json', files = { 'src/parser.c' }, + revision = '94f5c527b2965465956c2000ed6134dd24daf2a7', + url = 'https://github.com/tree-sitter/tree-sitter-json', }, maintainers = { '@steelsojka' }, tier = 2, }, - json5 = { install_info = { - url = 'https://github.com/Joakker/tree-sitter-json5', files = { 'src/parser.c' }, + revision = 'ab0ba8229d639ec4f3fa5f674c9133477f4b77bd', + url = 'https://github.com/Joakker/tree-sitter-json5', }, maintainers = { '@Joakker' }, tier = 3, }, - jsonc = { install_info = { - url = 'https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git', files = { 'src/parser.c' }, generate_from_json = true, + revision = '02b01653c8a1c198ae7287d566efa86a135b30d5', + url = 'https://gitlab.com/WhyNotHugo/tree-sitter-jsonc', }, maintainers = { '@WhyNotHugo' }, requires = { 'json' }, tier = 3, }, - jsonnet = { install_info = { - url = 'https://github.com/sourcegraph/tree-sitter-jsonnet', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'd34615fa12cc1d1cfc1f1f1a80acc9db80ee4596', + url = 'https://github.com/sourcegraph/tree-sitter-jsonnet', }, maintainers = { '@nawordar' }, tier = 3, }, - jsx = { maintainers = { '@steelsojka' }, readme_note = 'queries required by javascript, tsx', tier = 3, }, - julia = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-julia', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'f1baa5f8e271109d01cc8ff7473c11df2d8a9aee', + url = 'https://github.com/tree-sitter/tree-sitter-julia', }, maintainers = { '@fredrikekre' }, tier = 3, }, - just = { install_info = { - url = 'https://github.com/IndianBoy42/tree-sitter-just', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'fd814fc6c579f68c2a642f5e0268cf69daae92d7', + url = 'https://github.com/IndianBoy42/tree-sitter-just', }, maintainers = { '@Hubro' }, tier = 3, }, - kcl = { install_info = { url = 'https://github.com/kcl-lang/tree-sitter-kcl', @@ -1358,268 +1318,267 @@ M.configs = { maintainers = { '@bertbaron' }, tier = 2, }, - kconfig = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-kconfig', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '486fea71f61ad9f3fd4072a118402e97fe88d26c', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-kconfig', }, maintainers = { '@amaanq' }, tier = 2, }, - kdl = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-kdl', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '49fb89a854d93b58a65a19724ac307195ca11941', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-kdl', }, maintainers = { '@amaanq' }, tier = 2, }, - kotlin = { install_info = { - url = 'https://github.com/fwcd/tree-sitter-kotlin', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'c9cb8504b81684375e7beb8907517dbd6947a1be', + url = 'https://github.com/fwcd/tree-sitter-kotlin', }, maintainers = { '@SalBakraa' }, tier = 3, }, - koto = { install_info = { - url = 'https://github.com/koto-lang/tree-sitter-koto', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'eb8d866cff5751c0a7650623d244280618b0a378', + url = 'https://github.com/koto-lang/tree-sitter-koto', }, maintainers = { '@irh' }, tier = 3, }, - kusto = { install_info = { - url = 'https://github.com/Willem-J-an/tree-sitter-kusto', files = { 'src/parser.c' }, + revision = '8353a1296607d6ba33db7c7e312226e5fc83e8ce', + url = 'https://github.com/Willem-J-an/tree-sitter-kusto', }, maintainers = { '@Willem-J-an' }, tier = 3, }, - lalrpop = { install_info = { - url = 'https://github.com/traxys/tree-sitter-lalrpop', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '854a40e99f7c70258e522bdb8ab584ede6196e2e', + url = 'https://github.com/traxys/tree-sitter-lalrpop', }, maintainers = { '@traxys' }, tier = 3, }, - latex = { install_info = { - url = 'https://github.com/latex-lsp/tree-sitter-latex', files = { 'src/parser.c', 'src/scanner.c' }, generate = true, + revision = 'cd82eb40d31bdfe65f846f4e06292d6c804b5e0e', + url = 'https://github.com/latex-lsp/tree-sitter-latex', }, maintainers = { '@theHamsta', '@clason' }, tier = 3, }, - ledger = { install_info = { - url = 'https://github.com/cbarrete/tree-sitter-ledger', files = { 'src/parser.c' }, + revision = '8a841fb20ce683bfbb3469e6ba67f2851cfdf94a', + url = 'https://github.com/cbarrete/tree-sitter-ledger', }, maintainers = { '@cbarrete' }, tier = 3, }, - leo = { install_info = { - url = 'https://github.com/r001/tree-sitter-leo', files = { 'src/parser.c' }, + revision = '304611b5eaf53aca07459a0a03803b83b6dfd3b3', + url = 'https://github.com/r001/tree-sitter-leo', }, maintainers = { '@r001' }, tier = 3, }, - - llvm = { - install_info = { - url = 'https://github.com/benwilliamgraham/tree-sitter-llvm', - files = { 'src/parser.c' }, - }, - maintainers = { '@benwilliamgraham' }, - tier = 3, - }, - linkerscript = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-linkerscript', files = { 'src/parser.c' }, + revision = 'f99011a3554213b654985a4b0a65b3b032ec4621', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-linkerscript', }, maintainers = { '@amaanq' }, tier = 2, }, - liquid = { install_info = { - url = 'https://github.com/hankthetank27/tree-sitter-liquid', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '293369818da219d97327908aab33707b04b63fd9', + url = 'https://github.com/hankthetank27/tree-sitter-liquid', }, maintainers = { '@hankthetank27' }, tier = 3, }, - liquidsoap = { install_info = { - url = 'https://github.com/savonet/tree-sitter-liquidsoap', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '14feafa91630afb1ab9988cf9b738b7ea29f3f89', + url = 'https://github.com/savonet/tree-sitter-liquidsoap', }, maintainers = { '@toots' }, tier = 3, }, - + llvm = { + install_info = { + files = { 'src/parser.c' }, + revision = '1b96e58faf558ce057d4dc664b904528aee743cb', + url = 'https://github.com/benwilliamgraham/tree-sitter-llvm', + }, + maintainers = { '@benwilliamgraham' }, + tier = 3, + }, lua = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-lua', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a24dab177e58c9c6832f96b9a73102a0cfbced4a', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-lua', }, maintainers = { '@muniftanjim' }, tier = 1, }, - luadoc = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-luadoc', files = { 'src/parser.c' }, + revision = '873612aadd3f684dd4e631bdf42ea8990c57634e', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-luadoc', }, maintainers = { '@amaanq' }, tier = 2, }, - luap = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-luap', files = { 'src/parser.c' }, + revision = '31461ae9bd0866cb5117cfe5de71189854fd0f3e', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-luap', }, maintainers = { '@amaanq' }, readme_note = 'Lua patterns', tier = 2, }, - luau = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-luau', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '5aa9b88a8e3327276ec6e72de997f04ac80b1ae4', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-luau', }, maintainers = { '@amaanq' }, requires = { 'lua' }, tier = 2, }, - m68k = { install_info = { - url = 'https://github.com/grahambates/tree-sitter-m68k', files = { 'src/parser.c' }, + revision = 'd097b123f19c6eaba2bf181c05420d88b9fc489d', + url = 'https://github.com/grahambates/tree-sitter-m68k', }, maintainers = { '@grahambates' }, tier = 3, }, - make = { install_info = { - url = 'https://github.com/alemuller/tree-sitter-make', files = { 'src/parser.c' }, + revision = 'a4b9187417d6be349ee5fd4b6e77b4172c6827dd', + url = 'https://github.com/alemuller/tree-sitter-make', }, maintainers = { '@lewis6991' }, tier = 3, }, - markdown = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-markdown', - location = 'tree-sitter-markdown', files = { 'src/parser.c', 'src/scanner.c' }, + location = 'tree-sitter-markdown', + revision = '7fe453beacecf02c86f7736439f238f5bb8b5c9b', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-markdown', }, maintainers = { '@MDeiml' }, readme_note = 'basic highlighting', requires = { 'markdown_inline' }, tier = 1, }, - markdown_inline = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-markdown', - location = 'tree-sitter-markdown-inline', files = { 'src/parser.c', 'src/scanner.c' }, + location = 'tree-sitter-markdown-inline', + revision = '7fe453beacecf02c86f7736439f238f5bb8b5c9b', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-markdown', }, maintainers = { '@MDeiml' }, readme_note = 'needed for full highlighting', tier = 1, }, - matlab = { install_info = { - url = 'https://github.com/acristoffers/tree-sitter-matlab', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '79d8b25f57b48f83ae1333aff6723b83c9532e37', + url = 'https://github.com/acristoffers/tree-sitter-matlab', }, maintainers = { '@acristoffers' }, tier = 3, }, - menhir = { install_info = { - url = 'https://github.com/Kerl13/tree-sitter-menhir', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'be8866a6bcc2b563ab0de895af69daeffa88fe70', + url = 'https://github.com/Kerl13/tree-sitter-menhir', }, maintainers = { '@Kerl13' }, tier = 3, }, - mermaid = { install_info = { - url = 'https://github.com/monaqa/tree-sitter-mermaid', files = { 'src/parser.c' }, + revision = '90ae195b31933ceb9d079abfa8a3ad0a36fee4cc', + url = 'https://github.com/monaqa/tree-sitter-mermaid', }, tier = 4, }, - meson = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-meson', files = { 'src/parser.c' }, + revision = 'bd17c824196ce70800f64ad39cfddd1b17acc13f', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-meson', }, maintainers = { '@Decodetalkers' }, tier = 2, }, - mlir = { install_info = { - url = 'https://github.com/artagnon/tree-sitter-mlir', files = { 'src/parser.c' }, generate = true, + revision = '00c32d8562dc957b187da110a3443307962b8da8', + url = 'https://github.com/artagnon/tree-sitter-mlir', }, maintainers = { '@artagnon' }, tier = 3, }, - muttrc = { install_info = { - url = 'https://github.com/neomutt/tree-sitter-muttrc', files = { 'src/parser.c' }, + revision = '90ef60852c410bd964cd3b954366e4c403c17314', + url = 'https://github.com/neomutt/tree-sitter-muttrc', }, maintainers = { '@Freed-Wu' }, tier = 3, }, - nasm = { install_info = { - url = 'https://github.com/naclsn/tree-sitter-nasm', files = { 'src/parser.c' }, + revision = '570f3d7be01fffc751237f4cfcf52d04e20532d1', + url = 'https://github.com/naclsn/tree-sitter-nasm', }, maintainers = { '@ObserverOfTime' }, tier = 3, }, - nginx = { install_info = { url = 'https://github.com/opa-oz/tree-sitter-nginx', @@ -1628,62 +1587,61 @@ M.configs = { maintainers = { '@opa-oz' }, tier = 3, }, - nickel = { install_info = { - url = 'https://github.com/nickel-lang/tree-sitter-nickel', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '0a796f3a312917724c1d9f486a201f7402a8acfd', + url = 'https://github.com/nickel-lang/tree-sitter-nickel', }, tier = 4, }, - nim = { install_info = { - url = 'https://github.com/alaviss/tree-sitter-nim', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '961c2798cec9250c44f7d7225ddb33d47d25856a', + url = 'https://github.com/alaviss/tree-sitter-nim', }, maintainers = { '@aMOPel' }, requires = { 'nim_format_string' }, tier = 3, }, - nim_format_string = { install_info = { - url = 'https://github.com/aMOPel/tree-sitter-nim-format-string', files = { 'src/parser.c' }, + revision = 'd45f75022d147cda056e98bfba68222c9c8eca3a', + url = 'https://github.com/aMOPel/tree-sitter-nim-format-string', }, maintainers = { '@aMOPel' }, tier = 3, }, - ninja = { install_info = { - url = 'https://github.com/alemuller/tree-sitter-ninja', files = { 'src/parser.c' }, + revision = '0a95cfdc0745b6ae82f60d3a339b37f19b7b9267', + url = 'https://github.com/alemuller/tree-sitter-ninja', }, maintainers = { '@alemuller' }, tier = 3, }, - nix = { install_info = { - url = 'https://github.com/cstrahan/tree-sitter-nix', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'b3cda619248e7dd0f216088bd152f59ce0bbe488', + url = 'https://github.com/cstrahan/tree-sitter-nix', }, maintainers = { '@leo60228' }, tier = 3, }, - nqc = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-nqc', files = { 'src/parser.c' }, generate_from_json = true, + revision = '14e6da1627aaef21d2b2aa0c37d04269766dcc1d', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-nqc', }, maintainers = { '@amaanq' }, tier = 2, }, - nu = { install_info = { url = 'https://github.com/nushell/tree-sitter-nu', @@ -1692,186 +1650,185 @@ M.configs = { maintainers = { '@abhisheksingh0x558' }, tier = 3, }, - objc = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-objc', files = { 'src/parser.c' }, generate_from_json = true, + revision = '62e61b6f5c0289c376d61a8c91faf6435cde9012', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-objc', }, maintainers = { '@amaanq' }, requires = { 'c' }, tier = 2, }, - objdump = { install_info = { - url = 'https://github.com/ColinKennedy/tree-sitter-objdump', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '28d3b2e25a0b1881d1b47ed1924ca276c7003d45', + url = 'https://github.com/ColinKennedy/tree-sitter-objdump', }, maintainers = { '@ColinKennedy' }, tier = 3, }, - ocaml = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-ocaml', files = { 'src/parser.c', 'src/scanner.c' }, location = 'grammars/ocaml', + revision = '0b12614ded3ec7ed7ab7933a9ba4f695ba4c342e', + url = 'https://github.com/tree-sitter/tree-sitter-ocaml', }, maintainers = { '@undu' }, tier = 2, }, - ocaml_interface = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-ocaml', files = { 'src/parser.c', 'src/scanner.c' }, location = 'grammars/interface', + revision = '0b12614ded3ec7ed7ab7933a9ba4f695ba4c342e', + url = 'https://github.com/tree-sitter/tree-sitter-ocaml', }, maintainers = { '@undu' }, requires = { 'ocaml' }, tier = 2, }, - ocamllex = { install_info = { - url = 'https://github.com/atom-ocaml/tree-sitter-ocamllex', files = { 'src/parser.c', 'src/scanner.c' }, generate = true, + revision = '4b9898ccbf198602bb0dec9cd67cc1d2c0a4fad2', + url = 'https://github.com/atom-ocaml/tree-sitter-ocamllex', }, maintainers = { '@undu' }, tier = 3, }, - odin = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-odin', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'd37b8f24f653378b268ec18404e9c14ad355b128', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-odin', }, maintainers = { '@amaanq' }, tier = 2, }, - pascal = { install_info = { - url = 'https://github.com/Isopod/tree-sitter-pascal', files = { 'src/parser.c' }, + revision = 'a9ee969dec5b2e3b2ccccc5954fec04100c7619e', + url = 'https://github.com/Isopod/tree-sitter-pascal', }, maintainers = { '@Isopod' }, tier = 3, }, - passwd = { install_info = { - url = 'https://github.com/ath3/tree-sitter-passwd', files = { 'src/parser.c' }, + revision = '20239395eacdc2e0923a7e5683ad3605aee7b716', + url = 'https://github.com/ath3/tree-sitter-passwd', }, maintainers = { '@amaanq' }, tier = 3, }, - pem = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-pem', files = { 'src/parser.c' }, + revision = '217ff2af3f2db15a79ab7e3d21ea1e0c17e71a1a', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-pem', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - perl = { install_info = { - url = 'https://github.com/tree-sitter-perl/tree-sitter-perl', branch = 'release', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '309cb8d33bcfd0a81050b21be08f9eb3f2fe2138', + url = 'https://github.com/tree-sitter-perl/tree-sitter-perl', }, maintainers = { '@RabbiVeesh', '@LeoNerd' }, tier = 3, }, - php = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-php', - location = 'php', files = { 'src/parser.c', 'src/scanner.c' }, + location = 'php', + revision = 'b38c53537769df05871643c9688c264074fb6076', + url = 'https://github.com/tree-sitter/tree-sitter-php', }, maintainers = { '@tk-shirasaka', '@calebdw' }, - requires = { 'php_only' }, readme_note = 'PHP with embedded HTML', + requires = { 'php_only' }, tier = 2, }, - php_only = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-php', - location = 'php_only', files = { 'src/parser.c', 'src/scanner.c' }, + location = 'php_only', + revision = 'b38c53537769df05871643c9688c264074fb6076', + url = 'https://github.com/tree-sitter/tree-sitter-php', }, maintainers = { '@tk-shirasaka', '@calebdw' }, readme_note = 'PHP without embedded HTML', tier = 2, }, - phpdoc = { install_info = { - url = 'https://github.com/claytonrcarter/tree-sitter-phpdoc', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '1d0e255b37477d0ca46f1c9e9268c8fa76c0b3fc', + url = 'https://github.com/claytonrcarter/tree-sitter-phpdoc', }, maintainers = { '@mikehaertl' }, tier = 3, }, - pioasm = { install_info = { - url = 'https://github.com/leo60228/tree-sitter-pioasm', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '924aadaf5dea2a6074d72027b064f939acf32e20', + url = 'https://github.com/leo60228/tree-sitter-pioasm', }, maintainers = { '@leo60228' }, tier = 3, }, - po = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-po', files = { 'src/parser.c' }, + revision = 'bd860a0f57f697162bf28e576674be9c1500db5e', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-po', }, maintainers = { '@amaanq' }, tier = 2, }, - pod = { install_info = { - url = 'https://github.com/tree-sitter-perl/tree-sitter-pod', - files = { 'src/parser.c', 'src/scanner.c' }, branch = 'release', + files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '39da859947b94abdee43e431368e1ae975c0a424', + url = 'https://github.com/tree-sitter-perl/tree-sitter-pod', }, maintainers = { '@RabbiVeesh', '@LeoNerd' }, tier = 3, }, - poe_filter = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-poe-filter', files = { 'src/parser.c' }, + revision = '592476d81f95d2451f2ca107dc872224c76fecdf', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-poe-filter', }, maintainers = { '@ObserverOfTime' }, readme_note = 'Path of Exile item filter', tier = 2, }, - pony = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-pony', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '73ff874ae4c9e9b45462673cbc0a1e350e2522a7', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-pony', }, maintainers = { '@amaanq', '@mfelsche' }, tier = 2, }, - powershell = { install_info = { url = 'https://github.com/airbus-cert/tree-sitter-powershell', @@ -1881,20 +1838,20 @@ M.configs = { maintainers = { '@L2jLiga' }, tier = 3, }, - printf = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-printf', files = { 'src/parser.c' }, + revision = '0e0aceabbf607ea09e03562f5d8a56f048ddea3d', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-printf', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - prisma = { install_info = { - url = 'https://github.com/victorhqc/tree-sitter-prisma', files = { 'src/parser.c' }, + revision = 'eca2596a355b1a9952b4f80f8f9caed300a272b5', + url = 'https://github.com/victorhqc/tree-sitter-prisma', }, maintainers = { '@elianiva' }, tier = 3, @@ -1920,175 +1877,174 @@ M.configs = { maintainers = { '@foxyseta' }, tier = 3, }, - + promql = { + install_info = { + files = { 'src/parser.c' }, + revision = '77625d78eebc3ffc44d114a07b2f348dff3061b0', + url = 'https://github.com/MichaHoffmann/tree-sitter-promql', + }, + maintainers = { '@MichaHoffmann' }, + tier = 3, + }, properties = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-properties', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '9d09f5f200c356c50c4103d36441309fd61b48d1', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-properties', }, maintainers = { '@ObserverOfTime' }, - tier = 2, readme_note = 'Java properties files', + tier = 2, }, - proto = { install_info = { - url = 'https://github.com/treywood/tree-sitter-proto', files = { 'src/parser.c' }, + revision = 'e9f6b43f6844bd2189b50a422d4e2094313f6aa3', + url = 'https://github.com/treywood/tree-sitter-proto', }, maintainers = { '@treywood' }, tier = 3, }, - - promql = { - install_info = { - url = 'https://github.com/MichaHoffmann/tree-sitter-promql', - files = { 'src/parser.c' }, - }, - maintainers = { '@MichaHoffmann' }, - tier = 3, - }, - prql = { install_info = { - url = 'https://github.com/PRQL/tree-sitter-prql', files = { 'src/parser.c' }, + revision = '09e158cd3650581c0af4c49c2e5b10c4834c8646', + url = 'https://github.com/PRQL/tree-sitter-prql', }, maintainers = { '@matthias-Q' }, tier = 3, }, - psv = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', files = { 'src/parser.c' }, location = 'psv', + revision = '7eb7297823605392d2bbcc4c09b1cd18d6fa9529', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', }, maintainers = { '@amaanq' }, requires = { 'tsv' }, tier = 2, }, - pug = { install_info = { - url = 'https://github.com/zealot128/tree-sitter-pug', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a7ff31a38908df9b9f34828d21d6ca5e12413e18', + url = 'https://github.com/zealot128/tree-sitter-pug', }, maintainers = { '@zealot128' }, tier = 3, }, - puppet = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-puppet', files = { 'src/parser.c' }, + revision = '584522f32495d648b18a53ccb52d988e60de127d', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-puppet', }, maintainers = { '@amaanq' }, tier = 2, }, - purescript = { install_info = { - url = 'https://github.com/postsolar/tree-sitter-purescript', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'daf9b3e2be18b0b2996a1281f7783e0d041d8b80', + url = 'https://github.com/postsolar/tree-sitter-purescript', }, maintainers = { '@postsolar' }, tier = 3, }, - pymanifest = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-pymanifest', files = { 'src/parser.c' }, + revision = 'e3b82b78721aee07f676dac8473ae69db51debcf', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-pymanifest', }, maintainers = { '@ObserverOfTime' }, readme_name = 'PyPA manifest', tier = 2, }, - python = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-python', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '71778c2a472ed00a64abf4219544edbf8e4b86d7', + url = 'https://github.com/tree-sitter/tree-sitter-python', }, maintainers = { '@stsewd', '@theHamsta' }, tier = 1, }, - ql = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-ql', files = { 'src/parser.c' }, + revision = '42becd6f8f7bae82c818fa3abb1b6ff34b552310', + url = 'https://github.com/tree-sitter/tree-sitter-ql', }, maintainers = { '@pwntester' }, tier = 2, }, - qmldir = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-qmldir', files = { 'src/parser.c' }, + revision = '6b2b5e41734bd6f07ea4c36ac20fb6f14061c841', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-qmldir', }, maintainers = { '@amaanq' }, tier = 2, }, - qmljs = { install_info = { - url = 'https://github.com/yuja/tree-sitter-qmljs', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '2c57cac27e207425f8df15327884434cb12365a3', + url = 'https://github.com/yuja/tree-sitter-qmljs', }, maintainers = { '@Decodetalkers' }, requires = { 'ecma' }, tier = 3, }, - query = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-query', files = { 'src/parser.c' }, + revision = 'f767fb0ac5e711b6d44c5e0c8d1f349687a86ce0', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-query', }, maintainers = { '@steelsojka' }, readme_note = 'Tree-sitter query language', tier = 1, }, - r = { install_info = { - url = 'https://github.com/r-lib/tree-sitter-r', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '391400572538ff9854341a175ed8ab4b1e45f44b', + url = 'https://github.com/r-lib/tree-sitter-r', }, maintainers = { '@ribru17' }, tier = 3, }, - racket = { install_info = { - url = 'https://github.com/6cdh/tree-sitter-racket', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '171f52a8c0ed635b85cd42d1e36d82f1066a03b4', + url = 'https://github.com/6cdh/tree-sitter-racket', }, tier = 4, }, - ralph = { install_info = { - url = 'https://github.com/alephium/tree-sitter-ralph', files = { 'src/parser.c' }, + revision = '48b9d9d6e2b55ce8f9eb09ceb0d952e4b1cc87a0', + url = 'https://github.com/alephium/tree-sitter-ralph', }, maintainers = { '@tdroxler' }, tier = 3, }, - rasi = { install_info = { - url = 'https://github.com/Fymyte/tree-sitter-rasi', files = { 'src/parser.c' }, + revision = '6c9bbcfdf5f0f553d9ebc01750a3aa247a37b8aa', + url = 'https://github.com/Fymyte/tree-sitter-rasi', }, maintainers = { '@Fymyte' }, tier = 3, }, - razor = { install_info = { generate_from_json = true, @@ -2099,62 +2055,61 @@ M.configs = { maintainers = { '@tris203' }, tier = 3, }, - rbs = { install_info = { - url = 'https://github.com/joker1007/tree-sitter-rbs', files = { 'src/parser.c' }, + revision = 'e5e807a50fcd104a2d740d354632fc671700a0bf', + url = 'https://github.com/joker1007/tree-sitter-rbs', }, maintainers = { '@joker1007' }, tier = 3, }, - re2c = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-re2c', files = { 'src/parser.c' }, + revision = '47aa19cf5f7aba2ed30e2b377f7172df76e819a6', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-re2c', }, maintainers = { '@amaanq' }, tier = 2, }, - readline = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-readline', files = { 'src/parser.c' }, + revision = '3d4768b04d7cfaf40533e12b28672603428b8f31', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-readline', }, maintainers = { '@ribru17' }, tier = 2, }, - regex = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-regex', files = { 'src/parser.c' }, + revision = '47007f195752d8e57bda80b0b6cdb2d173a9f7d7', + url = 'https://github.com/tree-sitter/tree-sitter-regex', }, maintainers = { '@theHamsta' }, tier = 2, }, - rego = { install_info = { - url = 'https://github.com/FallenAngel97/tree-sitter-rego', files = { 'src/parser.c' }, + revision = '23b1da8de9766d766c4f01531e8be14b5c00c493', + url = 'https://github.com/FallenAngel97/tree-sitter-rego', }, maintainers = { '@FallenAngel97' }, tier = 3, }, - requirements = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-requirements', files = { 'src/parser.c' }, + revision = '360c6a6b31076a482663806f7a8241de9cad6b4e', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-requirements', }, maintainers = { '@ObserverOfTime' }, readme_name = 'pip requirements', tier = 2, }, - rescript = { install_info = { url = 'https://github.com/rescript-lang/tree-sitter-rescript', @@ -2163,25 +2118,24 @@ M.configs = { maintainers = { '@ribru17' }, tier = 2, }, - rnoweb = { install_info = { - url = 'https://github.com/bamonroe/tree-sitter-rnoweb', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '1a74dc0ed731ad07db39f063e2c5a6fe528cae7f', + url = 'https://github.com/bamonroe/tree-sitter-rnoweb', }, maintainers = { '@bamonroe' }, tier = 3, }, - robot = { install_info = { - url = 'https://github.com/Hubro/tree-sitter-robot', files = { 'src/parser.c' }, + revision = '322e4cc65754d2b3fdef4f2f8a71e0762e3d13af', + url = 'https://github.com/Hubro/tree-sitter-robot', }, maintainers = { '@Hubro' }, tier = 3, }, - robots = { install_info = { url = 'https://github.com/opa-oz/tree-sitter-robots-txt', @@ -2190,98 +2144,96 @@ M.configs = { maintainers = { '@opa-oz' }, tier = 3, }, - roc = { install_info = { - url = 'https://github.com/faldor20/tree-sitter-roc', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '7df2c0892e62efb81a7504d9799d4e0d0443d241', + url = 'https://github.com/faldor20/tree-sitter-roc', }, maintainers = { '@nat-418' }, tier = 3, }, - ron = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-ron', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '78938553b93075e638035f624973083451b29055', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-ron', }, maintainers = { '@amaanq' }, tier = 2, }, - rst = { install_info = { - url = 'https://github.com/stsewd/tree-sitter-rst', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '5120f6e59284cb8b85b450bd2db0bd352635ba9f', + url = 'https://github.com/stsewd/tree-sitter-rst', }, maintainers = { '@stsewd' }, tier = 3, }, - ruby = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-ruby', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'dc2d7d6b50f9975bc3c35bbec0ba11b2617b736b', + url = 'https://github.com/tree-sitter/tree-sitter-ruby', }, maintainers = { '@TravonteD' }, tier = 2, }, - runescript = { install_info = { - url = 'https://github.com/2004Scape/tree-sitter-runescript', files = { 'src/parser.c', 'src/scanner.c' }, + url = 'https://github.com/2004Scape/tree-sitter-runescript', }, maintainers = { '@2004Scape' }, tier = 3, }, - rust = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-rust', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '9c84af007b0f144954adb26b3f336495cbb320a7', + url = 'https://github.com/tree-sitter/tree-sitter-rust', }, maintainers = { '@amaanq' }, tier = 2, }, - scala = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-scala', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'b76db435a7f876cf1ede837d66054c534783c72f', + url = 'https://github.com/tree-sitter/tree-sitter-scala', }, maintainers = { '@stevanmilic' }, tier = 2, }, - scfg = { install_info = { - url = 'https://github.com/rockorager/tree-sitter-scfg', files = { 'src/parser.c' }, generate = true, + revision = '6deae0cbb458c849a4d1e2985093e9c9c32d7fd0', + url = 'https://github.com/rockorager/tree-sitter-scfg', }, maintainers = { '@WhyNotHugo' }, tier = 3, }, - scheme = { install_info = { - url = 'https://github.com/6cdh/tree-sitter-scheme', files = { 'src/parser.c' }, + revision = '8f9dff3d038f09934db5ea113cebc59c74447743', + url = 'https://github.com/6cdh/tree-sitter-scheme', }, tier = 4, }, - scss = { install_info = { - url = 'https://github.com/serenadeai/tree-sitter-scss', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'c478c6868648eff49eb04a4df90d703dc45b312a', + url = 'https://github.com/serenadeai/tree-sitter-scss', }, maintainers = { '@elianiva' }, requires = { 'css' }, tier = 3, }, - sflog = { install_info = { url = 'https://github.com/aheber/tree-sitter-sfapex', @@ -2294,15 +2246,15 @@ M.configs = { }, slang = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-slang', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '865d79e236c7f0e04276c969453d021d1da4b15f', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-slang', }, - readme_note = 'Shader Slang', maintainers = { '@theHamsta' }, + readme_note = 'Shader Slang', tier = 2, }, - slim = { install_info = { url = 'https://github.com/theoo/tree-sitter-slim', @@ -2311,528 +2263,524 @@ M.configs = { maintainers = { '@theoo' }, tier = 3, }, - slint = { install_info = { - url = 'https://github.com/slint-ui/tree-sitter-slint', files = { 'src/parser.c' }, + revision = 'd82ab8c19ea1b60ff570256eaef7d137cc5ecb63', + url = 'https://github.com/slint-ui/tree-sitter-slint', }, maintainers = { '@hunger' }, tier = 3, }, - smali = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-smali', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'fdfa6a1febc43c7467aa7e937b87b607956f2346', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-smali', }, maintainers = { '@amaanq' }, tier = 2, }, - - snakemake = { + smithy = { install_info = { - url = 'https://github.com/osthomas/tree-sitter-snakemake', - files = { 'src/parser.c', 'src/scanner.c' }, - generate_from_json = true, + files = { 'src/parser.c' }, + revision = 'fa898ac0885d1da9a253695c3e0e91f5efc587cd', + url = 'https://github.com/indoorvivants/tree-sitter-smithy', }, - maintainers = { '@osthomas' }, + maintainers = { '@amaanq', '@keynmol' }, tier = 3, }, - - smithy = { + snakemake = { install_info = { - url = 'https://github.com/indoorvivants/tree-sitter-smithy', - files = { 'src/parser.c' }, + files = { 'src/parser.c', 'src/scanner.c' }, + generate_from_json = true, + revision = 'ba1b3868eaa960b945593404af9a7c2f296d3643', + url = 'https://github.com/osthomas/tree-sitter-snakemake', }, - maintainers = { '@amaanq', '@keynmol' }, + maintainers = { '@osthomas' }, tier = 3, }, - solidity = { install_info = { - url = 'https://github.com/JoranHonig/tree-sitter-solidity', files = { 'src/parser.c' }, + revision = '1c94fe3d5351dfcff3551ec1f49614cbf758e444', + url = 'https://github.com/JoranHonig/tree-sitter-solidity', }, maintainers = { '@amaanq' }, tier = 3, }, - soql = { install_info = { - url = 'https://github.com/aheber/tree-sitter-sfapex', files = { 'src/parser.c' }, location = 'soql', + revision = 'c99ad4b16d112fea91745e3f1b769754239fdaba', + url = 'https://github.com/aheber/tree-sitter-sfapex', }, maintainers = { '@aheber', '@xixiafinland' }, tier = 3, }, - sosl = { install_info = { - url = 'https://github.com/aheber/tree-sitter-sfapex', files = { 'src/parser.c' }, location = 'sosl', + revision = 'c99ad4b16d112fea91745e3f1b769754239fdaba', + url = 'https://github.com/aheber/tree-sitter-sfapex', }, maintainers = { '@aheber', '@xixiafinland' }, tier = 3, }, - sourcepawn = { install_info = { - url = 'https://github.com/nilshelmig/tree-sitter-sourcepawn', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '64ad670dd59e88c5d32bc3d759ae8562b522cad9', + url = 'https://github.com/nilshelmig/tree-sitter-sourcepawn', }, maintainers = { '@Sarrus1' }, tier = 3, }, - sparql = { install_info = { - url = 'https://github.com/GordianDziwis/tree-sitter-sparql', files = { 'src/parser.c' }, generate_from_json = true, + revision = '05f949d3c1c15e3261473a244d3ce87777374dec', + url = 'https://github.com/GordianDziwis/tree-sitter-sparql', }, maintainers = { '@GordianDziwis' }, tier = 3, }, - sql = { install_info = { - url = 'https://github.com/derekstride/tree-sitter-sql', - files = { 'src/parser.c', 'src/scanner.c' }, branch = 'gh-pages', + files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '6a99f4aff780f98bc119c7f034406e41d7e0b80d', + url = 'https://github.com/derekstride/tree-sitter-sql', }, maintainers = { '@derekstride' }, tier = 3, }, - squirrel = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-squirrel', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '0a50d31098e83c668d34d1160a0f6c7d23b571cc', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-squirrel', }, maintainers = { '@amaanq' }, tier = 2, }, - ssh_config = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-ssh-config', files = { 'src/parser.c' }, + revision = '77450e8bce8853921512348f83c73c168c71fdfb', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-ssh-config', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - starlark = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-starlark', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '018d0e09d9d0f0dd6740a37682b8ee4512e8b2ac', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-starlark', }, maintainers = { '@amaanq' }, tier = 2, }, - strace = { install_info = { - url = 'https://github.com/sigmaSd/tree-sitter-strace', files = { 'src/parser.c' }, + revision = 'd819cdd5dbe455bd3c859193633c8d91c0df7c36', + url = 'https://github.com/sigmaSd/tree-sitter-strace', }, maintainers = { '@amaanq' }, tier = 3, }, - styled = { install_info = { - url = 'https://github.com/mskelton/tree-sitter-styled', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '65835cca33a5f033bcde580ed66cde01c1fabbbe', + url = 'https://github.com/mskelton/tree-sitter-styled', }, maintainers = { '@mskelton' }, tier = 3, }, - supercollider = { install_info = { - url = 'https://github.com/madskjeldgaard/tree-sitter-supercollider', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'affa4389186b6939d89673e1e9d2b28364f5ca6f', + url = 'https://github.com/madskjeldgaard/tree-sitter-supercollider', }, maintainers = { '@madskjeldgaard' }, tier = 3, }, - superhtml = { install_info = { - url = 'https://github.com/kristoff-it/superhtml', files = { 'src/parser.c', 'src/scanner.c' }, location = 'tree-sitter-superhtml', + url = 'https://github.com/kristoff-it/superhtml', }, maintainers = { '@rockorager' }, tier = 3, }, - surface = { install_info = { - url = 'https://github.com/connorlay/tree-sitter-surface', files = { 'src/parser.c' }, + revision = 'f4586b35ac8548667a9aaa4eae44456c1f43d032', + url = 'https://github.com/connorlay/tree-sitter-surface', }, maintainers = { '@connorlay' }, tier = 3, }, - svelte = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-svelte', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '2c97326cd96b7c3016c3d249e8dc244c89b4abeb', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-svelte', }, maintainers = { '@amaanq' }, requires = { 'html_tags' }, tier = 2, }, - sway = { install_info = { - url = 'https://github.com/FuelLabs/tree-sitter-sway.git', files = { 'src/parser.c', 'src/scanner.c' }, + url = 'https://github.com/FuelLabs/tree-sitter-sway.git', }, maintainers = { '@ribru17' }, tier = 2, }, - swift = { install_info = { - url = 'https://github.com/alex-pinkus/tree-sitter-swift', files = { 'src/parser.c', 'src/scanner.c' }, generate = true, + revision = '26354ddec08c7efde4fa16bd29429f3310d2e2c5', + url = 'https://github.com/alex-pinkus/tree-sitter-swift', }, maintainers = { '@alex-pinkus' }, tier = 3, }, - sxhkdrc = { install_info = { - url = 'https://github.com/RaafatTurki/tree-sitter-sxhkdrc', files = { 'src/parser.c' }, + revision = '440d5f913d9465c9c776a1bd92334d32febcf065', + url = 'https://github.com/RaafatTurki/tree-sitter-sxhkdrc', }, maintainers = { '@RaafatTurki' }, tier = 3, }, - systemtap = { install_info = { - url = 'https://github.com/ok-ryoko/tree-sitter-systemtap', files = { 'src/parser.c' }, + revision = '1af543a96d060b1f808982037bfc54cc02218edd', + url = 'https://github.com/ok-ryoko/tree-sitter-systemtap', }, maintainers = { '@ok-ryoko' }, tier = 3, }, - t32 = { install_info = { - url = 'https://gitlab.com/xasc/tree-sitter-t32.git', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '6182836f4128725f1e74ce986840d7317021a015', + url = 'https://gitlab.com/xasc/tree-sitter-t32', }, maintainers = { '@xasc' }, tier = 3, }, - tablegen = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-tablegen', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'b1170880c61355aaf38fc06f4af7d3c55abdabc4', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-tablegen', }, maintainers = { '@amaanq' }, tier = 2, }, - tact = { install_info = { - url = 'https://github.com/tact-lang/tree-sitter-tact', files = { 'src/parser.c' }, + revision = '034df2162ed7b654efd999942e266be713c7cde0', + url = 'https://github.com/tact-lang/tree-sitter-tact', }, maintainers = { '@novusnota' }, tier = 3, }, - - teal = { + tcl = { install_info = { - url = 'https://github.com/euclidianAce/tree-sitter-teal', files = { 'src/parser.c', 'src/scanner.c' }, - generate = true, + revision = '8784024358c233efd0f3a6fd9e7a3c5852e628bc', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-tcl', }, - maintainers = { '@euclidianAce' }, - tier = 3, + maintainers = { '@lewis6991' }, + tier = 2, }, - - templ = { + tera = { install_info = { - url = 'https://github.com/vrischmann/tree-sitter-templ', + url = 'https://github.com/uncenter/tree-sitter-tera', files = { 'src/parser.c', 'src/scanner.c' }, - generate_from_json = true, }, - maintainers = { '@vrischmann' }, - tier = 3, + maintainers = { '@uncenter' }, + tier = 2, }, - - tcl = { + teal = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-tcl', files = { 'src/parser.c', 'src/scanner.c' }, + generate = true, + revision = '19b02da829d1721a521bf7b802eb80a50bd53aab', + url = 'https://github.com/euclidianAce/tree-sitter-teal', }, - maintainers = { '@lewis6991' }, - tier = 2, + maintainers = { '@euclidianAce' }, + tier = 3, }, - - tera = { + templ = { install_info = { - url = 'https://github.com/uncenter/tree-sitter-tera', files = { 'src/parser.c', 'src/scanner.c' }, + generate_from_json = true, + revision = 'cf84ea53e2e2531f23009d676ac206090c1e2392', + url = 'https://github.com/vrischmann/tree-sitter-templ', }, - maintainers = { '@uncenter' }, - tier = 2, + maintainers = { '@vrischmann' }, + tier = 3, }, - terraform = { install_info = { - url = 'https://github.com/MichaHoffmann/tree-sitter-hcl', files = { 'src/parser.c', 'src/scanner.c' }, location = 'dialects/terraform', + revision = 'e936d3fef8bac884661472dce71ad82284761eb1', + url = 'https://github.com/MichaHoffmann/tree-sitter-hcl', }, maintainers = { '@MichaHoffmann' }, requires = { 'hcl' }, tier = 3, }, - textproto = { install_info = { - url = 'https://github.com/PorterAtGoogle/tree-sitter-textproto', files = { 'src/parser.c' }, + revision = '8dacf02aa402892c91079f8577998ed5148c0496', + url = 'https://github.com/PorterAtGoogle/tree-sitter-textproto', }, maintainers = { '@Porter' }, tier = 3, }, - thrift = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-thrift', files = { 'src/parser.c' }, + revision = '68fd0d80943a828d9e6f49c58a74be1e9ca142cf', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-thrift', }, maintainers = { '@amaanq', '@duskmoon314' }, tier = 2, }, - tiger = { install_info = { - url = 'https://github.com/ambroisie/tree-sitter-tiger', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'a7f11d946b44244f71df41d2a78af0665d618dae', + url = 'https://github.com/ambroisie/tree-sitter-tiger', }, maintainers = { '@ambroisie' }, tier = 3, }, - tlaplus = { install_info = { - url = 'https://github.com/tlaplus-community/tree-sitter-tlaplus', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '200f9dab6b23f3b9bb8f67fc811221517f56c373', + url = 'https://github.com/tlaplus-community/tree-sitter-tlaplus', }, maintainers = { '@ahelwer', '@susliko' }, tier = 3, }, - tmux = { install_info = { - url = 'https://github.com/Freed-Wu/tree-sitter-tmux', files = { 'src/parser.c' }, + revision = '9138ea508410e0f34da2666609f600f65e944f22', + url = 'https://github.com/Freed-Wu/tree-sitter-tmux', }, maintainers = { '@Freed-Wu' }, tier = 3, }, - todotxt = { install_info = { - url = 'https://github.com/arnarg/tree-sitter-todotxt', files = { 'src/parser.c' }, + revision = '3937c5cd105ec4127448651a21aef45f52d19609', + url = 'https://github.com/arnarg/tree-sitter-todotxt', }, maintainers = { '@arnarg' }, tier = 3, }, - toml = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-toml', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '16a30c83ce427385b8d14939c45c137fcfca6c42', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-toml', }, maintainers = { '@tk-shirasaka' }, tier = 2, }, - tsv = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', files = { 'src/parser.c' }, location = 'tsv', + revision = '7eb7297823605392d2bbcc4c09b1cd18d6fa9529', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-csv', }, maintainers = { '@amaanq' }, tier = 2, }, - tsx = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-typescript', files = { 'src/parser.c', 'src/scanner.c' }, - location = 'tsx', generate_from_json = true, + location = 'tsx', + revision = '4ad3010c91d700026d036b5230e2d99ba94ae8a4', + url = 'https://github.com/tree-sitter/tree-sitter-typescript', }, maintainers = { '@steelsojka' }, requires = { 'ecma', 'jsx', 'typescript' }, tier = 2, }, - turtle = { install_info = { - url = 'https://github.com/GordianDziwis/tree-sitter-turtle', files = { 'src/parser.c' }, + revision = '085437f5cb117703b7f520dd92161140a684f092', + url = 'https://github.com/GordianDziwis/tree-sitter-turtle', }, maintainers = { '@GordianDziwis' }, tier = 3, }, - twig = { install_info = { - url = 'https://github.com/gbprod/tree-sitter-twig', files = { 'src/parser.c' }, + revision = 'eaf80e6af969e25993576477a9dbdba3e48c1305', + url = 'https://github.com/gbprod/tree-sitter-twig', }, maintainers = { '@gbprod' }, tier = 3, }, - typescript = { install_info = { - url = 'https://github.com/tree-sitter/tree-sitter-typescript', files = { 'src/parser.c', 'src/scanner.c' }, - location = 'typescript', generate_from_json = true, + location = 'typescript', + revision = '4ad3010c91d700026d036b5230e2d99ba94ae8a4', + url = 'https://github.com/tree-sitter/tree-sitter-typescript', }, maintainers = { '@steelsojka' }, requires = { 'ecma' }, tier = 2, }, - typespec = { install_info = { - url = 'https://github.com/happenslol/tree-sitter-typespec', files = { 'src/parser.c' }, + revision = '28821d0d6da5f0a6b5eb02b9bad953fecafd7248', + url = 'https://github.com/happenslol/tree-sitter-typespec', }, maintainers = { '@happenslol' }, tier = 3, }, - typoscript = { install_info = { - url = 'https://github.com/Teddytrombone/tree-sitter-typoscript', files = { 'src/parser.c' }, + revision = '43b221c0b76e77244efdaa9963e402a17c930fbc', + url = 'https://github.com/Teddytrombone/tree-sitter-typoscript', }, maintainers = { '@Teddytrombone' }, tier = 3, }, - typst = { install_info = { - url = 'https://github.com/uben0/tree-sitter-typst', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '3924cb9ed9e0e62ce7df9c4fe0faa4c234795999', + url = 'https://github.com/uben0/tree-sitter-typst', }, maintainers = { '@uben0', '@RaafatTurki' }, tier = 3, }, - udev = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-udev', files = { 'src/parser.c' }, + revision = '8f58696e79092b4ad6bf197415bbd0970acf15cd', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-udev', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - ungrammar = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-ungrammar', files = { 'src/parser.c' }, + revision = 'debd26fed283d80456ebafa33a06957b0c52e451', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-ungrammar', }, maintainers = { '@Philipp-M', '@amaanq' }, tier = 2, }, - unison = { install_info = { - url = 'https://github.com/kylegoetz/tree-sitter-unison', files = { 'src/parser.c', 'src/scanner.c' }, generate = true, + revision = '59d36a09282be7e4d3374854126590f3dcebee6e', + url = 'https://github.com/kylegoetz/tree-sitter-unison', }, maintainers = { '@tapegram' }, tier = 3, }, - usd = { install_info = { - url = 'https://github.com/ColinKennedy/tree-sitter-usd', files = { 'src/parser.c' }, + revision = '4e0875f724d94d0c2ff36f9b8cb0b12f8b20d216', + url = 'https://github.com/ColinKennedy/tree-sitter-usd', }, maintainers = { '@ColinKennedy' }, tier = 3, }, - uxntal = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-uxntal', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'ad9b638b914095320de85d59c49ab271603af048', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-uxntal', }, maintainers = { '@amaanq' }, tier = 2, }, - v = { install_info = { - url = 'https://github.com/vlang/v-analyzer', files = { 'src/parser.c' }, location = 'tree_sitter_v', + revision = '7e11a6f8f369df935664fadd2f0c99d90fe3226f', + url = 'https://github.com/vlang/v-analyzer', }, maintainers = { '@kkharji', '@amaanq' }, tier = 3, }, - vala = { install_info = { - url = 'https://github.com/vala-lang/tree-sitter-vala', files = { 'src/parser.c' }, + revision = '8f690bfa639f2b83d1fb938ed3dd98a7ba453e8b', + url = 'https://github.com/vala-lang/tree-sitter-vala', }, maintainers = { '@Prince781' }, tier = 3, }, - vento = { install_info = { - url = 'https://github.com/ventojs/tree-sitter-vento', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '3321077d7446c1b3b017c294fd56ce028ed817fe', + url = 'https://github.com/ventojs/tree-sitter-vento', }, maintainers = { '@wrapperup', '@oscarotero' }, tier = 3, }, - verilog = { install_info = { - url = 'https://github.com/gmlarumbe/tree-sitter-systemverilog', files = { 'src/parser.c' }, + revision = '075ebfc84543675f12e79a955f79d717772dcef3', + url = 'https://github.com/gmlarumbe/tree-sitter-systemverilog', }, maintainers = { '@zhangwwpeng' }, tier = 3, }, - vhdl = { install_info = { url = 'https://github.com/jpt13653903/tree-sitter-vhdl', @@ -2841,34 +2789,33 @@ M.configs = { maintainers = { '@jpt13653903' }, tier = 3, }, - vhs = { install_info = { - url = 'https://github.com/charmbracelet/tree-sitter-vhs', files = { 'src/parser.c' }, + revision = '90028bbadb267ead5b87830380f6a825147f0c0f', + url = 'https://github.com/charmbracelet/tree-sitter-vhs', }, maintainers = { '@caarlos0' }, tier = 3, }, - vim = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-vim', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'b448ca63f972ade12c373c808acdd2bf972937db', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-vim', }, maintainers = { '@clason' }, tier = 1, }, - vimdoc = { install_info = { - url = 'https://github.com/neovim/tree-sitter-vimdoc', files = { 'src/parser.c' }, + revision = 'b711df784dd43d0a8ed8ddbfca0ddcc3239d94b4', + url = 'https://github.com/neovim/tree-sitter-vimdoc', }, maintainers = { '@clason' }, tier = 1, }, - vrl = { install_info = { url = 'https://github.com/belltoy/tree-sitter-vrl', @@ -2877,126 +2824,124 @@ M.configs = { maintainers = { '@belltoy' }, tier = 3, }, - vue = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-vue', - files = { 'src/parser.c', 'src/scanner.c' }, branch = 'main', + files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '22bdfa6c9fc0f5ffa44c6e938ec46869ac8a99ff', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-vue', }, maintainers = { '@WhyNotHugo', '@lucario387' }, requires = { 'html_tags' }, tier = 2, }, - - wing = { - install_info = { - url = 'https://github.com/winglang/tree-sitter-wing', - files = { 'src/parser.c', 'src/scanner.c' }, - }, - maintainers = { '@gshpychka', '@MarkMcCulloh' }, - tier = 3, - }, - wgsl = { install_info = { - url = 'https://github.com/szebniok/tree-sitter-wgsl', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '40259f3c77ea856841a4e0c4c807705f3e4a2b65', + url = 'https://github.com/szebniok/tree-sitter-wgsl', }, maintainers = { '@szebniok' }, tier = 3, }, - wgsl_bevy = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-wgsl-bevy', files = { 'src/parser.c', 'src/scanner.c' }, generate_from_json = true, + revision = '1e12c7925c41bb09818d86e30cd78644fde7d31a', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-wgsl-bevy', }, maintainers = { '@theHamsta' }, tier = 2, }, - + wing = { + install_info = { + files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'bd1d35cf3e013dc7e189b46a593bdc2b281b0dd7', + url = 'https://github.com/winglang/tree-sitter-wing', + }, + maintainers = { '@gshpychka', '@MarkMcCulloh' }, + tier = 3, + }, wit = { install_info = { - url = 'https://github.com/liamwh/tree-sitter-wit', files = { 'src/parser.c' }, + revision = 'cab94791450524a542324d8cbe8017d69c516d8e', + url = 'https://github.com/liamwh/tree-sitter-wit', }, maintainers = { '@liamwh' }, tier = 3, }, - xcompose = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-xcompose', files = { 'src/parser.c' }, + revision = '2383cc69a2c42cfade41c7cb971fb3862bec6df1', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-xcompose', }, maintainers = { '@ObserverOfTime' }, tier = 2, }, - xml = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', files = { 'src/parser.c', 'src/scanner.c' }, location = 'xml', + revision = '648183d86f6f8ffb240ea11b4c6873f6f45d8b67', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-xml', }, maintainers = { '@ObserverOfTime' }, requires = { 'dtd' }, tier = 2, }, - xresources = { install_info = { url = 'https://github.com/ValdezFOmar/tree-sitter-xresources', files = { 'src/parser.c' }, }, - filetype = 'xdefaults', maintainers = { '@ValdezFOmar' }, tier = 3, }, - yaml = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-yaml', files = { 'src/parser.c', 'src/scanner.c' }, + revision = '7b03feefd36b5f155465ca736c6304aca983b267', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-yaml', }, maintainers = { '@amaanq' }, tier = 2, }, - yang = { install_info = { - url = 'https://github.com/Hubro/tree-sitter-yang', files = { 'src/parser.c' }, + revision = '2c0e6be8dd4dcb961c345fa35c309ad4f5bd3502', + url = 'https://github.com/Hubro/tree-sitter-yang', }, maintainers = { '@Hubro' }, tier = 3, }, - yuck = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-yuck', files = { 'src/parser.c', 'src/scanner.c' }, + revision = 'e877f6ade4b77d5ef8787075141053631ba12318', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-yuck', }, maintainers = { '@Philipp-M', '@amaanq' }, tier = 2, }, - zathurarc = { install_info = { - url = 'https://github.com/Freed-Wu/tree-sitter-zathurarc', files = { 'src/parser.c' }, + revision = '6e7c8edfcd6f5f7c12b2fa9ffc6d042f1b6d7068', + url = 'https://github.com/Freed-Wu/tree-sitter-zathurarc', }, maintainers = { '@Freed-Wu' }, tier = 3, }, - zig = { install_info = { - url = 'https://github.com/tree-sitter-grammars/tree-sitter-zig', files = { 'src/parser.c' }, + revision = '0d08703e4c3f426ec61695d7617415fff97029bd', + url = 'https://github.com/tree-sitter-grammars/tree-sitter-zig', }, maintainers = { '@amaanq' }, tier = 1, @@ -3022,33 +2967,3 @@ M.configs = { tier = 3, }, } - --- Get a list of all available parsers ----@param tier integer? only get parsers of specified tier ----@return string[] -function M.get_available(tier) - --- @type string[] - local parsers = vim.tbl_keys(M.configs) - table.sort(parsers) - if tier then - parsers = vim.tbl_filter( - --- @param p string - function(p) - return M.configs[p].tier == tier - end, - parsers - ) - end - if vim.fn.executable('tree-sitter') == 0 then - parsers = vim.tbl_filter( - --- @param p string - function(p) - return M.configs[p].install_info ~= nil and not M.configs[p].install_info.generate - end, - parsers - ) - end - return parsers -end - -return M diff --git a/plugin/nvim-treesitter.lua b/plugin/nvim-treesitter.lua index 32f3db311..b007ca29b 100644 --- a/plugin/nvim-treesitter.lua +++ b/plugin/nvim-treesitter.lua @@ -11,7 +11,7 @@ local function complete_available_parsers(arglead) function(v) return v:find(arglead) ~= nil end, - require('nvim-treesitter.parsers').get_available() + require('nvim-treesitter.config').get_available() ) end diff --git a/scripts/check-queries.lua b/scripts/check-queries.lua index bfde0f8a3..dddaf80d7 100755 --- a/scripts/check-queries.lua +++ b/scripts/check-queries.lua @@ -2,7 +2,7 @@ vim.opt.runtimepath:append('.') local query_types = require('nvim-treesitter.health').bundled_queries -local configs = require('nvim-treesitter.parsers').configs +local configs = require('nvim-treesitter.parsers') local parsers = #_G.arg > 0 and { unpack(_G.arg) } or require('nvim-treesitter.config').installed_parsers() diff --git a/scripts/convert-lockfile.lua b/scripts/convert-lockfile.lua new file mode 100755 index 000000000..e0a694897 --- /dev/null +++ b/scripts/convert-lockfile.lua @@ -0,0 +1,21 @@ +#!/usr/bin/env -S nvim -l +vim.opt.runtimepath:append('.') +local util = require('nvim-treesitter.util') +local parsers = require('nvim-treesitter.parsers') + +local filename = require('nvim-treesitter.install').get_package_path('lockfile.json') +local lockfile = vim.json.decode(util.read_file(filename)) --[[@as table<string,{revision:string}>]] + +for k, p in pairs(parsers) do + if p.install_info then + p.install_info.revision = lockfile[k].revision + end +end + +-- write new parser file +local header = '---@type nvim-ts.parsers\nreturn ' +local parser_file = header .. vim.inspect(parsers) +if vim.fn.executable('stylua') == 1 then + parser_file = vim.system({ 'stylua', '-' }, { stdin = parser_file }):wait().stdout --[[@as string]] +end +util.write_file('lua/nvim-treesitter/parsers.lua', parser_file) diff --git a/scripts/update-lockfile.lua b/scripts/update-lockfile.lua deleted file mode 100755 index d77baed61..000000000 --- a/scripts/update-lockfile.lua +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env -S nvim -l -vim.opt.runtimepath:append('.') -local util = require('nvim-treesitter.util') -local parsers = require('nvim-treesitter.parsers').configs - --- Load previous lockfile -local filename = require('nvim-treesitter.install').get_package_path('lockfile.json') -local old_lockfile = vim.json.decode(util.read_file(filename)) --[[@as table<string,{revision:string}>]] - -local jobs = {} ---@type table<string,vim.SystemObj> -local new_lockfile = {} ---@type table<string,{revision:string}> -local updates = {} ---@type string[] - --- check for new revisions -for k, p in pairs(parsers) do - if p.tier == 4 then - new_lockfile[k] = old_lockfile[k] - print('Skipping ' .. k) - elseif p.install_info then - print('Updating ' .. k) - jobs[k] = vim.system({ 'git', 'ls-remote', p.install_info.url }) - end - - if #vim.tbl_keys(jobs) % 100 == 0 or next(parsers, k) == nil then - for name, job in pairs(jobs) do - local stdout = vim.split(job:wait().stdout, '\n') - jobs[name] = nil - - local branch = parsers[name].install_info.branch - - local line = 1 - if branch then - for j, l in ipairs(stdout) do - if l:find(vim.pesc(branch)) then - line = j - break - end - end - end - - local sha = vim.split(stdout[line], '\t')[1] - new_lockfile[name] = { revision = sha } - if new_lockfile[name].revision ~= old_lockfile[name].revision then - updates[#updates + 1] = name - end - end - end -end - -assert(#vim.tbl_keys(jobs) == 0) - -if #updates > 0 then - -- write new lockfile - local lockfile_json = vim.json.encode(new_lockfile) --[[@as string]] - if vim.fn.executable('jq') == 1 then - lockfile_json = - assert(vim.system({ 'jq', '--sort-keys' }, { stdin = lockfile_json }):wait().stdout) - end - util.write_file(filename, lockfile_json) - - print(string.format('\nUpdated parsers: %s', table.concat(updates, ', '))) -else - print('\nAll parsers up to date!') -end diff --git a/scripts/update-parsers.lua b/scripts/update-parsers.lua new file mode 100755 index 000000000..ec1308d77 --- /dev/null +++ b/scripts/update-parsers.lua @@ -0,0 +1,65 @@ +#!/usr/bin/env -S nvim -l +vim.opt.runtimepath:append('.') +local util = require('nvim-treesitter.util') +local parsers = require('nvim-treesitter.parsers') + +local jobs = {} ---@type table<string,vim.SystemObj> +local updates = {} ---@type string[] + +-- check for new revisions +for k, p in pairs(parsers) do + if p.tier < 5 and p.install_info then + print('Updating ' .. k) + jobs[k] = vim.system({ 'git', 'ls-remote', p.install_info.url }) + end + + if #vim.tbl_keys(jobs) % 100 == 0 or next(parsers, k) == nil then + for name, job in pairs(jobs) do + local stdout = vim.split(job:wait().stdout, '\n') + jobs[name] = nil + + local info = parsers[name].install_info + assert(info) + + local branch = info.branch + local line = 1 + if branch then + for j, l in ipairs(stdout) do + if l:find(vim.pesc(branch)) then + line = j + break + end + end + end + + local sha = vim.split(stdout[line], '\t')[1] + if info.revision ~= sha then + info.revision = sha + updates[#updates + 1] = name + end + end + end +end + +assert(#vim.tbl_keys(jobs) == 0) + +if #updates > 0 then + -- write new parser file + local header = '---@type nvim-ts.parsers\nreturn ' + local parser_file = header .. vim.inspect(parsers) + if vim.fn.executable('stylua') == 1 then + parser_file = vim.system({ 'stylua', '-' }, { stdin = parser_file }):wait().stdout --[[@as string]] + end + util.write_file('lua/nvim-treesitter/parsers.lua', parser_file) + + local update_list = table.concat(updates, ', ') + print(string.format('\nUpdated parsers: %s', update_list)) + -- pass list to workflow + if os.getenv('GITHUB_ENV') then + local env = io.open(os.getenv('GITHUB_ENV'), 'a') + env:write(string.format('UPDATED_PARSERS=%s\n', update_list)) + env:close() + end +else + print('\nAll parsers up to date!') +end diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua index f8346bf4d..9f6f9a3de 100755 --- a/scripts/update-readme.lua +++ b/scripts/update-readme.lua @@ -2,12 +2,13 @@ vim.opt.runtimepath:append('.') local util = require('nvim-treesitter.util') local parsers = require('nvim-treesitter.parsers') +local tiers = require('nvim-treesitter.config').tiers ---@class Parser ---@field name string ---@field parser ParserInfo local sorted_parsers = {} -for k, v in pairs(parsers.configs) do +for k, v in pairs(parsers) do table.insert(sorted_parsers, { name = k, parser = v }) end table.sort(sorted_parsers, function(a, b) @@ -45,7 +46,7 @@ for _, v in ipairs(sorted_parsers) do end -- tier - generated_text = generated_text .. (p.tier and parsers.tiers[p.tier] or '') .. ' | ' + generated_text = generated_text .. (p.tier and tiers[p.tier] or '') .. ' | ' -- queries generated_text = generated_text diff --git a/tests/query/injections/nix/test-nix-injections.nix b/tests/query/injections/nix/test-nix-injections.nix index 86e9f975d..477ca4abb 100644 --- a/tests/query/injections/nix/test-nix-injections.nix +++ b/tests/query/injections/nix/test-nix-injections.nix @@ -64,7 +64,7 @@ mod1 = { type = "lua"; config = '' - require('nvim-treesitter.configs').setup() + require('nvim-treesitter.config').setup() ''; }; } |
