Archived
84 lines
2.1 KiB
EmacsLisp
Executable File
84 lines
2.1 KiB
EmacsLisp
Executable File
;;; init-git.el --- Magit configuration -*- lexical-binding: t; -*-
|
|
|
|
;;; Commentary:
|
|
;; Use Magit with its native keybindings while preserving Evil's window
|
|
;; management.
|
|
;;
|
|
;; Magit buffers are displayed in a dedicated side window on the right.
|
|
;;
|
|
;; Custom keybindings:
|
|
;; C-c C-g - Open Magit
|
|
;; C-w - Evil window map
|
|
;; j - Next section
|
|
;; k - Previous section
|
|
;; q - Kill Magit buffer and close the side window
|
|
|
|
;;; Code:
|
|
|
|
(use-package magit
|
|
:after evil
|
|
|
|
:bind
|
|
(("C-c C-g" . magit-status))
|
|
|
|
:config
|
|
|
|
;; Magit appearance and behaviour.
|
|
|
|
;; Highlight the exact characters that changed.
|
|
(setq magit-diff-refine-hunk 'all)
|
|
|
|
;; Show more surrounding context in diffs.
|
|
(setq magit-diff-context-lines 5)
|
|
|
|
;; Show all transient options.
|
|
(setq transient-default-level 5)
|
|
|
|
;; Don't ask about saving modified buffers.
|
|
(setq magit-save-repository-buffers 'dontask)
|
|
|
|
;; Display Magit in a dedicated side window on the right.
|
|
|
|
(add-to-list
|
|
'display-buffer-alist
|
|
'("\\*magit"
|
|
(display-buffer-in-side-window)
|
|
(side . right)
|
|
(slot . 0)
|
|
(window-width . 0.45)
|
|
(dedicated . t)))
|
|
|
|
;; Custom commands.
|
|
|
|
(defun my/magit-quit ()
|
|
"Kill the current Magit buffer and close its window."
|
|
(interactive)
|
|
(quit-window t))
|
|
|
|
;; Keybindings.
|
|
|
|
(dolist (map '(magit-mode-map
|
|
magit-status-mode-map
|
|
magit-log-mode-map
|
|
magit-diff-mode-map
|
|
magit-revision-mode-map))
|
|
(with-eval-after-load 'magit
|
|
(when (boundp map)
|
|
(let ((keymap (symbol-value map)))
|
|
;; Keep Evil window commands.
|
|
(define-key keymap (kbd "C-w") evil-window-map)
|
|
|
|
;; Vim-style movement.
|
|
(define-key keymap (kbd "j") #'magit-section-forward)
|
|
(define-key keymap (kbd "k") #'magit-section-backward)
|
|
|
|
;; Quit Magit.
|
|
(define-key keymap (kbd "q") #'my/magit-quit)))))
|
|
|
|
(with-eval-after-load 'which-key
|
|
(which-key-add-key-based-replacements
|
|
"C-c C-g" "Magit")))
|
|
|
|
(provide 'init-git)
|
|
;;; init-git.el ends here
|