return { "nvim-treesitter/nvim-treesitter", event = { "BufReadPre", "BufNewFile" }, build = ":TSUpdate", dependencies = { -- "nvim-treesitter/nvim-treesitter-context", "nvim-treesitter/nvim-treesitter-textobjects", }, config = function() require("nvim-treesitter.configs").setup({ ensure_installed = { "vim", "vimdoc", "bash", "lua", "c", "cpp", "c_sharp", "rust", "cmake", "make", "yaml", "ninja", "gitignore", "markdown", "markdown_inline", "hyprlang", "json", "html", "hlsl", "glsl", "gdshader", "gdscript", "dockerfile", "dart", "css" }, sync_install = false, -- This can be updated to a list of languages instead of defaulting to true highlight = { enable = true }, indent = { enable = true }, incremental_selection = { enable = true, keymaps = { init_selection = "", node_incremental = "", scope_incremental = false, node_decremental = "", }, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["ic"] = { query = "@class.inner" }, ["ac"] = { query = "@class.outer" }, ["ii"] = { query = "@conditional.inner" }, ["ai"] = { query = "@conditional.outer" }, ["if"] = { query = "@function.inner" }, ["af"] = { query = "@function.outer" }, ["il"] = { query = "@loop.inner" }, ["al"] = { query = "@loop.outer" }, }, }, }, }) end, }