-- Diagnostic keymaps vim.keymap.set( 'n', '[d', vim.diagnostic.goto_prev, { desc = "[Diagnostic] Go to previous diagnostic message" } ) vim.keymap.set( 'n', ']d', vim.diagnostic.goto_next, { desc = "[Diagnostic] Go to next diagnostic message" } ) vim.keymap.set( 'n', 'e', vim.diagnostic.open_float, { desc = "[Diagnostic] Open floating diagnostic message" } ) vim.keymap.set( 'n', 'q', vim.diagnostic.setloclist, { desc = "[Diagnostic] Open diagnostics list" } ) -- Install and configure treesitter return { "nvim-treesitter/nvim-treesitter", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", }, build = ":TSUpdate", -- Configure treesitter config = function() ---@diagnostic disable-next-line: missing-fields local config = require("nvim-treesitter.configs") config.setup({ -- Enable color syntax highlight = { enable = true, disable = { "markdown" }, }, -- Enable better indentation management indent = { enable = true }, -- Installed and configured languages ensure_installed = { "bash", "css", "dot", "gitignore", "html", "javascript", "json", "julia", "latex", "lua", "markdown", "markdown_inline", "mermaid", "norg", "python", "query", "r", "typescript", "vim", "vimdoc", "yaml", }, -- Do not install parses synchronously sync_install = false, -- Do not install automatically missing parsers auto_install = false, -- select the current bloc incremental_selection = { enable = true, keymaps = { init_selection = "", node_incremental = "", scope_incremental = false, node_decremental = "", }, }, textobjects = { select = { enable = true, lookahead = true, -- Automatically jump forward to textobj keymaps = { -- You can use the capture groups defined in textobjects.scm ['aa'] = '@parameter.outer', ['ia'] = '@parameter.inner', ['af'] = '@function.outer', ['if'] = '@function.inner', ['ac'] = '@class.outer', ['ic'] = '@class.inner', }, }, move = { enable = true, set_jumps = true, -- whether to set jumps in the jumplist goto_next_start = { [']m'] = '@function.outer', [']]'] = '@class.outer', }, goto_next_end = { [']M'] = '@function.outer', [']['] = '@class.outer', }, goto_previous_start = { ['[m'] = '@function.outer', ['[['] = '@class.outer', }, goto_previous_end = { ['[M'] = '@function.outer', ['[]'] = '@class.outer', }, }, swap = { enable = true, swap_next = { ['a'] = '@parameter.inner', }, swap_previous = { ['A'] = '@parameter.inner', }, }, }, }) end, }