feat(treesitter): replace nvim-treesitter with pack-managed parsers

This commit is contained in:
2026-04-12 11:46:54 +02:00
parent ec81afbab7
commit cf898d1fee
107 changed files with 8555 additions and 13 deletions
+31 -10
View File
@@ -24,6 +24,7 @@ end
---@field name? string
---@field version? string | vim.VersionRange
---@field build? string[] | fun(self: ow.Pack.Plugin)
---@field ts_parser? ow.TS.ParserField
---@class ow.Pack.Plugin : ow.Pack.PluginSpec
---@field name string
@@ -55,6 +56,7 @@ local function to_pack_spec(spec)
version = spec.version,
data = {
build = spec.build,
ts_parser = spec.ts_parser,
},
}
end
@@ -75,7 +77,15 @@ local function run_build(plugin)
return
end
log.error("invalid build parameter for %s", plugin.name)
log.error("Invalid build parameter for %s", plugin.name)
end
---@param plugin ow.Pack.Plugin
local function run_ts_build(plugin)
local ts = require("ts")
for _, p in ipairs(ts.normalize(plugin.ts_parser)) do
ts.build(plugin, p)
end
end
---@class ow.Pack.Event.Data
@@ -90,7 +100,7 @@ end
---@param plugin ow.Pack.Plugin
---@param events ow.Pack.Event[]
local function process_events(plugin, events)
if not plugin.build then
if not plugin.build and not plugin.ts_parser then
return
end
@@ -99,7 +109,11 @@ local function process_events(plugin, events)
and ev.event == "PackChanged"
and (ev.data.kind == "install" or ev.data.kind == "update")
then
run_build(plugin)
if plugin.ts_parser then
run_ts_build(plugin)
else
run_build(plugin)
end
end
end
end
@@ -111,15 +125,21 @@ local watcher = nil
local timers = {}
---@class ow.Pack
---@field names string[]
---@field paths string[]
---@field plugins ow.Pack.Plugin[]
local M = {
names = {},
paths = {},
plugins = {},
}
---@return string[]
function M.get_names()
return vim.tbl_map(function(p) return p.name end, M.plugins)
end
---@return string[]
function M.get_paths()
return vim.tbl_map(function(p) return p.path end, M.plugins)
end
---@param name string
function M.reload(name)
local path = string.format("%s/lua/plugins/%s.lua", config_dir, name)
@@ -247,12 +267,13 @@ function M.setup(specs)
name = data.spec.name,
version = data.spec.version,
build = d.build,
ts_parser = d.ts_parser,
path = data.path,
}
table.insert(M.plugins, plugin)
table.insert(M.names, plugin.name)
table.insert(M.paths, plugin.path)
vim.cmd.packadd(plugin.name)
if not d.ts_parser then
vim.cmd.packadd(plugin.name)
end
end
})
vim.api.nvim_del_autocmd(id)