local function disable(lang, buf) local max_filesize = 100 * 1024 -- 100 KB local ok, stats = pcall(vim.uv.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end require("nvim-treesitter").setup({ auto_install = false, ensure_installed = {}, ignore_install = {}, modules = {}, sync_install = false, highlight = { additional_vim_regex_highlighting = false, disable = disable, enable = true, }, indent = { enable = true, disable = { "rust", "lua", "python", "golang", "nix", "json", "html", "javascript" } }, incremental_selection = { enable = true, keymaps = { init_selection = "vv", node_decremental = "_", node_incremental = "+", scope_incremental = false, }, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { -- You can use the capture groups defined in textobjects.scm ["af"] = { query = "@function.outer", desc = "around a function" }, ["if"] = { query = "@function.inner", desc = "inner part of a function" }, ["ac"] = { query = "@class.outer", desc = "around a class" }, ["ic"] = { query = "@class.inner", desc = "inner part of a class" }, ["ai"] = { query = "@conditional.outer", desc = "around an if statement" }, ["ii"] = { query = "@conditional.inner", desc = "inner part of an if statement" }, ["al"] = { query = "@loop.outer", desc = "around a loop" }, ["il"] = { query = "@loop.inner", desc = "inner part of a loop" }, ["ap"] = { query = "@parameter.outer", desc = "around parameter" }, ["ip"] = { query = "@parameter.inner", desc = "inside a parameter" }, }, selection_modes = { ["@parameter.outer"] = "v", -- charwise ["@parameter.inner"] = "v", -- charwise ["@function.outer"] = "v", -- charwise ["@conditional.outer"] = "V", -- linewise ["@loop.outer"] = "V", -- linewise ["@class.outer"] = "", -- blockwise }, include_surrounding_whitespace = false, }, move = { enable = true, set_jumps = true, -- whether to set jumps in the jumplist goto_previous_start = { ["[f"] = { query = "@function.outer", desc = "Previous function" }, ["[c"] = { query = "@class.outer", desc = "Previous class" }, ["[p"] = { query = "@parameter.inner", desc = "Previous parameter" }, }, goto_next_start = { ["]f"] = { query = "@function.outer", desc = "Next function" }, ["]c"] = { query = "@class.outer", desc = "Next class" }, ["]p"] = { query = "@parameter.inner", desc = "Next parameter" }, }, }, swap = { enable = true, swap_next = { ["a"] = "@parameter.inner", }, swap_previous = { ["A"] = "@parameter.inner", }, }, }, })