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
})
