require('nvim-treesitter.configs').setup {
    textobjects = {
        select = {
            enable = true,

            -- Automatically jump forward to textobj, similar to targets.vim
            lookahead = true,

            keymaps = {
                -- You can use the capture groups defined in textobjects.scm
                ["af"] = "@function.outer",
                ["if"] = "@function.inner",
                ["acl"] = "@class.outer",
                ["icl"] = "@class.inner",
                ["ii"] = "@conditional.inner",
                ["ai"] = "@conditional.outer",
                ["il"] = "@loop.inner",
                ["al"] = "@loop.outer",
                ["ip"] = "@parameter.inner",
                ["ap"] = "@parameter.outer",
                ["as"] = "@statement.outer",
                ["ica"] = "@call.inner",
                ["aca"] = "@call.outer",
                ["aco"] = "@comment.outer",
            },
        },

        swap = {
            enable = true,
            swap_next = {
                ["<space>a"] = "@parameter.inner",
            },
            swap_previous = {
                ["<space>A"] = "@parameter.inner",
            },
        },

        lsp_interop = {
            enable = true,
            border = 'none',
            peek_definition_code = {
                ["<leader>df"] = "@function.outer",
            },
        },
    },
}
