aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'nvim')
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils.lua28
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/dashboard.lua7
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,
{
" ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ",