dotfiles/config/nvim/lua/config/plugins/gitlinker.lua

51 lines
1.6 KiB
Lua

return {
"ruifm/gitlinker.nvim",
dependencies = "nvim-lua/plenary.nvim",
keys = function()
local open_repo = function()
require("gitlinker").get_repo_url {
action_callback = require("gitlinker.actions").open_in_browser,
}
end
local browser = function(mode)
return function()
require("gitlinker").get_buf_range_url(mode, {
action_callback = require("gitlinker.actions").open_in_browser,
})
end
end
local clipboard = function(mode)
return function()
require("gitlinker").get_buf_range_url(mode, {
action_callback = require("gitlinker.actions").copy_to_clipboard,
})
end
end
local icon = require("util.icons").ui.Git
return {
-- stylua: ignore start
{ "<leader>gr", open_repo, desc = icon.." open [r]epository in browser" },
{ "<leader>gl", clipboard("n"), desc = icon.." copy perma[l]ink to clipboard" },
{ "<leader>gl", clipboard("v"), desc = icon.." copy perma[l]ink to clipboard", mode = "v" },
{ "<leader>gL", browser("n"), desc = icon.." open perma[L]ink in browser" },
{ "<leader>gL", browser("v"), desc = icon.." open perma[L]ink in browser", mode = "v" },
-- stylua: ignore end
}
end,
-- This really does need to be a function, because we need to defer requiring
-- the `gitlinker.hosts` module until after the plugin is loaded.
opts = function()
return {
mappings = nil, -- I'm defining my own mappings above.
callbacks = {
["git.schauenburg.me"] = require("gitlinker.hosts").get_gitea_type_url,
},
}
end,
}