mirror of
https://github.com/folke/lazy.nvim.git
synced 2025-04-18 20:36:45 +00:00
feat(ui): added multiple options for diff command
This commit is contained in:
parent
8ad05feef1
commit
7d02da2ff0
6 changed files with 83 additions and 5 deletions
58
lua/lazy/view/diff.lua
Normal file
58
lua/lazy/view/diff.lua
Normal file
|
@ -0,0 +1,58 @@
|
|||
local Util = require("lazy.util")
|
||||
|
||||
local M = {}
|
||||
|
||||
---@alias LazyDiff {commit:string} | {from:string, to:string}
|
||||
---@alias LazyDiffFun fun(plugin:LazyPlugin, diff:LazyDiff)
|
||||
|
||||
M.handlers = {
|
||||
|
||||
---@type LazyDiffFun
|
||||
browser = function(plugin, diff)
|
||||
if plugin.url then
|
||||
local url = plugin.url:gsub("%.git$", "")
|
||||
if diff.commit then
|
||||
Util.open(url .. "/commit/" .. diff.commit)
|
||||
else
|
||||
Util.open(url .. "/compare/" .. diff.from .. ".." .. diff.to)
|
||||
end
|
||||
else
|
||||
Util.error("No url for " .. plugin.name)
|
||||
end
|
||||
end,
|
||||
|
||||
---@type LazyDiffFun
|
||||
["diffview.nvim"] = function(plugin, diff)
|
||||
if diff.commit then
|
||||
vim.cmd.DiffviewOpen(("-C=%s"):format(plugin.dir) .. " " .. diff.commit)
|
||||
else
|
||||
vim.cmd.DiffviewOpen(("-C=%s"):format(plugin.dir) .. " " .. diff.from .. ".." .. diff.to)
|
||||
end
|
||||
end,
|
||||
|
||||
---@type LazyDiffFun
|
||||
git = function(plugin, diff)
|
||||
local cmd = { "git", "diff" }
|
||||
if diff.commit then
|
||||
cmd[#cmd + 1] = diff.commit
|
||||
else
|
||||
cmd[#cmd + 1] = diff.from
|
||||
cmd[#cmd + 1] = diff.to
|
||||
end
|
||||
Util.open_cmd(cmd, { cwd = plugin.dir, filetype = "git" })
|
||||
end,
|
||||
|
||||
---@type LazyDiffFun
|
||||
terminal_git = function(plugin, diff)
|
||||
local cmd = { "git", "diff" }
|
||||
if diff.commit then
|
||||
cmd[#cmd + 1] = diff.commit
|
||||
else
|
||||
cmd[#cmd + 1] = diff.from
|
||||
cmd[#cmd + 1] = diff.to
|
||||
end
|
||||
Util.open_cmd(cmd, { cwd = plugin.dir, terminal = true, env = { PAGER = "cat" } })
|
||||
end,
|
||||
}
|
||||
|
||||
return M
|
Loading…
Add table
Add a link
Reference in a new issue