diff options
| author | Kiyan Yazdani <yazdani.kiyan@protonmail.com> | 2020-05-01 12:17:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-01 12:17:25 +0200 |
| commit | 1d6ad9b5609308167e7707c07df907779f501196 (patch) | |
| tree | 9c75ab4f7941706483b9137cf31c02853bd06d22 | |
| parent | Merge pull request #33 from kyazdani42/doc/add-documentation (diff) | |
| parent | Avoid global handle to enable installing multiple parsers in parallel (diff) | |
| download | nvim-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.lua | 3 | ||||
| -rw-r--r-- | lua/nvim-treesitter/install.lua | 23 |
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, |
