diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/configs.lua | 48 |
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 |
