diff --git a/lua/gopher/_utils/health.lua b/lua/gopher/_utils/health_util.lua similarity index 75% rename from lua/gopher/_utils/health.lua rename to lua/gopher/_utils/health_util.lua index b651fe4..e1d44ee 100644 --- a/lua/gopher/_utils/health.lua +++ b/lua/gopher/_utils/health_util.lua @@ -23,4 +23,11 @@ function health.is_binary_found(bin) return false end +---@param ft string +---@return boolean +function health.is_treesitter_parser_available(ft) + local ok, parser = pcall(vim.treesitter.get_parser, 0, ft) + return ok and parser ~= nil +end + return health diff --git a/lua/gopher/health.lua b/lua/gopher/health.lua index a7a4d14..633a184 100644 --- a/lua/gopher/health.lua +++ b/lua/gopher/health.lua @@ -1,6 +1,6 @@ local health = {} local cmd = require("gopher.config").commands -local u = require "gopher._utils.health" +local u = require "gopher._utils.health_util" local deps = { plugin = { @@ -24,11 +24,12 @@ local deps = { }, { bin = cmd.dlv, msg = "required for debugging, (`nvim-dap`, `gopher.dap`)", optional = true }, }, + treesitter = { + { parser = "go", msg = "required for `gopher.nvim`", optional = false }, + }, } function health.check() - u.info "install go treesitter parser by `:TSInstall go` if you don't have it already" - u.start "required plugins" for _, plugin in ipairs(deps.plugin) do if u.is_lualib_found(plugin.lib) then @@ -55,6 +56,15 @@ function health.check() end end end + + u.start "required treesitter parsers" + for _, parser in ipairs(deps.treesitter) do + if u.is_treesitter_parser_available(parser.parser) then + u.ok(parser.parser .. " parser installed") + else + u.error(parser.parser .. " parser not found, " .. parser.msg) + end + end end return health