diff options
| author | kiyan <yazdani.kiyan@protonmail.com> | 2022-02-06 14:46:24 +0100 |
|---|---|---|
| committer | Kiyan <yazdani.kiyan@protonmail.com> | 2022-02-06 15:12:34 +0100 |
| commit | a0b7cece2c5fd0f78fa21aa51c171a270551ed13 (patch) | |
| tree | c3437085e5179aea902e3615744030bd8e65bf10 /lua/nvim-treesitter/highlight.lua | |
| parent | 58a4897e6d5f21a9178ae0f802d47af26d67a219 (diff) | |
chore: expose start and stop highlighter
Decompose highlighter module in small functions to allow exporting a
start and stop functions without the syntax change.
Also fix linter issues in configs.lua
Diffstat (limited to 'lua/nvim-treesitter/highlight.lua')
| -rw-r--r-- | lua/nvim-treesitter/highlight.lua | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/lua/nvim-treesitter/highlight.lua b/lua/nvim-treesitter/highlight.lua index 734a17fd..ce7cf811 100644 --- a/lua/nvim-treesitter/highlight.lua +++ b/lua/nvim-treesitter/highlight.lua @@ -103,30 +103,48 @@ hlmap["type.builtin"] = "TSTypeBuiltin" hlmap["variable"] = "TSVariable" hlmap["variable.builtin"] = "TSVariableBuiltin" -function M.attach(bufnr, lang) +local function should_enable_vim_regex(config, lang) + local additional_hl = config.additional_vim_regex_highlighting + local is_table = type(additional_hl) == "table" + + return additional_hl and (not is_table or vim.tbl_contains(additional_hl, lang)) +end + +local function enable_syntax(bufnr) + api.nvim_buf_set_option(bufnr, "syntax", "ON") +end + +function M.get_config() + return configs.get_module "highlight" +end + +function M.stop(bufnr) + if ts.highlighter.active[bufnr] then + ts.highlighter.active[bufnr]:destroy() + end +end + +function M.start(bufnr, lang) local parser = parsers.get_parser(bufnr, lang) - local config = configs.get_module "highlight" + local config = M.get_config() for k, v in pairs(config.custom_captures) do hlmap[k] = v end ts.highlighter.new(parser, {}) +end - local is_table = type(config.additional_vim_regex_highlighting) == "table" - if - config.additional_vim_regex_highlighting - and (not is_table or vim.tbl_contains(config.additional_vim_regex_highlighting, lang)) - then - api.nvim_buf_set_option(bufnr, "syntax", "ON") +function M.attach(bufnr, lang) + M.start(bufnr, lang) + if should_enable_vim_regex(M.get_config(), lang) then + enable_syntax(bufnr) end end function M.detach(bufnr) - if ts.highlighter.active[bufnr] then - ts.highlighter.active[bufnr]:destroy() - end - api.nvim_buf_set_option(bufnr, "syntax", "ON") + M.stop(bufnr) + enable_syntax(bufnr) end return M |
