From 6352cdc943f707d3f6db5f0c8ed7820ba02f7ed5 Mon Sep 17 00:00:00 2001 From: Stephan Seitz Date: Mon, 31 Aug 2020 19:04:14 +0200 Subject: 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 } ) ``` --- lua/nvim-treesitter/configs.lua | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'lua') diff --git a/lua/nvim-treesitter/configs.lua b/lua/nvim-treesitter/configs.lua index c66838d9b..204498e8d 100644 --- a/lua/nvim-treesitter/configs.lua +++ b/lua/nvim-treesitter/configs.lua @@ -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) - - recurse_modules(function(_, _, new_path) - if data.enable then - enable_all(new_path, nil, data.disable) - end - - end, config.modules) + config.modules = vim.tbl_deep_extend('force', config.modules, user_data) + + require'nvim-treesitter.install'.ensure_installed(user_data.ensure_installed) + config.modules.ensure_installed = nil + + 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 -- cgit v1.2.3-70-g09d2