return { { 'nvim-treesitter/nvim-treesitter', branch = 'master', lazy = false, build = ':TSUpdate', config = function() require'nvim-treesitter.configs'.setup ({ ensure_installed = { 'bash', 'c', 'cmake', 'cpp', 'css', 'diff', 'dockerfile', 'git_config', 'git_rebase', 'gitattributes', 'gitcommit', 'gitignore', 'html', 'java', 'javascript', 'jsdoc', 'json', 'jsonc', 'kotlin', 'lua', 'luadoc', 'luap', 'make', 'markdown', 'markdown_inline', 'php', 'printf', 'python', 'query', 'regex', 'rust', 'scala', 'sql', 'svelte', 'swift', 'toml', 'tsx', 'typescript', 'vim', 'vimdoc', 'xml', 'yaml', 'zig' }, sync_install = false, auto_install = true, indent = { enable = true }, highlight = { enable = true, disable = function(lang, buf) local max_filesize = 500 * 1024 -- 100 KB local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end, -- 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, }, }) local treesitter_parser_config = require("nvim-treesitter.parsers").get_parser_configs() treesitter_parser_config.templ = { install_info = { url = "https://github.com/vrischmann/tree-sitter-templ.git", files = {"src/parser.c", "src/scanner.c"}, branch = "master", }, } vim.treesitter.language.register("templ", "templ") end }, { 'nvim-treesitter/playground', }, { "nvim-treesitter/nvim-treesitter-context", after = "nvim-treesitter", config = function() require'treesitter-context'.setup{ enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) multiwindow = false, -- Enable multiwindow support. max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. line_numbers = true, multiline_threshold = 20, -- Maximum number of lines to show for a single context trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer' mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline' -- Separator between context and content. Should be a single character string, like '-'. -- When separator is set, the context will only show up when there are at least 2 lines above cursorline. separator = nil, zindex = 20, -- The Z-index of the context window on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching } end }, }