aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/configs.lua48
1 files changed, 37 insertions, 11 deletions
diff --git a/lua/nvim-treesitter/configs.lua b/lua/nvim-treesitter/configs.lua
index 7e6b0a7b9..d4aa98e89 100644
--- a/lua/nvim-treesitter/configs.lua
+++ b/lua/nvim-treesitter/configs.lua
@@ -72,8 +72,22 @@ end
-- @param bufnr buffer number, defaults to current buffer
-- @param lang language, defaults to current language
local function enable_module(mod, bufnr, lang)
+ local module = M.get_module(mod)
+ if not module then
+ return
+ end
+
bufnr = bufnr or api.nvim_get_current_buf()
lang = lang or parsers.get_buf_lang(bufnr)
+
+ if not module.enable then
+ if module.enabled_buffers then
+ module.enabled_buffers[bufnr] = true
+ else
+ module.enabled_buffers = { [bufnr] = true }
+ end
+ end
+
M.attach_module(mod, bufnr, lang)
end
@@ -101,19 +115,28 @@ local function enable_all(mod)
return
end
+ enable_mod_conf_autocmd(mod)
+ config_mod.enable = true
+ config_mod.enabled_buffers = nil
+
for _, bufnr in pairs(api.nvim_list_bufs()) do
enable_module(mod, bufnr)
end
-
- enable_mod_conf_autocmd(mod)
- config_mod.enable = true
end
-- Disables and detaches the module for a buffer.
-- @param mod path to module
-- @param bufnr buffer number, defaults to current buffer
local function disable_module(mod, bufnr)
+ local module = M.get_module(mod)
+ if not module then
+ return
+ end
+
bufnr = bufnr or api.nvim_get_current_buf()
+ if module.enabled_buffers then
+ module.enabled_buffers[bufnr] = false
+ end
M.detach_module(mod, bufnr)
end
@@ -136,16 +159,17 @@ end
-- @param mod path to module
local function disable_all(mod)
local config_mod = M.get_module(mod)
- if not config_mod or not config_mod.enable then
+ if not config_mod then
return
end
+ config_mod.enabled_buffers = nil
+ disable_mod_conf_autocmd(mod)
+ config_mod.enable = false
+
for _, bufnr in pairs(api.nvim_list_bufs()) do
disable_module(mod, bufnr)
end
-
- disable_mod_conf_autocmd(mod)
- config_mod.enable = false
end
-- Toggles a module for a buffer
@@ -291,21 +315,21 @@ M.commands = {
"-complete=custom,nvim_treesitter#available_modules",
},
},
- TSEnableAll = {
+ TSEnable = {
run = enable_all,
args = {
"-nargs=+",
"-complete=custom,nvim_treesitter#available_modules",
},
},
- TSDisableAll = {
+ TSDisable = {
run = disable_all,
args = {
"-nargs=+",
"-complete=custom,nvim_treesitter#available_modules",
},
},
- TSToggleAll = {
+ TSToggle = {
run = toggle_all,
args = {
"-nargs=+",
@@ -347,7 +371,9 @@ function M.is_enabled(mod, lang, bufnr)
return false
end
- if not module_config.enable or not module_config.is_supported(lang) then
+ local buffer_enabled = module_config.enabled_buffers and module_config.enabled_buffers[bufnr]
+ local config_enabled = module_config.enable or buffer_enabled
+ if not config_enabled or not module_config.is_supported(lang) then
return false
end