From 79736d832de2961e79666dd8dd287cbf2cf0faa6 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 18 Feb 2023 16:45:14 -0500 Subject: [PATCH] feat(vc): add codeberg support to browse-at-remote This should be PRed upstream later. --- modules/emacs/vc/autoload/vc.el | 22 ++++++++++++++++++++++ modules/emacs/vc/config.el | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/modules/emacs/vc/autoload/vc.el b/modules/emacs/vc/autoload/vc.el index 44bef12f2..65971f6cb 100644 --- a/modules/emacs/vc/autoload/vc.el +++ b/modules/emacs/vc/autoload/vc.el @@ -1,11 +1,33 @@ ;;; emacs/vc/autoload/vc.el -*- lexical-binding: t; -*- +;; +;;; Helpers + (defun +vc--remote-homepage () (require 'browse-at-remote) (or (let ((url (browse-at-remote--remote-ref))) (cdr (browse-at-remote--get-url-from-remote (car url)))) (user-error "Can't find homepage for current project"))) +;; TODO: PR these upstream? +;;;###autoload +(defun browse-at-remote--format-region-url-as-codeberg (repo-url location filename &optional linestart lineend) + "URL formatted for codeberg." + (cond + ((and linestart lineend) + (format "%s/src/%s/%s#L%d-L%d" repo-url location filename linestart lineend)) + (linestart (format "%s/src/%s/%s#L%d" repo-url location filename linestart)) + (t (format "%s/src/%s/%s" repo-url location filename)))) + +;;;###autoload +(defun browse-at-remote--format-commit-url-as-codeberg (repo-url commithash) + "Commit URL formatted for codeberg" + (format "%s/src/commit/%s" repo-url commithash)) + + +;; +;;; Commands + (defvar browse-at-remote-prefer-symbolic) ;;;###autoload (defun +vc/browse-at-remote (&optional arg) diff --git a/modules/emacs/vc/config.el b/modules/emacs/vc/config.el index b35a204a3..7c5f0b61d 100644 --- a/modules/emacs/vc/config.el +++ b/modules/emacs/vc/config.el @@ -133,6 +133,10 @@ otherwise in default state." ;; using commit hashes rather than branch names. (setq browse-at-remote-prefer-symbolic nil) + ;; Add codeberg.org support + ;; TODO: PR this upstream? + (add-to-list 'browse-at-remote-remote-type-regexps '("^codeberg\\.org$" . "codeberg")) + ;; HACK `browse-at-remote' produces urls with `nil' in them, when the repo is ;; detached. This creates broken links. I think it is more sensible to ;; fall back to master in those cases.