From 9d118078ae5699e2a3b07821de87bf467f45fadc Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 30 Sep 2023 00:50:25 -0400 Subject: [PATCH] Add support for generating source hut links. --- .../roles/emacs/files/elisp/base-functions.el | 37 ++++++++++++++++++- .../emacs/files/elisp/base-global-keys.el | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ansible/roles/emacs/files/elisp/base-functions.el b/ansible/roles/emacs/files/elisp/base-functions.el index cb3a2f9..7a46c93 100644 --- a/ansible/roles/emacs/files/elisp/base-functions.el +++ b/ansible/roles/emacs/files/elisp/base-functions.el @@ -53,7 +53,15 @@ (let ((load-it (lambda (f) (load-file (concat (file-name-as-directory dir) f))) )) - (mapc load-it (directory-files dir nil "\\.el$")))) + (mapc load-it (directory-files dir nil "\\.el$")))) + +(defun generate-vc-link () + (interactive) + (or + (generate-github-link) + (generate-source-hut-link) + ) + ) (defun generate-github-link () "Generate a permalink to the current line." @@ -73,6 +81,33 @@ ) (message "%s" full-url) (kill-new full-url) + t + ) + ) + ) + ) + ) + +(defun generate-source-hut-link () + "Generate a permalink to the current line." + (interactive) + (let ( + (current-rev (vc-working-revision buffer-file-name)) + (line-number (line-number-at-pos)) + (repository-url (vc-git-repository-url buffer-file-name)) + (relative-path (file-relative-name buffer-file-name (vc-root-dir))) + ) + (message "Using repo url %s" repository-url) + (save-match-data + (and (string-match "https://git.sr.ht/\\([^/]+\\)/\\([^/]+\\)" repository-url) + (let* ( + (sh-org (match-string 1 repository-url)) + (sh-repo (match-string 2 repository-url)) + (full-url (format "https://git.sr.ht/%s/%s/tree/%s/%s#L%s" sh-org sh-repo current-rev relative-path line-number)) + ) + (message "%s" full-url) + (kill-new full-url) + t ) ) ) diff --git a/ansible/roles/emacs/files/elisp/base-global-keys.el b/ansible/roles/emacs/files/elisp/base-global-keys.el index 9f479d1..ae3d273 100644 --- a/ansible/roles/emacs/files/elisp/base-global-keys.el +++ b/ansible/roles/emacs/files/elisp/base-global-keys.el @@ -7,6 +7,6 @@ ;; dabbrev-expand. Seems to be some sort of dumb-expand. Accidentally hitting it when trying to use M-? (global-unset-key (kbd "M-/")) -(global-set-key (kbd "C-x g l") 'generate-github-link) +(global-set-key (kbd "C-x g l") 'generate-vc-link) (provide 'base-global-keys)