---@module 'lazy' ---@type LazySpec return { { 'nvim-treesitter/nvim-treesitter', -- highlight, edit, and navigate code build = ':TSUpdate', lazy = false, config = function() -- Pre-install a few languages we're (very) likely going to use local ts = require('nvim-treesitter') ts.install({ 'c', 'make', 'bash', 'gitignore', 'editorconfig', 'ini', 'json', 'yaml', }) -- 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 }) end, } }