local env = require("my.helpers.env")

local M = {
  {
    "nvim-treesitter/nvim-treesitter",
    build = ":TSUpdate",
    event = "BufReadPost",
    dependencies = {
      "nvim-treesitter/nvim-treesitter-textobjects",
    },
    config = function()
      require("nvim-treesitter.configs").setup({
        --{{{Languages
        ensure_installed = {
          "bash",
          "javascript",
          "typescript",
          "c",
          "cpp",
          "css",
          "dockerfile",
          "elixir",
          "fish",
          "html",
          "json",
          "jsonc",
          "latex",
          "python",
          "rust",
          "scss",
          "toml",
          "tsx",
          "vim",
          "yaml",
          "nix",
          "lua"
        },
        sync_install = false,
        --}}}
        --{{{ Highlighting
        highlight = {
          enable = true,
          disable = { "kotlin" },
          additional_vim_regex_highlighting = false,
        },
        --}}}
        textobjects = {
          --{{{ Select
          select = {
            enable = true,
            lookahead = true,
            keymaps = {
              -- You can use the capture groups defined in textobjects.scm
              ["af"] = "@function.outer",
              ["if"] = "@function.inner",
              ["ac"] = "@class.outer",
              ["ic"] = "@class.inner",
            },
          },
          --}}}
          --{{{ Move
          move = {
            enable = true,
            set_jumps = true, -- whether to set jumps in the jumplist
            goto_next_start = {
              ["]f"] = "@function.outer",
              ["]c"] = "@class.outer",
            },
            goto_next_end = {
              ["]F"] = "@function.outer",
              ["]C"] = "@class.outer",
            },
            goto_previous_start = {
              ["[f"] = "@function.outer",
              ["[c"] = "@class.outer",
            },
            goto_previous_end = {
              ["[F"] = "@function.outer",
              ["[C"] = "@class.outer",
            },
          },
          --}}}
        },
        indent = { enable = true },
      })
    end,
  },
  {
    -- show context on closing parenthesis
    "haringsrob/nvim_context_vt",
    event = "BufReadPost",
    cond = env.vscode.not_active(),
  },
}

return M