diff options
author | Franck Cuny <franck@fcuny.net> | 2021-08-23 19:39:43 -0700 |
---|---|---|
committer | Franck Cuny <franck@fcuny.net> | 2021-08-23 19:39:43 -0700 |
commit | 76921742edfedbe0e01d468f298e901cf808bb0d (patch) | |
tree | 6f789358a57069b1f3ecc50d213db1dc2179c27e | |
parent | emacs: use the package `forge' (diff) | |
download | emacs.d-76921742edfedbe0e01d468f298e901cf808bb0d.tar.gz |
emacs: git links to sourcegraph for work repo
This article [1] shows how to use sourcegraph with the package `git-link'. However, it requires to modify the configuration of the repository to add a new remote named 'git-link'. This is inconvenient, and this can be automated. This change adds a function to automatically generate the remote URL when the remote origin of a repo is set to twitter.biz. We also add the configuration for our own gitea instance. [1] https://sideshowcoder.com/2020/07/02/opening-sourcegraph-from-emacs/
-rw-r--r-- | emacs/custom/fcuny-git.el | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/emacs/custom/fcuny-git.el b/emacs/custom/fcuny-git.el index 340da9c..b85a9ea 100644 --- a/emacs/custom/fcuny-git.el +++ b/emacs/custom/fcuny-git.el @@ -84,34 +84,42 @@ :config (add-to-list 'forge-alist '("git.fcuny.net:222" "git.fcuny.net/api/v1" "git.fcuny.net" forge-gitea-repository))) -;; from https://sideshowcoder.com/2020/07/02/opening-sourcegraph-from-emacs/ -;; in a repo, add the following in .git/config: -;; -;; [git-link] -;; remote = mysourcegraph.sourcegraph -;; [remote "mysourcegraph.sourcegraph"] -;; url = https://sourcegraph.twitter.biz/gitpuppet.twitter.biz/puppet-twitter -;; (use-package git-link :ensure t + :bind (("C-c g l" . git-link) + ("C-c g a" . git-link-commit)) :config - (defun git-link-sourcegraph (hostname dirname filename _branch commit start end) - (let ((line-or-range (if end (format "%s-%s" start end) start))) + (defvar fcuny/map-git-remote-to-sg + '(("git.twitter.biz" "sourcegraph.twitter.biz/twitter.biz") + ("gitpuppet.twitter.biz" "sourcegraph.twitter.biz/gitpuppet.twitter.biz"))) + + (defun fcuny/get-sg-remote-from-hostname (hostname) + (nth 1 (assoc hostname fcuny/map-git-remote-to-sg))) + + (defun fcuny/git-link-work-sourcegraph (hostname dirname filename _branch commit start end) + (let ((line-or-range (if end (format "%s-%s" start end) start)) + (sg-base-url (fcuny/get-sg-remote-from-hostname hostname))) (format "https://%s/%s@%s/-/blob/%s#L%s" - hostname + sg-base-url dirname commit filename line-or-range))) - (defun git-link-commit-sourcegraph (hostname dirname commit) - (format "https://%s/%s/-/commit/%s" - hostname - dirname - commit)) + (defun fcuny/git-link-commit-work-sourcegraph (hostname dirname commit) + (let (sg-base-url (fcuny/get-sg-remote-from-hostname hostname)) + (format "https://%s/%s/-/commit/%s" + sg-base-url + dirname + commit))) + + ;; for work related repositories, open them in our instance of sourcegraph + (add-to-list 'git-link-remote-alist '("twitter" fcuny/git-link-work-sourcegraph)) + (add-to-list 'git-link-commit-remote-alist '("twitter" fcuny/git-link-commit-work-sourcegraph)) - (add-to-list 'git-link-remote-alist '("sourcegraph" git-link-sourcegraph)) - (add-to-list 'git-link-commit-remote-alist '("sourcegraph" git-link-commit-sourcegraph)) + ;; for personal code I use gitea, which is similar to codeberg + (add-to-list 'git-link-remote-alist '("git\\.fcuny\\.net" git-link-codeberg)) + (add-to-list 'git-link-commit-remote-alist '("git\\.fcuny\\.net" git-link-commit-codeberg)) (setq git-link-open-in-browser 't)) |