Commit graph

5998 commits

Author SHA1 Message Date
Christian Clason
7477cb2269 feat(install)!: drop support for git
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()`).
2025-05-06 10:34:44 +02:00
Christian Clason
646ae66641 feat!: use tree-sitter build 2025-05-06 10:34:44 +02:00
Christian Clason
45cf60df05 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.
2025-05-06 10:34:44 +02:00
Christian Clason
3274dbef12 fix: vim.tbl_flatten is deprecated 2025-05-06 10:34:44 +02:00
Christian Clason
62cfd26e78 feat(install)!: generate from json instead of requiring node
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).
2025-05-06 10:34:44 +02:00
nvim-treesitter-bot[bot]
e25c39b0b5 bot(readme): update 2025-05-06 10:34:44 +02:00
Christian Clason
e84e1df3d1 feat(install)!: add explicit path field to parser info (#6476)
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>
2025-05-06 10:34:44 +02:00
Lewis Russell
5764b8e745 fix: do not use vim.iter (#6469) 2025-05-06 10:34:44 +02:00
Lewis Russell
7d9df31e8e feat: improve logging of failed installs 2025-05-06 10:34:44 +02:00
Christian Clason
40d8d3bcaa feat(install)!: remove support for C++ scanners 2025-05-06 10:34:44 +02:00
Phạm Huy Hoàng
4932590364 doc: better clarification of highlights/injections 2025-05-06 10:34:44 +02:00
Phạm Huy Hoàng
19b26cd00d fix(format): update scripts to support nightly (#6126)
No need for assert as the use is contained within the script only
2025-05-06 10:34:44 +02:00
Gregory Anders
f1998bd5db fix: update add_predicate and add_directive calls for upstream (#6106)
Update custom predicates and directives to handle multiple nodes per
capture ID per changes upstream.
2025-05-06 10:34:44 +02:00
Christian Clason
ebe8e5a691 fix: better output for update-lockfile 2025-05-06 10:34:44 +02:00
Christian Clason
ef5804c6b4 feat: improve check-queries 2025-05-06 10:34:44 +02:00
Christian Clason
9b3a4471b3 docs: update CONTRIBUTING.md 2025-05-06 10:34:44 +02:00
Lewis Russell
e45f99a850 refactor: pull out predicate function 2025-05-06 10:34:44 +02:00
Lewis Russell
dc196db002 fix: update vim.system types 2025-05-06 10:34:44 +02:00
Lewis Russell
5c3366caa2 fix: remove downcase! directive use 2025-05-06 10:34:44 +02:00
Lewis Russell
2ea2f73660 feat: allow a custom revision in install_info 2025-05-06 10:34:44 +02:00
Pham Huy Hoang
461bd3ae58 fix!: indents now rely on treesitter highlight
- Apply suggestions from Lewis to only parse visible lines
- Fix failed tests
2025-05-06 10:34:44 +02:00
Christian Clason
81dfb6d522 docs(readme): document 'location' key 2025-05-06 10:34:44 +02:00
Pham Huy Hoang
f8d1abeed5 tests: remove set ft 2025-05-06 10:34:44 +02:00
Lewis Russell
52e4fc5b77 fix: cleanup diagnostics 2025-05-06 10:34:44 +02:00
Lewis Russell
42328bf9a3 fix: add stricter cc options (#5063) 2025-05-06 10:34:44 +02:00
Christian Clason
326eb0f609 fix: remove upstreamed directives
`#inject-lang!` and `#trim!`; fix `set-lang-from-mimetype`
2025-05-06 10:34:44 +02:00
TheLeoP
50795ed1b7 fix: always normalize paths
Not doing this results in paths with a mix of '\\' and '/' for Windows.
This isn't a problem when dealing with Neovim/luv APIs, but it is a
problem when comparing strings.
2025-05-06 10:34:44 +02:00
TheLeoP
528ba8cf44 fix: check if config has install_info in filter 2025-05-06 10:34:44 +02:00
Lewis Russell
8265a3568c fix: check queries in needs_update() 2025-05-06 10:34:44 +02:00
Lewis Russell
a7c208bd80 fix: filter languages through parser.configs 2025-05-06 10:34:44 +02:00
Christian Clason
ef6d7070c4 feat: add parser tiers
Tier 1: Stable
Tier 2: Core (maintained by org members)
Tier 3: Community (maintained by external contributors, to varying
degree)
Tier 4: Unsupported (lacking active maintainer or declared
experimental); skipped in lockfile update and ignored for automatic
install by default
2025-05-06 10:34:44 +02:00
Christian Clason
f614ec3566 feat!: drop makefile support, norg parser
Norg install_info and queries are maintained by neorg.

All other parsers are compatible with C++11, so fix that as standard.
(Can be bumped if all supported platforms support C++14.)

Remove Makefile support, as it's no longer needed.
2025-05-06 10:34:44 +02:00
Lewis Russell
cfae39609f refactor: use vim.system (#4923) 2025-05-06 10:34:44 +02:00
Christian Clason
c1d7d74278 fix: expand tiers in ignore_install 2025-05-06 10:34:44 +02:00
Christian Clason
a26beea342 feat: drop TSInstallInfo in favor of better checkhealth
also fixes the hole in install.compilers
2025-05-06 10:34:44 +02:00
Christian Clason
5fc5a9272a refactor: use vim.uv 2025-05-06 10:34:44 +02:00
Christian Clason
a9daf672e5 fix: install dependencies 2025-05-06 10:34:44 +02:00
Christian Clason
c97342bf76 ci: remove update-lockfile shell script 2025-05-06 10:34:44 +02:00
Lewis Russell
0e36600235 refactor: rewrite installation using jobs and async
Replace sync variants with callback support
2025-05-06 10:34:44 +02:00
Christian Clason
c72fb9dc91 refactor: use vim.fs.joinpath 2025-05-06 10:34:44 +02:00
Christian Clason
f90a87a0c2 feat!: drop luarocks release 2025-05-06 10:34:44 +02:00
Christian Clason
4c8ba46f55 feat(locals)!: refactor locals.lua into standalone
Co-authored-by: TheLeoP <eugenio2305@hotmail.com>
2025-05-06 10:34:44 +02:00
Christian Clason
be0808844d feat!: drop modules, general refactor and cleanup 2025-05-06 10:34:44 +02:00
ObserverOfTime
d3c7a9f4c1 feat(c-family): inherit injections 2025-05-06 10:34:44 +02:00
Marc Jakobi
7b65d02621 injections(nix): add nixosTest.testScript + home-manager nvim config
(+ add Check to mkDerivation bash matches)

(+ add Check to mkDerivation bash matches)
2025-05-06 10:34:44 +02:00
ObserverOfTime
be71f87b00 feat(yuck): add missing injections
And builtin variable highlights
2025-05-06 10:34:44 +02:00
Caleb White
28d480e062
fix: blade injection highlighting (#7846)
Injecting php was broken upstream so this is a temporary fix until
upstream fixes it.

See https://github.com/nvim-treesitter/nvim-treesitter/issues/7842
2025-05-05 20:05:53 -07:00
Marc Jakobi
94ea4f436d feat(haskell): injections for inline-python quasiquotes 2025-04-30 11:45:52 +02:00
Christian Clason
3b308861a8 fix(injections): dtd, glimmer.*, razor, tablegen, teal 2025-04-27 11:04:54 +02:00
Christian Clason
4c7509e7b0 fix(roc): use correct predicate in injections 2025-04-26 22:12:46 +02:00