-- Author : swytch -- Created : Monday May 24, 2021 20:02:19 CET -- License : GPLv3 -- Description : treesitter config file return { "nvim-treesitter/nvim-treesitter", dependencies = { -- Additional text objects via treesitter "nvim-treesitter/nvim-treesitter-textobjects", }, build = ":TSUpdate", opts = { ensure_installed = { "c", "cpp", "lua", "rust", "bash", "vim", "latex", "python", "html", "javascript", "json", "markdown" }, highlight = { enable = true, }, indent = { enable = true, }, incremental_selection = { enable = true, keymaps = { init_selection = "", node_incremental = "", scope_incremental = "", node_decremental = "", }, }, textobjects = { select = { enable = true, lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim keymaps = { -- use the capture groups defined in textobjects.scm ["ap"] = { query = "@parameter.outer", desc = "Select parameter region" }, ["ip"] = { query = "@parameter.inner", desc = "Select inner part of a parameter region" }, ["af"] = { query = "@function.outer", desc = "Select a function block" }, ["if"] = { query = "@function.inner", desc = "Select inner part of a function" }, ["ac"] = { query = "@class.outer", desc = "Select a class block" }, ["ic"] = { query = "@class.inner", desc = "Select inner part of a class" }, }, }, move = { enable = true, set_jumps = true, -- whether to set jumps in the jumplist goto_next_start = { ["]m"] = { query = "@function.outer", desc = "Jump to next function", }, ["])"] = { query = "@class.outer", desc = "Jump to next class", }, }, goto_next_end = { ["]M"] = { query = "@function.outer", desc = "Jump after next function", }, ["]]"] = { query = "@class.outer", desc = "Jump after next class", }, }, goto_previous_start = { ["[m"] = { query = "@function.outer", desc = "Jump to previous function", }, ["[)"] = { query = "@class.outer", desc = "Jump to previous class", }, }, goto_previous_end = { ["[M"] = { query = "@function.outer", desc = "Jump after previous function", }, ["[]"] = { query = "@class.outer", desc = "Jump after previous class", }, }, }, swap = { enable = true, swap_next = { ["a"] = { query = "@parameter.inner", desc = "Swap with next parameter", }, }, swap_previous = { ["A"] = { query = "@parameter.inner", desc = "Swap with previous parameter", }, }, }, }, }, config = function(_, opts) require("nvim-treesitter.configs").setup(opts) end }