require('nvim-treesitter.configs').setup({
    ensure_installed = {
        'bash',
        'beancount',
        'c',
        'cmake',
        'comment',
        'cpp',
        'css',
        'dockerfile',
        'dot',
        'go',
        'gomod',
        'gowork',
        'graphql',
        'haskell',
        'hcl',
        'html',
        'http',
        'javascript',
        'jsdoc',
        'json',
        'json5',
        'jsonc',
        'lua',
        'make',
        'markdown',
        'php',
        'pug',
        'python',
        'regex',
        'rst',
        'ruby',
        'rust',
        'scss',
        'toml',
        'tsx',
        'typescript',
        'vim',
        'vimdoc',
        'vue',
        'yaml',
    },
    highlight = {
        enable = true,
    },
    indent = {
        enable = false,
    },
    incremental_selection = {
        enable = true,
        keymaps = {
            init_selection = 'gnn',
            node_incremental = 'grn',
            scope_incremental = 'grc',
            node_decremental = 'grm',
        },
    },
    playground = {
        enable = true,
        disable = {},
        updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
        persist_queries = false, -- Whether the query persists across vim sessions
    },
    textobjects = {
        select = {
            enable = true,
            keymaps = {
                -- You can use the capture groups defined in textobjects.scm
                ['af'] = '@function.outer',
                ['if'] = '@function.inner',
                ['ac'] = '@class.outer',
                ['ic'] = '@class.inner',
                ['aP'] = '@parameter.outer',
                ['iP'] = '@parameter.inner',
            },
        },
    },
})
