Skip to content

Commit 6d21d87

Browse files
Use git-link-web-host-alist in git-link-commit and git-link-homepage
Links to commits or project homepages now also use the optional translation mechanism from Git hosts to web hosts.
1 parent 8d0f98c commit 6d21d87

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

git-link.el

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,14 @@ return (FILENAME . REVISION) otherwise nil."
588588
link
589589
)
590590

591+
(defun git-link--web-host (git-host)
592+
"Determine the web host to use for GIT-HOST.
593+
594+
The translation is based on `git-link-web-host-alist'. If there
595+
is no entry for GIT-HOST in the list, it is returned unmodified."
596+
(or (assoc-default git-host git-link-web-host-alist #'string-match-p)
597+
git-host))
598+
591599
(defun git-link-codeberg (hostname dirname filename branch commit start end)
592600
(format "https://%s/%s/src/%s/%s"
593601
hostname
@@ -872,8 +880,7 @@ With a double prefix argument invert the value of
872880
branch (git-link--branch)
873881
commit (git-link--commit)
874882
handler (git-link--handler git-link-remote-alist git-host)
875-
web-host (or (assoc-default git-host git-link-web-host-alist #'string-match-p)
876-
git-host))
883+
web-host (git-link--web-host git-host))
877884

878885
(cond ((null filename)
879886
(message "Can't figure out what to link to"))
@@ -917,24 +924,27 @@ With a prefix argument prompt for the remote's name.
917924
Defaults to \"origin\"."
918925

919926
(interactive (list (git-link--select-remote)))
920-
(let* (commit handler remote-info (remote-url (git-link--remote-url remote)))
927+
(let* ((remote-url (git-link--remote-url remote))
928+
commit handler remote-info git-host web-host)
921929
(if (null remote-url)
922930
(message "Remote `%s' not found" remote)
923931

924932
(setq remote-info (git-link--parse-remote remote-url)
933+
git-host (car remote-info)
925934
commit (word-at-point)
926-
handler (git-link--handler git-link-commit-remote-alist (car remote-info)))
935+
handler (git-link--handler git-link-commit-remote-alist git-host)
936+
web-host (git-link--web-host git-host))
927937

928-
(cond ((null (car remote-info))
938+
(cond ((null git-host)
929939
(message "Remote `%s' contains an unsupported URL" remote))
930940
((not (string-match-p "[a-fA-F0-9]\\{7,40\\}" (or commit "")))
931941
(message "Point is not on a commit hash"))
932942
((not (functionp handler))
933-
(message "No handler for %s" (car remote-info)))
943+
(message "No handler for %s" git-host))
934944
;; null ret val
935945
((git-link--new
936946
(funcall handler
937-
(car remote-info)
947+
web-host
938948
(cadr remote-info)
939949
(substring-no-properties commit))))))))
940950

@@ -951,15 +961,17 @@ Defaults to \"origin\"."
951961

952962
(interactive (list (git-link--select-remote)))
953963

954-
(let* (handler remote-info
955-
(remote-url (git-link--remote-url remote))
956-
(git-link-open-in-browser (or git-link-open-in-browser (equal (list 16) current-prefix-arg))))
964+
(let* ((remote-url (git-link--remote-url remote))
965+
(git-link-open-in-browser (or git-link-open-in-browser (equal (list 16) current-prefix-arg)))
966+
handler remote-info git-host web-host)
957967

958968
(if (null remote-url)
959969
(message "Remote `%s' not found" remote)
960970

961971
(setq remote-info (git-link--parse-remote remote-url)
962-
handler (git-link--handler git-link-homepage-remote-alist (car remote-info)))
972+
git-host (car remote-info)
973+
handler (git-link--handler git-link-homepage-remote-alist git-host)
974+
web-host (git-link--web-host git-host))
963975

964976
(cond ((null (car remote-info))
965977
(message "Remote `%s' contains an unsupported URL" remote))
@@ -968,7 +980,7 @@ Defaults to \"origin\"."
968980
;; null ret val
969981
((git-link--new
970982
(funcall handler
971-
(car remote-info)
983+
web-host
972984
(cadr remote-info))))))))
973985

974986
(provide 'git-link)

0 commit comments

Comments
 (0)