summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ravi-init-vc.el35
1 files changed, 34 insertions, 1 deletions
diff --git a/lisp/ravi-init-vc.el b/lisp/ravi-init-vc.el
index 411b7f6..792d75f 100644
--- a/lisp/ravi-init-vc.el
+++ b/lisp/ravi-init-vc.el
@@ -98,7 +98,40 @@
:bind ("C-x v f" . vc-git-grep)
:ensure nil)
(use-package git-link
- :commands (git-link))
+ :bind ("C-x v N" . git-link)
+ :init ; init, not config, so that we have these in local.el
+ (require 'subr-x)
+ (require 's)
+ (defun ravi/git-link-bitbucket-server-repo-name-format (hostname dirname)
+ (when-let* ((reponame-parts (s-split "/" dirname))
+ (proj-name (nth-value 0 reponame-parts))
+ (repo-name (nth-value 1 reponame-parts)))
+ (format "https://%s/projects/%s/repos/%s" hostname proj-name repo-name)))
+ (defun ravi/git-link-bitbucket-server (hostname dirname filename branch commit start end)
+ (let ((at-point (if (and git-link-use-commit commit)
+ commit
+ (or branch commit)))
+ (repo-name (ravi/git-link-bitbucket-server-repo-name-format hostname dirname)))
+ (format "%s/browse/%s"
+ repo-name
+ (concat filename
+ (if at-point (format "?at=%s" at-point) "")
+ (if start
+ (if end
+ (format "#%s-%s" start end)
+ (format "#%s" start))
+ "")))))
+
+ (defun ravi/git-link-commit-bitbucket-server (hostname dirname commit)
+ (format "%s/commits/%s"
+ (ravi/git-link-bitbucket-server-repo-name-format hostname dirname)
+ commit))
+
+ (defun ravi/git-link-bitbucket-server-enable (server-regexp)
+ (add-to-list 'git-link-remote-alist
+ (list server-regexp #'ravi/git-link-bitbucket-server))
+ (add-to-list 'git-link-commit-remote-alist
+ (list server-regexp #'ravi/git-link-commit-bitbucket-server))))
(use-package diff-hl
:config