about summary refs log tree commit diff stats
path: root/.emacs.d/lisp/init-git.el
diff options
context:
space:
mode:
authorDavid Morgan <djm_uk@protonmail.com>2021-08-17 12:49:19 +0100
committerDavid Morgan <djm_uk@protonmail.com>2021-08-17 12:49:19 +0100
commitd0db5660caa836755ea8c99471d816484ea9e837 (patch)
treec7d0456a58e450abaf34b489b0b31c58ddbc8557 /.emacs.d/lisp/init-git.el
parentc92b18514728245850d31531ce224a74eddfc5a6 (diff)
downloaddotfiles-d0db5660caa836755ea8c99471d816484ea9e837.tar.gz
Add new .emacs.d
Diffstat (limited to '.emacs.d/lisp/init-git.el')
-rw-r--r--.emacs.d/lisp/init-git.el70
1 files changed, 70 insertions, 0 deletions
diff --git a/.emacs.d/lisp/init-git.el b/.emacs.d/lisp/init-git.el
new file mode 100644
index 0000000..f4fabd6
--- /dev/null
+++ b/.emacs.d/lisp/init-git.el
@@ -0,0 +1,70 @@
+;;; init-git.el --- VCS/Git Configuration File -*- lexical-binding: t -*-
+;;; Commentary:
+;;; Code:
+
+(use-package ediff
+  :custom
+  (ediff-setup-windows-plain 'ediff-setup-windows-plain))
+
+(use-package diff-hl
+  :config
+  (global-diff-hl-mode +1)
+  :hook
+  (dired-mode . diff-hl-dired-mode)
+  (magit-post-refresh . diff-hl-magit-post-refresh))
+
+(use-package gitconfig)
+(use-package gitignore-mode)
+(use-package gist)
+(use-package git-timemachine)
+
+(use-package magit
+  :after key-chord
+  :bind
+  ("C-c g" . magit-file-dispatch)
+  ("C-c C-g" . magit-dispatch)
+  :config
+  (defun my/magit-set-upstream ()
+    (interactive)
+    (magit-shell-command-topdir "git upstream"))
+  ;; update stale git info on the modeline (based on code removed from doom modeline)
+  (defun my/magit-refresh-state ()
+    (interactive)
+    (dolist (buf (buffer-list))
+      (when (and (not (buffer-modified-p buf))
+                 (buffer-file-name buf)
+                 (file-exists-p (buffer-file-name buf))
+                 (file-in-directory-p (buffer-file-name buf) (magit-toplevel)))
+        (with-current-buffer buf
+          (vc-refresh-state)))))
+  (key-chord-define-global "UU" 'my/magit-set-upstream)
+  (key-chord-define-global "RR" 'my/magit-refresh-state)
+  ;; :custom-face
+  ;; (diff-added ((t (:foreground "green4"))))
+  ;; (magit-diff-added ((t (:foreground "green4"))))
+  ;; (magit-diff-added-highlight ((t (:foreground "green4"))))
+  ;; (diff-removed ((t (:foreground "red3"))))
+  ;; (magit-diff-removed ((t (:foreground "red3"))))
+  ;; (magit-diff-removed-highlight ((t (:foreground "red3"))))
+  :custom
+  (magit-diff-refine-hunk 'all)
+  ;; (magit-diff-paint-whitespace t)
+  ;; (magit-diff-paint-whitespace-lines 'all)
+  (magit-diff-highlight-trailing t)
+  (magit-diff-highlight-indentation t))
+
+(use-package forge
+  :after magit)
+
+(use-package git-gutter
+  :diminish
+  :bind
+  ("C-c j g" . git-gutter-mode)
+  ("C-c j S-g" . git-gutter)
+  ("C-c j n" . git-gutter:next-hunk)
+  ("C-c j p" . git-gutter:previous-hunk)
+  ("C-c j r" . git-gutter:revert-hunk)
+  ("C-c j d" . git-gutter:popup-hunk))
+
+(provide 'init-git)
+;;; init-git.el ends here