diff options
Diffstat (limited to 'lua')
-rw-r--r-- | lua/lvim/core/treesitter.lua | 70 |
1 files changed, 1 insertions, 69 deletions
diff --git a/lua/lvim/core/treesitter.lua b/lua/lvim/core/treesitter.lua index 560118f8..456a2955 100644 --- a/lua/lvim/core/treesitter.lua +++ b/lua/lvim/core/treesitter.lua @@ -20,7 +20,7 @@ function M.config() sync_install = false, -- Automatically install missing parsers when entering buffer - auto_install = false, + auto_install = true, matchup = { enable = false, -- mandatory, false will disable the whole extension @@ -95,69 +95,6 @@ function M.config() } end ----@class bundledParsersOpts ----@field name_only boolean ----@field filter function - ----Retrives a list of bundled parsers paths (any parser not found in default `install_dir`) ----@param opts bundledParsersOpts ----@return string[] -local function get_parsers(opts) - opts = opts or {} - opts.filter = opts.filter or function() - return true - end - - local bundled_parsers = vim.tbl_filter(opts.filter, vim.api.nvim_get_runtime_file("parser/*.so", true)) - - if opts.name_only then - bundled_parsers = vim.tbl_map(function(parser) - return vim.fn.fnamemodify(parser, ":t:r") - end, bundled_parsers) - end - - return bundled_parsers -end - ----Checks if parser is installed with nvim-treesitter ----@param lang string ----@return boolean -local function is_installed(lang) - local configs = require "nvim-treesitter.configs" - local result = get_parsers { - filter = function(parser) - local install_dir = configs.get_parser_install_dir() - return vim.startswith(parser, install_dir) and (vim.fn.fnamemodify(parser, ":t:r") == lang) - end, - } - local parser_file = result and result[1] or "" - local stat = vim.loop.fs_stat(parser_file) - return stat and stat.type == "file" -end - -local function ensure_updated_bundled() - local configs = require "nvim-treesitter.configs" - local bundled_parsers = get_parsers { - name_only = true, - filter = function(parser) - local install_dir = configs.get_parser_install_dir() - return not vim.startswith(parser, install_dir) - end, - } - - vim.api.nvim_create_autocmd("VimEnter", { - callback = function() - local missing = vim.tbl_filter(function(parser) - return not is_installed(parser) - end, bundled_parsers) - - if #missing > 0 then - vim.cmd { cmd = "TSInstall", args = missing, bang = true } - end - end, - }) -end - function M.setup() -- avoid running in headless mode since it's harder to detect failures if #vim.api.nvim_list_uis() == 0 then @@ -175,14 +112,9 @@ function M.setup() treesitter_configs.setup(opts) - ensure_updated_bundled() - if lvim.builtin.treesitter.on_config_done then lvim.builtin.treesitter.on_config_done(treesitter_configs) end end -M.get_parsers = get_parsers -M.is_installed = is_installed - return M |