return { 'nvim-treesitter/nvim-treesitter', dependencies = { "https://github.com/TheZoq2/tree-sitter-typst", "luckasRanarison/tree-sitter-hyprlang" }, build = ":TSUpdate", opts = { ensure_installed = { "cpp", "c", "lua", "vim", "dockerfile", "python", "java", "cmake", "diff", "gitcommit", "html", "css", "javascript", "json", "rust", "sql", "yaml", "markdown", "markdown_inline" }, auto_install = true, highlight = { enable = true, additional_vim_regex_highlighting = false, disable = function(lang, buf) -- Disable if file size is too big if lang == "ini" or lang == "markdown" then return true end local max_filesize = 2000 * 1024 -- 2MB 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, }, indent = { enable = true }, }, config = function (_, opts) require("nvim-treesitter.configs").setup(opts) local parser_config = require "nvim-treesitter.parsers".get_parser_configs() require'nvim-treesitter.install'.prefer_git = true parser_config.typst = { install_info = { url = "https://github.com/frozolotl/tree-sitter-typst.git", -- local path or git repo files = {"src/parser.c", "src/scanner.cc"}, }, filetype = "typst", -- if filetype does not match the parser name } vim.filetype.add({ pattern = { [".*.typ"] = "typst" }, }) end }