Commit graph

164 commits

Author SHA1 Message Date
Christian Clason
bdc2e01958 feat(install)!: always generate from json if possible 2025-05-12 18:43:40 +02:00
Christian Clason
328ee3db54 fix(install): skip tier 4 parsers when installing and updating 2025-05-12 18:43:40 +02:00
Christian Clason
9365cf8a97 fix(install): don't prompt on installed parsers (skip)
Use `:TSInstall!` or `force = true` to reinstall.
2025-05-12 18:43:40 +02:00
przepompownia
6fe0032640 feat(install): allow pass callback to update()
Problem: cannot run `:TSUpdate synchronously`

Solution: pass callback used after exiting jobs
(like in `install-parsers`).
2025-05-12 18:43:40 +02:00
Sebastian Lyng Johansen
02a1a0537c fix(install): early return if parser_info does not exist 2025-05-12 18:43:40 +02:00
Christian Clason
aaf5b7fdf7 fix(install): return error code in callback 2025-05-12 18:43:40 +02:00
Christian Clason
a2841d29d7 feat(install)!: bump minimum tree-sitter version to 0.24 2025-05-12 18:43:40 +02:00
Christian Clason
83dae49a10 feat(install): allow specifying max jobs 2025-05-12 18:43:40 +02:00
Christian Clason
a8677385b7 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-12 18:43:40 +02:00
Christian Clason
214cfcf851 feat!: use tree-sitter build 2025-05-12 18:43:40 +02:00
Christian Clason
c17de56890 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-12 18:43:40 +02:00
Christian Clason
054080bf59 fix: vim.tbl_flatten is deprecated 2025-05-12 18:43:40 +02:00
Christian Clason
5a38df5627 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-12 18:43:40 +02:00
Christian Clason
c70daa36dc 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-12 18:43:40 +02:00
Lewis Russell
0bb981c876 fix: do not use vim.iter (#6469) 2025-05-12 18:43:40 +02:00
Lewis Russell
421e2fb7b2 feat: improve logging of failed installs 2025-05-12 18:43:40 +02:00
Christian Clason
a8f5641ab3 feat(install)!: remove support for C++ scanners 2025-05-12 18:43:40 +02:00
Lewis Russell
5f2c6c0c83 refactor: pull out predicate function 2025-05-12 18:43:40 +02:00
Lewis Russell
59f5d64a61 fix: update vim.system types 2025-05-12 18:43:40 +02:00
Lewis Russell
1bec16362f feat: allow a custom revision in install_info 2025-05-12 18:43:40 +02:00
Lewis Russell
b5a3f5c286 fix: cleanup diagnostics 2025-05-12 18:43:40 +02:00
Lewis Russell
26302f412f fix: add stricter cc options (#5063) 2025-05-12 18:43:40 +02:00
TheLeoP
dd6ec13268 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-12 18:43:40 +02:00
Lewis Russell
934b751f9d fix: check queries in needs_update() 2025-05-12 18:43:40 +02:00
Christian Clason
bae77b87b1 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-12 18:43:40 +02:00
Christian Clason
f0a984347c 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-12 18:43:40 +02:00
Lewis Russell
c5152f3e83 refactor: use vim.system (#4923) 2025-05-12 18:43:40 +02:00
Christian Clason
5a70048116 feat: drop TSInstallInfo in favor of better checkhealth
also fixes the hole in install.compilers
2025-05-12 18:43:40 +02:00
Christian Clason
37957d6bcf refactor: use vim.uv 2025-05-12 18:43:40 +02:00
Christian Clason
cd2c826972 fix: install dependencies 2025-05-12 18:43:40 +02:00
Lewis Russell
cde679e435 refactor: rewrite installation using jobs and async
Replace sync variants with callback support
2025-05-12 18:43:40 +02:00
Christian Clason
5aa2984a02 refactor: use vim.fs.joinpath 2025-05-12 18:43:40 +02:00
Christian Clason
692b051b09 feat!: drop modules, general refactor and cleanup 2025-05-12 18:43:40 +02:00
Nikolai Devolder
8672843527 Fix(auto_install): Install parser if Filetype already known
If setup function was called after `FileType` autocommand triggers
the installation of parser was not done.

This commit checks if filetype is already know before adding the autocommand.
2024-10-14 16:45:21 +02:00
Christian Clason
3d268f9db4 fix: adapt to Nvim 0.11 deprecations 2024-05-17 17:16:44 +02:00
Christian Clason
9a39ec072a fix(install): do not generate bindings when generating parser
These are irrelevant for us and may lead to conflicts with committed
outdated bindings (e.g., wing).
2024-04-14 13:36:22 +02:00
Seb Tomasini
ff79725428
fix(uninstall): use correct path separator on windows (#6369) 2024-03-31 11:37:53 +02:00
Jongwook Choi
9860fceb73 fix: use augroup for auto_install autocmds
Problem: The FileType autocmd to automatically install parsers on a new
filetype (introduced in #3130) did not have augroup. As a result, when
`ts_configs.setup{ }` is called multiple times (for some reason),
duplicated installation requests will be made.

Solution: Use augroup with `clear = true`.
2024-02-11 11:21:29 +01:00
Sergey Kacheev
a072d923c7 fix: uninstall function in the install.lua
The get_ensure_installed_parsers function return a table
for the option "all" because uninstall accepts a table
2023-03-24 23:23:02 +01:00
Amaan Qureshi
f3fbc7c9a7 fix: check if repo location exists for local paths 2023-03-16 19:18:26 +01:00
Amaan Qureshi
079a50f66e refactor!: remove setting the update strategy 2023-03-11 17:52:54 -05:00
Christian Clason
4f8f4fe4c1 fix: do not recommend removing bundled parsers 2023-02-26 00:21:41 +01:00
Lewis Russell
801ef85f93 feat: use vim.treesitter.language.get_lang/add/register() 2023-02-24 10:09:43 +00:00
Amaan Qureshi
853b1ab39a style: fill in missing code docs wherever applicable 2023-02-24 01:08:23 -08:00
Lewis Russell
adeb6e02d3 fix: better support for custom parsers
If the user changes the parser_config by modifing the table returned by
get_parser_configs(), then internally mark the config so when we install
we 1) don't use the revision pointed to by the lockfile, and 2) always
download the parser via git.
2023-01-30 12:49:57 +01:00
Stephan Seitz
29304e16bb fix: show errors when reload after installation fails 2022-12-31 13:59:18 +01:00
Stephan Seitz
0598450eb8 feat: also reload parsers after uninstallation 2022-12-31 13:59:18 +01:00
Stephan Seitz
7c9ddb72d1 feat: allow hot-reloading parser after installation 2022-12-26 15:36:16 +01:00
Stephan Seitz
f0a1c3df24 fix: require_language is needed after installation to update Vim's language table
Fixes #4026
2022-12-26 15:36:16 +01:00
Attila Tajti
07ff07ae4c install: fix is_installed checks with shellslash
Convert paths to use backslashes on Windows.
2022-12-14 17:27:16 +01:00