aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorMunif Tanjim <hello@muniftanjim.dev>2021-08-08 05:23:11 +0600
committerGitHub <noreply@github.com>2021-08-07 18:23:11 -0500
commit6ed86a85164e53c8c2a5a99761768fc48cebaf14 (patch)
tree0d48991594387c4371533fc40e7c381b23fc4e7a /lua
parentUpdate lockfile.json (diff)
downloadnvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar.gz
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar.bz2
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar.lz
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar.xz
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.tar.zst
nvim-treesitter-6ed86a85164e53c8c2a5a99761768fc48cebaf14.zip
feat: allow 'revision' override in parser config (#1661)
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