Fix(modules): simplify configs.setup

This prevents a really weird bug were the following function call (after
loading the activated modules) could activate `highlight_current_scope`

```lua
 require "nvim-treesitter.configs".setup(
     {
         highlight = {
             enable = false, -- false will disable the whole extension
             disable = {"html", "lua"} -- list of language that will be disabled
         },
         refactor = {
             highlight_current_scope = {
                 enable = false,
                 inverse_highlighting = true,
                 disable = {"python", "markdown"}
             },
             highlight_definitions = {
                 enable = true,
                 disable = {"markdown"}
             },
         },
         ensure_installed = "all",
         disable = {"markdown"}, -- list of language that will be disabled
     }
 )
```
This commit is contained in:
Stephan Seitz 2020-08-31 19:04:14 +02:00 committed by Thomas Vigouroux
parent 23b4542218
commit 6352cdc943

View file

@ -161,7 +161,7 @@ local function enable_all(mod, lang, blocklist)
for _, bufnr in pairs(api.nvim_list_bufs()) do
local ft = api.nvim_buf_get_option(bufnr, 'ft')
if not lang or parsers.lang_match_ft(lang, ft) then
if not vim.tbl_contains(blocklist, lang) then
if not vim.tbl_contains(blocklist, lang or parsers.ft_to_lang(ft)) then
enable_module(mod, bufnr, lang)
end
end
@ -301,21 +301,17 @@ end
-- Setup call for users to override module configurations.
-- @param user_data module overrides
function M.setup(user_data)
for name, data in pairs(user_data) do
if name == 'ensure_installed' then
config.ensure_installed = data
require'nvim-treesitter.install'.ensure_installed(data)
else
config.modules[name] = vim.tbl_deep_extend('force', config.modules[name] or {}, data)
config.modules = vim.tbl_deep_extend('force', config.modules, user_data)
recurse_modules(function(_, _, new_path)
if data.enable then
enable_all(new_path, nil, data.disable)
end
require'nvim-treesitter.install'.ensure_installed(user_data.ensure_installed)
config.modules.ensure_installed = nil
end, config.modules)
recurse_modules(function(_, _, new_path)
local data = utils.get_at_path(config.modules, new_path)
if data.enable then
enable_all(new_path, nil, data.disable)
end
end
end, config.modules)
end
-- Defines a table of modules that can be attached/detached to buffers