summaryrefslogtreecommitdiff
path: root/lua/plugins/core/treesitter.lua
blob: f7b46b91fd5d4017de5883dba2e738c252f8532f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
---@param tbl table
---@return table
local tbl_uniq = function(tbl)
   ---@type table<string, boolean>
   local added = {}
   local res = {}
   res = vim.tbl_filter(function(k)
      if added[k] then
         return false
      end
      added[k] = true
      return true
   end, tbl)

   return res
end

return {
   {
      "nvim-treesitter/nvim-treesitter",
      -- Disable for now, this has been a big source of pain and errors in the
      -- past
      enabled = false,
      build = ":TSUpdate",
      cmd = { "TSUpdateSync" },
      event = { "BufReadPost", "BufNewFile" },
      init = function()
         vim.o.foldmethod = "expr"
         vim.o.foldexpr = "nvim_treesitter#foldexpr()"
      end,
      opts = {
         indent = { enable = true },
         ensure_installed = { "query" },
         ignore_install = {},
         highlight = {
            enable = true,
            additional_vim_regex_highlighting = false,
         },
         query_linter = {
            enable = true,
            use_virtual_text = true,
            lint_events = { "BufWrite", "CursorHold" },
         },
      },
      config = function(_, opts)
         if type(opts.ensure_installed) == "table" then
            opts.ensure_installed = tbl_uniq(opts.ensure_installed)
         end
         if type(opts.ignore_install) == "table" then
            opts.ignore_install = tbl_uniq(opts.ignore_install)
         end
         require("nvim-treesitter.configs").setup(opts)
      end,
   },
}