Copyright © 2018 Oleg Pykhalov This patch adds a support for Git repositories hosted on git.savannah.gnu.org. Upstream bug URL: https://github.com/rmuslimov/browse-at-remote/pull/46 From cd2ccdaef8b1d97337d790175f71cc3dbcfcff64 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Fri, 26 Jan 2018 00:05:30 +0300 Subject: [PATCH] Add support for repositories that are hosted on gnu cgit --- browse-at-remote.el | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/browse-at-remote.el b/browse-at-remote.el index 66967b3..e210d18 100644 --- a/browse-at-remote.el +++ b/browse-at-remote.el @@ -44,7 +44,8 @@ (defcustom browse-at-remote-remote-type-domains '(("bitbucket.org" ."bitbucket") ("github.com" . "github") - ("gitlab.com" . "gitlab")) + ("gitlab.com" . "gitlab") + ("git.savannah.gnu.org" . "gnu")) "Alist of domain patterns to remote types." :type '(alist :key-type (string :tag "Domain") @@ -199,6 +200,24 @@ If HEAD is detached, return nil." (if (fboundp formatter) formatter nil))) +(defun browse-at-remote-gnu-format-url (repo-url) + "Get a gnu formatted URL." + (replace-regexp-in-string + (concat "https://" (car (rassoc "gnu" browse-at-remote-remote-type-domains)) + "/\\(git\\).*\\'") + "cgit" repo-url nil nil 1)) + +(defun browse-at-remote--format-region-url-as-gnu (repo-url location filename &optional linestart lineend) + "URL formatter for gnu." + (let ((repo-url (browse-at-remote-gnu-format-url repo-url))) + (cond + (linestart (format "%s.git/tree/%s?h=%s#n%d" repo-url filename location linestart)) + (t (format "%s.git/tree/%s?h=%s" repo-url filename location))))) + +(defun browse-at-remote--format-commit-url-as-gnu (repo-url commithash) + "Commit URL formatted for gnu" + (format "%s.git/commit/?id=%s" (browse-at-remote-gnu-format-url repo-url) commithash)) + (defun browse-at-remote--format-region-url-as-github (repo-url location filename &optional linestart lineend) "URL formatted for github." (cond -- 2.15.1