return { 'nvim-treesitter/nvim-treesitter', dependencies = { { 'nvim-treesitter/nvim-treesitter-context', opts = { -- Avoid the sticky context from growing a lot. max_lines = 3, -- Match the context lines to the source code. multiline_threshold = 1, -- Disable it when the window is too small. min_window_height = 20, }, keys = { { '[c', function() -- Jump to previous change when in diffview. if vim.wo.diff then return '[c' else vim.schedule(function() require('treesitter-context').go_to_context() end) return '' end end, desc = 'Jump to upper context', expr = true, }, }, }, }, build = ':TSUpdate', opts = { -- A list of parser names, or "all" ensure_installed = { "c", "lua", "cpp", "markdown", "markdown_inline", "vim", "regex", "vimdoc" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = true, -- Automatically install missing parsers when entering buffer auto_install = false, -- List of parsers to ignore installing (for "all") ignore_install = { "javascript" }, highlight = { -- `false` will disable the whole extension enable = true, -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is -- the name of the parser) -- list of language that will be disabled -- disable = { "c", "rust" }, disable = { "markdown" }, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, indent = true, }, }