diff options
Diffstat (limited to 'nvim/.config')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils.lua | 28 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua | 7 |
2 files changed, 30 insertions, 5 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index 0acbc32..bbbe857 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -34,6 +34,34 @@ function M.debounce(ms, fn) end end +function M.system(...) + local s = vim.system(...) + --- @param obj vim.SystemObj + --- @param cmd string[] + --- @param opts SystemOpts|nil) + --- @param on_exit function|nil + ---@diagnostic disable-next-line: inject-field + s.pipe = function(obj, cmd, opts, on_exit) + opts = vim.tbl_extend("keep", opts or {}, { stdin = obj:wait().stdout }) + return M.system(cmd, opts, on_exit) + end + + --- @param obj vim.SystemObj + --- @param cmd string[] + --- @param opts SystemOpts|nil) + --- @param on_exit function|nil + ---@diagnostic disable-next-line: inject-field + s.try_pipe = function(obj, cmd, opts, on_exit) + if vim.fn.executable(cmd[1]) ~= 1 then + cmd = { "cat" } + end + ---@diagnostic disable-next-line: undefined-field + return obj:pipe(cmd, opts, on_exit) + end + + return s +end + ---Register callback to run when a lsp server matching a filter attaches to a buffer ---@param on_attach fun(client: lsp.Client, buffer: integer): boolean|nil ---@param filter vim.lsp.get_clients.filter|nil diff --git a/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua b/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua index 679666d..8e36186 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua @@ -35,12 +35,9 @@ local M = { return {} end - local cmd = vim.system({ "fortune", "-s" }, { text = true }) - if vim.fn.executable("cowsay") == 1 then - cmd = vim.system({ "cowsay" }, { text = true, stdin = cmd:wait().stdout }) - end + local obj = U.system({ "fortune", "-s" }):try_pipe({ "cowsay" }) - return vim.split(cmd:wait().stdout or "", "\n") + return vim.split(obj:wait().stdout or "", "\n") end, { " ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ", |