aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKiyan Yazdani <yazdani.kiyan@protonmail.com>2020-05-01 12:17:25 +0200
committerGitHub <noreply@github.com>2020-05-01 12:17:25 +0200
commit1d6ad9b5609308167e7707c07df907779f501196 (patch)
tree9c75ab4f7941706483b9137cf31c02853bd06d22
parentMerge pull request #33 from kyazdani42/doc/add-documentation (diff)
parentAvoid global handle to enable installing multiple parsers in parallel (diff)
downloadnvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar.gz
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar.bz2
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar.lz
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar.xz
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.tar.zst
nvim-treesitter-1d6ad9b5609308167e7707c07df907779f501196.zip
Merge pull request #34 from theHamsta/ensure_installed
Add function 'nvim-treesitter/install'.ensure_installed
-rw-r--r--lua/nvim-treesitter/configs.lua3
-rw-r--r--lua/nvim-treesitter/install.lua23
2 files changed, 25 insertions, 1 deletions
diff --git a/lua/nvim-treesitter/configs.lua b/lua/nvim-treesitter/configs.lua
index 2761f0be8..eabe3e3bd 100644
--- a/lua/nvim-treesitter/configs.lua
+++ b/lua/nvim-treesitter/configs.lua
@@ -325,6 +325,9 @@ function M.setup(user_data)
if config[mod].keymaps and type(data.keymaps) == 'table' then
config[mod].keymaps = data.keymaps
end
+ if mod == 'ensure_installed' then
+ require'nvim-treesitter/install'.ensure_installed(data)
+ end
end
end
end
diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua
index ca84ac036..77e0fccc4 100644
--- a/lua/nvim-treesitter/install.lua
+++ b/lua/nvim-treesitter/install.lua
@@ -3,6 +3,7 @@ local fn = vim.fn
local luv = vim.loop
local configs = require'nvim-treesitter/configs'
local parsers = configs.get_parser_configs()
+local has_parser = require'nvim-treesitter/parsers'.has_parser
local M = {}
@@ -39,9 +40,11 @@ local function iter_cmd(cmd_list, i, ft)
local attr = cmd_list[i]
if attr.info then print(attr.info) end
+ local handle
+
handle = luv.spawn(attr.cmd, attr.opts, vim.schedule_wrap(function(code)
handle:close()
- if code ~= 0 then return api.nvim_err_writeln(attr.err) end
+ if code ~= 0 then return api.nvim_err_writeln(attr.err) end
iter_cmd(cmd_list, i + 1, ft)
end))
end
@@ -143,6 +146,24 @@ local function install(ft)
run_install(cache_folder, package_path, ft, install_info)
end
+
+M.ensure_installed = function(languages)
+ if type(languages) == 'string' then
+ if languages == 'all' then
+ languages = configs.available_parsers()
+ else
+ languages = {languages}
+ end
+ end
+
+ for _, ft in ipairs(languages) do
+ if not has_parser(ft) then
+ install(ft)
+ end
+ end
+end
+
+
M.commands = {
TSInstall = {
run = install,