summaryrefslogtreecommitdiff
path: root/emacs/custom/fcuny-git.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/custom/fcuny-git.el')
-rw-r--r--emacs/custom/fcuny-git.el76
1 files changed, 76 insertions, 0 deletions
diff --git a/emacs/custom/fcuny-git.el b/emacs/custom/fcuny-git.el
new file mode 100644
index 0000000..e3b8c45
--- /dev/null
+++ b/emacs/custom/fcuny-git.el
@@ -0,0 +1,76 @@
+(require 'fcuny-defuns)
+
+(use-package gitconfig-mode
+ :ensure t)
+
+(use-package gitattributes-mode
+ :ensure t)
+
+(use-package gitignore-mode
+ :ensure t)
+
+(use-package magit
+ :ensure t
+ :after (flyspell)
+ :bind (("C-x g" . magit-status))
+ :custom
+ (vc-follow-symlinks t))
+
+(use-package git-commit
+ :ensure t
+ :after magit
+ :hook (git-commit-mode . fcuny/git-commit-auto-fill)
+ :custom
+ (git-commit-summary-max-length 50)
+ :preface
+ (defun fcuny/git-commit-auto-fill ()
+ "Ensures that the commit body does not exceed 72 characters."
+ (setq-local fill-column 72)
+ (setq-local comment-auto-fill-only-comments nil)))
+
+;; 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
+ :config
+ (defun git-link-sourcegraph (hostname dirname filename _branch commit start end)
+ (let ((line-or-range (if end (format "%s-%s" start end) start)))
+ (format "https://%s/%s@%s/-/blob/%s#L%s"
+ hostname
+ dirname
+ commit
+ filename
+ line-or-range)))
+
+ (defun git-link-commit-sourcegraph (hostname dirname commit)
+ (format "https://%s/%s/-/commit/%s"
+ hostname
+ dirname
+ commit))
+
+ (add-to-list 'git-link-remote-alist '("sourcegraph" git-link-sourcegraph))
+ (add-to-list 'git-link-commit-remote-alist '("sourcegraph" git-link-commit-sourcegraph))
+
+ (setq git-link-open-in-browser 't))
+
+;; https://magit.vc/manual/magit/Per_002dRepository-Configuration.html
+;; we don't want to refresh buffers in source. This should help with
+;; performances.
+(dir-locals-set-class-variables 'huge-git-repository
+ '((nil . ((magit-refresh-buffers . nil)))))
+
+(dir-locals-set-directory-class
+ "/Users/fcuny/workspace/source" 'huge-git-repository)
+
+;; https://magit.vc/manual/magit/Performance.html
+;; disable Git from the VC mode, since we use magit. This should help
+;; with performances.
+(setq vc-handled-backends (delq 'Git vc-handled-backends))
+
+(provide 'fcuny-git)