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("fschauen.util.icons").ui.Git return { "ruifm/gitlinker.nvim", dependencies = "nvim-lua/plenary.nvim", keys = { -- stylua: ignore start { "gr", open_repo, desc = icon.." open [r]epository in browser" }, { "gl", clipboard("n"), desc = icon.." copy perma[l]ink to clipboard" }, { "gl", clipboard("v"), desc = icon.." copy perma[l]ink to clipboard", mode = "v" }, { "gL", browser("n"), desc = icon.." open perma[L]ink in browser" }, { "gL", browser("v"), desc = icon.." open perma[L]ink in browser", mode = "v" }, -- stylua: ignore 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, }