aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/install.lua39
1 files changed, 28 insertions, 11 deletions
diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua
index 25ec2be1f..3bf5b2960 100644
--- a/lua/nvim-treesitter/install.lua
+++ b/lua/nvim-treesitter/install.lua
@@ -39,11 +39,36 @@ local function get_job_status()
.. "]"
end
+local function get_parser_install_info(lang, validate)
+ local parser_config = parsers.get_parser_configs()[lang]
+
+ if not parser_config then
+ return error("Parser not available for language " .. lang)
+ end
+
+ local install_info = parser_config.install_info
+
+ if validate then
+ vim.validate {
+ url = { install_info.url, "string" },
+ files = { install_info.files, "table" },
+ }
+ end
+
+ return install_info
+end
+
local function get_revision(lang)
if #lockfile == 0 then
local filename = utils.join_path(utils.get_package_path(), "lockfile.json")
lockfile = vim.fn.filereadable(filename) == 1 and vim.fn.json_decode(vim.fn.readfile(filename)) or {}
end
+
+ local install_info = get_parser_install_info(lang)
+ if install_info.revision then
+ return install_info.revision
+ end
+
return (lockfile[lang] and lockfile[lang].revision)
end
@@ -59,7 +84,8 @@ local function is_installed(lang)
end
local function needs_update(lang)
- return not get_revision(lang) or get_revision(lang) ~= get_installed_revision(lang)
+ local revision = get_revision(lang)
+ return not revision or revision ~= get_installed_revision(lang)
end
local function outdated_parsers()
@@ -315,16 +341,7 @@ local function install_lang(lang, ask_reinstall, cache_folder, install_folder, w
end
end
- local parser_config = parsers.get_parser_configs()[lang]
- if not parser_config then
- return api.nvim_err_writeln("Parser not available for language " .. lang)
- end
-
- local install_info = parser_config.install_info
- vim.validate {
- url = { install_info.url, "string" },
- files = { install_info.files, "table" },
- }
+ local install_info = get_parser_install_info(lang, true)
run_install(cache_folder, install_folder, lang, install_info, with_sync, generate_from_grammar)
end