diff --git a/modules/editor/evil/packages.el b/modules/editor/evil/packages.el index fdf1f8680..06ee659d2 100644 --- a/modules/editor/evil/packages.el +++ b/modules/editor/evil/packages.el @@ -33,4 +33,4 @@ (package! neotree) (autoload 'neotree-make-executor "neotree" nil nil 'macro)) - (package! evil-collection :pin "52b6479a8f4de8817adf1bcc43c04f00715d423b")) + (package! evil-collection :pin "05ed92a1292474d3a5edfb215c98750fcf1fe248")) diff --git a/modules/tools/magit/config.el b/modules/tools/magit/config.el index 65b7edcfa..9dd38d758 100644 --- a/modules/tools/magit/config.el +++ b/modules/tools/magit/config.el @@ -180,19 +180,21 @@ ensure it is built when we actually use Forge." :hook (magit-mode . turn-on-magit-gitflow)) -(use-package! evil-magit +(use-package! evil-collection-magit :when (featurep! :editor evil +everywhere) - :after magit - :init - (setq evil-magit-state 'normal - evil-magit-use-z-for-folds t) + :defer t + :init (defvar evil-collection-magit-use-z-for-folds t) :config - (undefine-key! magit-mode-map - ;; Replaced by z1, z2, z3, etc - "M-1" "M-2" "M-3" "M-4" - "1" "2" "3" "4" - "0") ; moved to g= - (evil-define-key* 'normal magit-status-mode-map [escape] nil) ; q is enough + ;; These numbered keys mask the numerical prefix keys. Since they've already + ;; been replaced with z1, z2, z3, etc (and 0 with g=), there's no need to keep + ;; them around: + (undefine-key! magit-mode-map "M-1" "M-2" "M-3" "M-4" "1" "2" "3" "4" "0") + + ;; q is enough; ESC is way too easy for a vimmer to accidentally press, + ;; especially when traversing modes in magit buffers. + (evil-define-key* 'normal magit-status-mode-map [escape] nil) + + ;; Some extra vim-isms I thought were missing from upstream (evil-define-key* '(normal visual) magit-mode-map "%" #'magit-gitflow-popup "zt" #'evil-scroll-line-to-top @@ -201,17 +203,20 @@ ensure it is built when we actually use Forge." "g=" #'magit-diff-default-context "gi" #'forge-jump-to-issues "gm" #'forge-jump-to-pullreqs) + + ;; A more intuitive behavior for TAB in magit buffers: (define-key! 'normal (magit-status-mode-map magit-stash-mode-map magit-revision-mode-map magit-diff-mode-map) [tab] #'magit-section-toggle) + (after! git-rebase (dolist (key '(("M-k" . "gk") ("M-j" . "gj"))) - (when-let (desc (assoc (car key) evil-magit-rebase-commands-w-descriptions)) + (when-let (desc (assoc (car key) evil-collection-magit-rebase-commands-w-descriptions)) (setcar desc (cdr key)))) - (evil-define-key* evil-magit-state git-rebase-mode-map + (evil-define-key* evil-collection-magit-state git-rebase-mode-map "gj" #'git-rebase-move-line-down "gk" #'git-rebase-move-line-up)) (transient-replace-suffix 'magit-dispatch 'magit-worktree diff --git a/modules/tools/magit/packages.el b/modules/tools/magit/packages.el index 37e434b6f..2be336032 100644 --- a/modules/tools/magit/packages.el +++ b/modules/tools/magit/packages.el @@ -6,6 +6,4 @@ (package! forge :pin "031e4f06b2bff66375e53ea96f8eb3dfbdf391d9")) (package! magit-gitflow :pin "cc41b561ec6eea947fe9a176349fb4f771ed865b") (package! magit-todos :pin "a0e5d1f3c7dfcb4f18c1b0d57f1746a4872df5c6") - (package! github-review :pin "e2123cce391bfd9d947ba2934b5d655ab1e90b6d") - (when (featurep! :editor evil +everywhere) - (package! evil-magit :pin "88dc26ce59dbf4acb4e2891c79c4bd329553ba56"))) + (package! github-review :pin "e2123cce391bfd9d947ba2934b5d655ab1e90b6d"))