feat: add option to auto-install missing parsers (#3130)

This commit is contained in:
Jonas Strittmatter 2022-07-08 09:36:54 +02:00 committed by GitHub
parent 8f13ef1563
commit 365f0eb75f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 1 deletions

View file

@ -109,6 +109,9 @@ require'nvim-treesitter.configs'.setup {
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
auto_install = true,
-- List of parsers to ignore installing (for "all")
ignore_install = { "javascript" },

View file

@ -51,6 +51,9 @@ To enable supported features, put this in your `init.lua` file:
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
auto_install = false,
-- List of parsers to ignore installing (for "all")
ignore_install = { "javascript" },

View file

@ -13,6 +13,7 @@ local config = {
modules = {},
sync_install = false,
ensure_installed = {},
auto_install = false,
ignore_install = {},
update_strategy = "lockfile",
parser_install_dir = nil,
@ -386,6 +387,11 @@ function M.setup(user_data)
config.parser_install_dir = vim.fn.expand(config.parser_install_dir, ":p")
end
config.auto_install = user_data.auto_install or false
if config.auto_install then
require("nvim-treesitter.install").setup_auto_install()
end
local ensure_installed = user_data.ensure_installed or {}
if #ensure_installed > 0 then
if user_data.sync_install then

View file

@ -425,6 +425,18 @@ local function install(options)
end
end
function M.setup_auto_install()
vim.api.nvim_create_autocmd("FileType", {
pattern = { "*" },
callback = function()
local lang = parsers.get_buf_lang()
if parsers.get_parser_configs()[lang] and not parsers.has_parser(lang) then
install { ask_reinstall = true } { lang }
end
end,
})
end
function M.update(options)
options = options or {}
return function(...)