aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* feat(locals)!: remove locals moduleChristian Clason2025-05-123-461/+5
| | | | | | | | | Problem: `locals.lua` was neither used nor tested, and providing it goes against the goal of nvim-treesitter not being a required dependency for other plugins. Solution: Remove the module and document that the queries are provided as-is for limited backward compatibility only.
* feat(tests)!: new infrastructure based on makefileChristian Clason2025-05-1219-264/+261
| | | | | | | | | | | | | | | | | | | | | | Problem: Not easy to run all checks and tests locally. Redundant CI workflows. Solution: Separate CI into two workflows: * lint: Lua files (stylua, luals), query files (valid captures, predicates, directives using tsqueryls), docs (SUPPORTED_LANGUAGES.md) -- does not need parser installation * tests: parsers (ABI compatibility), query files (tsqueryls on Linux/macOS; nvim on Windows), highlight and indent tests (separated for better readability) -- needs parser installation (but only once) Switch to https://github.com/nvim-treesitter/highlight-assertions fork with ABI 15 support. Run all tests (on Linux and macOS) through `make` (`formatlua`, `checklua`, `lintquery`, `formatquery`, `checkquery`, `docs`, `tests`), which downloads and caches all necessary dependencies. Remove `update-readme` workflow (replaced by lint job on PRs).
* refactor(locals): fix type annotations and warningsRiley Bruins2025-05-121-25/+15
|
* tests(angular): don' reset filetypeChristian Clason2025-05-121-1/+0
| | | | | `htmlangular` filetype support is now included in Nvim, so don't set the filetype.
* tests(gleam): fix assert tests that no longer parse correctlyChristian Clason2025-05-125-10/+11
|
* feat(vim): update parser and queriesChristian Clason2025-05-122-1/+5
| | | | | * add support for `:substitute` command * add support for `=` lua chunks
* feat(gdscript)!: update parser and queriesChristian Clason2025-05-122-5/+5
| | | | `(underscore)` node was removed
* feat(parsers): update robot, earthfile, racket, javadoc, scheme, t32, tact, ↵Christian Clason2025-05-121-12/+12
| | | | templ, kotlin, tcl, meson, mlir
* fix(indent): don't skip parsing for yamlChristian Clason2025-05-121-12/+2
|
* chore: remove lockfile and update scriptChristian Clason2025-05-122-978/+0
| | | | `main` branch and `parsers.lua` is the record of truth now
* refactor(lua): fix some luals warningsChristian Clason2025-05-1212-61/+61
|
* feat(install)!: always generate from json if possibleChristian Clason2025-05-126-374/+347
|
* feat(setup)!: remove ensure_install fieldChristian Clason2025-05-127-46/+37
| | | | | | | | Instead, call `require('nvim-treesitter').install( { ... } )` manually. This gives users full control over how they want to install parsers (sync, from grammar, limited concurrency) and obviates the need for calling `setup` for most users.
* feat(parsers): update swift, tact, tcl, templ, mlir, kotlin, koto, elixir, ↵Christian Clason2025-05-121-19/+19
| | | | php_only, ocaml, ocaml_interface, php, astro, slang, slim, blade, gleam, v, ledger
* feat: add .tsqueryrc.jsonChristian Clason2025-05-123-0/+377
|
* feat(parsers): update ziggy, ziggy_schema, bibtex, latexChristian Clason2025-05-121-4/+4
|
* feat(tcl)!: update parser and queriesChristian Clason2025-05-122-2/+4
|
* feat(julia)!: update parser and queriesChristian Clason2025-05-122-9/+1
|
* feat(parsers): update nickel, sql, devicetree, dhall, htmldjango, t32, gap, ↵Christian Clason2025-05-121-36/+36
| | | | javadoc, templ, jinja, tera, verilog, meson, mlir, typespec, wit, phpdoc, superhtml, git_config, swift, terraform, vim, koto, rasi, rescript, bp, enforce, erlang, jinja_inline, cmake, fennel, comment, slint, elm, rust, hcl
* feat(html): use gsub for mimetype lookupChristian Clason2025-05-126-35/+33
|
* fix(install): skip tier 4 parsers when installing and updatingChristian Clason2025-05-126-40/+51
|
* fix(install): don't prompt on installed parsers (skip)Christian Clason2025-05-123-11/+5
| | | | Use `:TSInstall!` or `force = true` to reinstall.
* fix(formatter): increase match limitChristian Clason2025-05-125-54/+55
| | | | | | Problem: Some very long patterns were not formatted correctly. Solution: Increase the match limit when iterating to 1024.
* feat(install): allow pass callback to `update()`przepompownia2025-05-124-43/+56
| | | | | | | Problem: cannot run `:TSUpdate synchronously` Solution: pass callback used after exiting jobs (like in `install-parsers`).
* fix(install): early return if parser_info does not existSebastian Lyng Johansen2025-05-123-39/+41
|
* feat(parsers): rework tiersChristian Clason2025-05-129-571/+569
| | | | | | | * stable: updates follow semver releases (todo) * unstable: updates follow HEAD (default) * unmaintained: no automatic updates * unsupported: no updates, cannot be installed
* fix(ci): update to changed neovim release nameChristian Clason2025-05-123-68/+73
|
* fix(install): return error code in callbackChristian Clason2025-05-129-188/+202
|
* feat(install)!: bump minimum tree-sitter version to 0.24Christian Clason2025-05-124-27/+26
|
* ci(tests): add optional workflow for generating grammarsChristian Clason2025-05-126-159/+201
| | | | run on PR by adding label `ci:generate` or manually
* feat(install): allow specifying max jobsChristian Clason2025-05-122-3/+7
|
* feat(config)!: remove auto_installChristian Clason2025-05-125-87/+58
| | | | use https://github.com/lewis6991/ts-install.nvim instead
* feat(install)!: drop support for gitChristian Clason2025-05-125-289/+295
| | | | | | | | | Problem: Using git for installing parsers can lead to data loss if in a git commit buffer. Solution: Only support downloading via curl+tar, which are installed on all supported platforms (since Windows 10). Curl will also be required for WASM parsers (and for `vim.net.download()`).
* feat!: use tree-sitter buildChristian Clason2025-05-1213-895/+440
|
* feat!: track parser revision in LuaChristian Clason2025-05-1221-982/+994
| | | | | | | | | | | 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.
* fix: vim.tbl_flatten is deprecatedChristian Clason2025-05-122-2/+2
|
* feat(install)!: generate from json instead of requiring nodeChristian Clason2025-05-1210-484/+502
| | | | | | | | | | | | Problem: Many parsers require node/npm to evaluate the `grammar.js` before being able to generate a parser from it. Solution: Generate from `grammar.json` instead, which is fully resolved. Drops `node` and `npm` as (optional) requirements for nvim-treesitter. Note that this requires parsers to commit the generated json iff the grammar requires evaluation (which is currently the case for all tracked languages).
* bot(readme): updatenvim-treesitter-bot[bot]2025-05-121-7/+7
|
* feat(install)!: add explicit path field to parser info (#6476)Christian Clason2025-05-123-77/+55
| | | | | | | | | | | | | | | Problem: Using `url` for both remote repo and local path complicates the code. Solution: Add `path` field that overrides `url` and bypasses git-specific manipulations, i.e., the contents of the `path` are used as-is (no git repo needed). This means `:TSUpdate` will skip such parsers; use `:TSInstall!` instead after making local changes. --------- Co-authored-by: Lewis Russell <lewis6991@gmail.com>
* fix: do not use vim.iter (#6469)Lewis Russell2025-05-124-35/+71
|
* feat: improve logging of failed installsLewis Russell2025-05-122-135/+108
|
* feat(install)!: remove support for C++ scannersChristian Clason2025-05-123-18/+4
|
* doc: better clarification of highlights/injectionsPhạm Huy Hoàng2025-05-121-1/+2
|
* fix(format): update scripts to support nightly (#6126)Phạm Huy Hoàng2025-05-121-12/+27
| | | | No need for assert as the use is contained within the script only
* fix: update add_predicate and add_directive calls for upstream (#6106)Gregory Anders2025-05-121-14/+35
| | | | | Update custom predicates and directives to handle multiple nodes per capture ID per changes upstream.
* fix: better output for update-lockfileChristian Clason2025-05-121-13/+20
|
* feat: improve check-queriesChristian Clason2025-05-121-58/+39
|
* docs: update CONTRIBUTING.mdChristian Clason2025-05-121-19/+46
|
* refactor: pull out predicate functionLewis Russell2025-05-121-11/+9
|
* fix: update vim.system typesLewis Russell2025-05-121-2/+2
|