MiniDeps.add({ source = 'https://github.com/nvim-treesitter/nvim-treesitter' }) -- Pre-install a few languages we're (very) likely going to use local ts = require('nvim-treesitter') ts.setup({ install_dir = vim.fn.stdpath('cache') .. '/tree-sitter' }) ts.install({ 'c', 'make', 'bash', 'gitignore', 'editorconfig', 'ini', 'json', 'yaml', 'markdown', 'markdown_inline', }) -- Define aliases for entries that lack an entry, but should have one. local alias = { { 'sh', 'bash' }, } local pat = vim.iter(alias):map(function(a) return a[1] end):totable() vim.list_extend(pat, ts.get_available()) Autocmd('FileType', { pattern = pat, callback = function(arg) local a = vim.iter(alias) :find(function(a) return arg.match == a[1] end) if not a then -- Ensure we only install if an alias was found require('nvim-treesitter').install(vim.bo.ft) pcall(vim.treesitter.start) return end vim.bo.ft = a[2] -- Retriggers function end })