summaryrefslogtreecommitdiff
path: root/lua/nvim-treesitter/install.lua
diff options
context:
space:
mode:
authorkiyan42 <yazdani.kiyan@protonmail.com>2020-04-22 11:13:05 +0200
committerkiyan42 <yazdani.kiyan@protonmail.com>2020-04-24 22:15:21 +0200
commit62786ec7c60ea29cbbd48ae658cde7042dba4bb3 (patch)
tree16ee7598796807d07d4e5718b777e769dec09305 /lua/nvim-treesitter/install.lua
parentb7fdd6ae389e1364b0dda25811ddf566fa508bc3 (diff)
feat/refacto: improve configurations
- You should now get the configs through functions - Configs for languages are now inside a local object called parsers - You can get the parser installation configurations with `get_parser_configs` - A new object has been initialized inside configs to specify module config (called config). - Provide functions to enable/disable a module on one buffer - Provide functions to enable/disable a module on all buffers, and if filetype is specified, for specific filetype - Provide function to determine if module is activated for a specified filetype
Diffstat (limited to 'lua/nvim-treesitter/install.lua')
-rw-r--r--lua/nvim-treesitter/install.lua49
1 files changed, 8 insertions, 41 deletions
diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua
index b00d3d77..be09a3bc 100644
--- a/lua/nvim-treesitter/install.lua
+++ b/lua/nvim-treesitter/install.lua
@@ -1,7 +1,8 @@
local api = vim.api
local fn = vim.fn
local luv = vim.loop
-local repositories = require'nvim-treesitter/configs'.repositories
+local configs = require'nvim-treesitter/configs'
+local parsers = configs.get_parser_configs()
local M = {}
@@ -118,14 +119,15 @@ local function install(ft)
if not string.match(yesno, '^y.*') then return end
end
- local repository = repositories[ft]
- if not repository then
+ local parser_config = parsers[ft]
+ if not parser_config then
return api.nvim_err_writeln('Parser not available for language '..ft)
end
+ local install_info = parser_config.install_info
vim.validate {
- url={ repository.url, 'string' },
- files={ repository.files, 'table' }
+ url={ install_info.url, 'string' },
+ files={ install_info.files, 'table' }
}
if fn.executable('git') == 0 then
@@ -138,24 +140,7 @@ local function install(ft)
local cache_folder, err = get_cache_dir()
if err then return api.nvim_err_writeln(err) end
- run_install(cache_folder, package_path, ft, repository)
-end
-
-local function install_info()
- local max_len = 0
- for parser_name, _ in pairs(repositories) do
- if #parser_name > max_len then max_len = #parser_name end
- end
-
- for parser_name, _ in pairs(repositories) do
- local is_installed = #api.nvim_get_runtime_file('parser/'..parser_name..'.so', false) > 0
- api.nvim_out_write(parser_name..string.rep(' ', max_len - #parser_name + 1))
- if is_installed then
- api.nvim_out_write("[✓] installed\n")
- else
- api.nvim_out_write("[✗] not installed\n")
- end
- end
+ run_install(cache_folder, package_path, ft, install_info)
end
M.commands = {
@@ -166,25 +151,7 @@ M.commands = {
"-complete=custom,v:lua.ts_installable_parsers"
},
description = '`:TSInstall {ft}` installs a parser under nvim-treesitter/parser/{name}.so'
- },
- TSInstallInfo = {
- run = install_info,
- args = { "-nargs=0" },
- description = '`:TSInstallInfo` print installation state for every filetype'
}
}
-function M.setup()
- for command_name, def in pairs(M.commands) do
- local call_fn = string.format("lua require'nvim-treesitter.install'.commands.%s.run(<f-args>)", command_name)
- local parts = vim.tbl_flatten({
- "command!",
- def.args,
- command_name,
- call_fn,
- })
- api.nvim_command(table.concat(parts, " "))
- end
-end
-
return M