return { "9seconds/repolink.nvim", dependencies = { "nvim-lua/plenary.nvim" }, cmd = { "RepoLink" }, config = function() -- ssh://git@git.viessmann.com:7999/sysfunc/hemsapplication.git -- https://git.viessmann.com/projects/SYSFUNC/repos/hemsdocumentation/browse/README.md?useDefaultHandler=true#13 viessmann = function(args) local anchor = "#" .. tostring(args.start_line) return string.format( "https://%s/projects/%s/repos/%s/browse/%s#%s", args.host, args.host_data.user, args.host_data.project, args.path, anchor ) end -- ssh://git@git.viessmann.com:7999/sysfunc/hemsapplication.git -- https://git.viessmann.com/projects/SYSFUNC/repos/hemsdocumentation/browse/README.md?useDefaultHandler=true#13 url_parser = function(remote_url) vim.pretty_print(remote_url) local host, group, project = string.match(remote_url, "ssh://git@([^:]+):7999/([^/]+)/([^%.]+)") return host, { user = group, project = project } end require("repolink").setup({ -- By default, repolink tries to create links with short commits -- like, 42dd21c instead of 42dd21cf54779c9175c4ff7450d91a9ad0387491 -- If you like to have full commits, please enable this flag use_full_commit_hash = false, -- repolink takes remote URLs from git itself and can parse -- most common ones: from Github, Bitbucket, Sourcehut, Gitlab, Gitea, etc. -- but sometimes you can have a quite weird configuration, made with, -- for example, cgit, so the default one won't work for you. -- -- If you provide this custom parser, it should be a function that -- parses a remote URL and returns a hostname and some data blob -- that could be used later, on URL building. -- -- host parameter would be used to find out a function that is used -- to convert remote URL and repository data to an HTTP permalink -- -- data parameter can be anything but you want to use the default URL -- builders, it should be a table of -- { user = "YOUR USER", project = "PROJECT NAME" } -- -- Example of parser for git@github.com:9seconds/repolink.nvim.git URL: -- -- function(remote_url) -- local host, user, project = string.match( -- remote_url, -- "^git@([^:]+):([^/]+)/(.+)%.git$") -- if host then -- return host, { -- user = user, -- project = project -- } -- end -- end custom_url_parser = url_parser, -- By default RepoLink just notifies about generated URL but if -- this setting is not nil, then URL could also be copied into -- a given register. -- -- If you want to copy it into a register, run RepoLink! (with bang). bang_register = "+", -- repolink runs Git. Usually, it finishes quite fast but if you have a -- slow storage, like NFS, can take some time. This is a timeout -- after which repolink fails. timeout = 5000, url_builders = { --["git.viessmann.com"] = require("repolink").url_builder_for_bitbucket("git.viessmann.com"), ["git.viessmann.com"] = viessmann, } -- { -- start_line = 1 -- end_line = 2, -- host = "github.com", -- host_data = { -- user = "9seconds", -- project = "repolink.nvim" -- }, -- commit_hash = "42dd21c", -- path = "doc/repolink.txt", -- } }) end }