diff --git a/lua/utils.lua b/lua/utils.lua index 6c466a4..07b6831 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -3,14 +3,14 @@ local M = {} M.os_name = vim.uv.os_uname().sysname --- Check that an executable is available ---- @param exe string: Array to look for +--- @param exe string Array to look for --- @return boolean function M.is_installed(exe) return vim.fn.executable(exe) == 1 end --- Check that at least one executable is available ---- @param exes table: Array of exes +--- @param exes table Array of exes --- @return boolean function M.any_installed(exes) for _, e in ipairs(exes) do @@ -24,7 +24,7 @@ end --- Asserts that an executable is available --- Raises error if missing. ---- @param exe string: Array to look for +--- @param exe string Array to look for function M.assert_installed(exe) if not M.is_installed(exe) then M.notify("Missing executable '" .. exe .. "'.") @@ -33,7 +33,7 @@ end --- Asserts that at least one executable is available --- Raises error if missing. ---- @param exes table: Array of exes +--- @param exes table Array of exes function M.assert_any_installed(exes) if not M.any_installed(exes) then error("At least one of the following is required:\n" .. @@ -42,7 +42,7 @@ function M.assert_any_installed(exes) end --- Asserts that a python module is installed ----@param mod string: The python module to check +---@param mod string The python module to check function M.python3_module_is_installed(mod) if not M.is_installed("python3") then return false @@ -53,13 +53,17 @@ function M.python3_module_is_installed(mod) end --- Asserts that a python module is installed ----@param mod string: The python module to check +---@param mod string The python module to check function M.assert_python3_module_installed(mod) if not M.python3_module_is_installed(mod) then error("Python3 module " .. mod .. " not installed") end end +--- Send a notification +---@param msg string Message to send +---@param title string Title of notification +---@param level integer Log level function M.notify(msg, title, level) if title and not pcall(require, "notify") then msg = "[" .. title .. "] " .. msg @@ -67,18 +71,30 @@ function M.notify(msg, title, level) vim.notify(msg, level, { title = title, }) end +--- Send a debug notification +---@param msg string Message to send +---@param title string Title of notification function M.debug(msg, title) M.notify(msg, title, vim.log.levels.DEBUG) end +--- Send an info notification +---@param msg string Message to send +---@param title string Title of notification function M.info(msg, title) M.notify(msg, title, vim.log.levels.INFO) end +--- Send a warning notification +---@param msg string Message to send +---@param title string Title of notification function M.warn(msg, title) M.notify(msg, title, vim.log.levels.WARN) end +--- Send an error notification +---@param msg string Message to send +---@param title string Title of notification function M.err(msg, title) M.notify(msg, title, vim.log.levels.ERROR) end @@ -104,8 +120,8 @@ function M.try_require(module, err_title, on_success) end --- Update table t1 with values in t2. ---- @param table table: The table to update ---- @param values table: The table with new values +---@param table table The table to update +---@param values table The table with new values function M.update_table(table, values) for k, v in pairs(values) do if type(v) == "table" and type(table[k] or false) == "table" then