core: spacemacs/evilify-map is now a macro
Add support for additional key bindings
This commit is contained in:
parent
fb00bb560b
commit
83c0d95195
|
@ -50,46 +50,69 @@
|
|||
:config
|
||||
(progn
|
||||
;; mode maps
|
||||
(spacemacs/evilify-map 'magit-mode-map)
|
||||
(spacemacs/evilify-map 'magit-status-mode-map 'magit-status-mode)
|
||||
(spacemacs/evilify-map 'magit-refs-mode-map 'magit-refs-mode)
|
||||
(spacemacs/evilify-map 'magit-blame-mode-map 'magit-blame-mode)
|
||||
(spacemacs/evilify-map 'magit-diff-mode-map 'magit-diff-mode)
|
||||
(spacemacs/evilify-map 'magit-log-read-revs-map 'magit-log-read-revs)
|
||||
(spacemacs/evilify-map 'magit-log-mode-map 'magit-log-mode)
|
||||
(spacemacs/evilify-map 'magit-log-select-mode-map 'magit-log-select-mode)
|
||||
(spacemacs/evilify-map 'magit-cherry-mode-map 'magit-cherry-mode)
|
||||
(spacemacs/evilify-map 'magit-reflog-mode-map 'magit-reflog-mode)
|
||||
(spacemacs/evilify-map 'magit-process-mode-map 'magit-process-mode)
|
||||
(spacemacs|evilify-map magit-mode-map)
|
||||
(spacemacs|evilify-map magit-status-mode-map
|
||||
:mode magit-status-mode)
|
||||
(spacemacs|evilify-map magit-refs-mode-map
|
||||
:mode magit-refs-mode)
|
||||
(spacemacs|evilify-map magit-blame-mode-map
|
||||
:mode magit-blame-mode)
|
||||
(spacemacs|evilify-map magit-diff-mode-map
|
||||
:mode magit-diff-mode)
|
||||
(spacemacs|evilify-map magit-log-read-revs-map
|
||||
:mode magit-log-read-revs)
|
||||
(spacemacs|evilify-map magit-log-mode-map
|
||||
:mode magit-log-mode)
|
||||
(spacemacs|evilify-map magit-log-select-mode-map
|
||||
:mode magit-log-select-mode)
|
||||
(spacemacs|evilify-map magit-cherry-mode-map
|
||||
:mode magit-cherry-mode)
|
||||
(spacemacs|evilify-map magit-reflog-mode-map
|
||||
:mode magit-reflog-mode)
|
||||
(spacemacs|evilify-map magit-process-mode-map
|
||||
:mode magit-process-mode)
|
||||
(spacemacs|evilify-map git-rebase-mode-map
|
||||
:mode git-rebase-mode
|
||||
:bindings
|
||||
"J" 'git-rebase-move-line-down
|
||||
"K" 'git-rebase-move-line-up
|
||||
"u" 'git-rebase-undo
|
||||
"y" 'git-rebase-insert)
|
||||
;; default state for additional modes
|
||||
(dolist (mode '(magit-popup-mode
|
||||
magit-popup-sequence-mode))
|
||||
(add-to-list 'evil-emacs-state-modes mode))
|
||||
(spacemacs/evilify-configure-default-state 'magit-revision-mode)
|
||||
;; section maps
|
||||
(spacemacs/evilify-map 'magit-tag-section-map)
|
||||
(spacemacs/evilify-map 'magit-untracked-section-map)
|
||||
(spacemacs/evilify-map 'magit-branch-section-map)
|
||||
(spacemacs/evilify-map 'magit-remote-section-map)
|
||||
(spacemacs/evilify-map 'magit-file-section-map)
|
||||
(spacemacs/evilify-map 'magit-hunk-section-map)
|
||||
(spacemacs/evilify-map 'magit-unstaged-section-map)
|
||||
(spacemacs/evilify-map 'magit-staged-section-map)
|
||||
(spacemacs/evilify-map 'magit-commit-section-map)
|
||||
(spacemacs/evilify-map 'magit-module-commit-section-map)
|
||||
(spacemacs/evilify-map 'magit-unpulled-section-map)
|
||||
(spacemacs/evilify-map 'magit-unpushed-section-map)
|
||||
(spacemacs/evilify-map 'magit-stashes-section-map)
|
||||
(spacemacs/evilify-map 'magit-stash-section-map)
|
||||
(spacemacs|evilify-map magit-tag-section-map)
|
||||
(spacemacs|evilify-map magit-untracked-section-map)
|
||||
(spacemacs|evilify-map magit-branch-section-map)
|
||||
(spacemacs|evilify-map magit-remote-section-map)
|
||||
(spacemacs|evilify-map magit-file-section-map)
|
||||
(spacemacs|evilify-map magit-hunk-section-map)
|
||||
(spacemacs|evilify-map magit-unstaged-section-map)
|
||||
(spacemacs|evilify-map magit-staged-section-map)
|
||||
(spacemacs|evilify-map magit-commit-section-map)
|
||||
(spacemacs|evilify-map magit-module-commit-section-map)
|
||||
(spacemacs|evilify-map magit-unpulled-section-map)
|
||||
(spacemacs|evilify-map magit-unpushed-section-map)
|
||||
(spacemacs|evilify-map magit-stashes-section-map)
|
||||
(spacemacs|evilify-map magit-stash-section-map)
|
||||
|
||||
;; full screen magit-status
|
||||
(when git-magit-status-fullscreen
|
||||
(setq magit-restore-window-configuration t)
|
||||
(setq magit-status-buffer-switch-function
|
||||
(lambda (buffer)
|
||||
(pop-to-buffer buffer)
|
||||
(delete-other-windows))))
|
||||
(setq magit-restore-window-configuration t)
|
||||
(setq magit-status-buffer-switch-function
|
||||
(lambda (buffer)
|
||||
(pop-to-buffer buffer)
|
||||
(delete-other-windows))))
|
||||
|
||||
;; rebase mode
|
||||
(evil-leader/set-key-for-mode 'git-rebase-mode
|
||||
"mcc" 'git-rebase-server-edit
|
||||
"mk" 'git-rebase-abort)
|
||||
|
||||
;; whitespace
|
||||
(defun magit-toggle-whitespace ()
|
||||
(interactive)
|
||||
(if (member "-w" (if (derived-mode-p 'magit-diff-mode)
|
||||
|
@ -97,23 +120,17 @@
|
|||
magit-diff-section-arguments))
|
||||
(magit-dont-ignore-whitespace)
|
||||
(magit-ignore-whitespace)))
|
||||
|
||||
(defun magit-ignore-whitespace ()
|
||||
(interactive)
|
||||
(add-to-list (if (derived-mode-p 'magit-diff-mode)
|
||||
'magit-refresh-args
|
||||
'magit-diff-section-arguments)
|
||||
"-w")
|
||||
'magit-refresh-args 'magit-diff-section-arguments) "-w")
|
||||
(magit-refresh))
|
||||
|
||||
(defun magit-dont-ignore-whitespace ()
|
||||
(interactive)
|
||||
(setq magit-diff-options
|
||||
(remove "-w"
|
||||
(if (derived-mode-p 'magit-diff-mode)
|
||||
magit-refresh-args
|
||||
magit-diff-section-arguments)))
|
||||
(magit-refresh))
|
||||
|
||||
(remove "-w"
|
||||
(if (derived-mode-p 'magit-diff-mode)
|
||||
magit-refresh-args
|
||||
magit-diff-section-arguments))) (magit-refresh))
|
||||
(define-key magit-status-mode-map (kbd "C-S-w")
|
||||
'magit-toggle-whitespace))))
|
||||
|
|
|
@ -9,19 +9,27 @@
|
|||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;;; License: GPLv3
|
||||
|
||||
(defun spacemacs/evilify-map (map-symbol &optional mode evilified-map)
|
||||
"Evilify map bound to MAP-SYMBOL."
|
||||
(let ((sorted-map (spacemacs//evilify-sort-keymap
|
||||
(or evilified-map evil-evilified-state-map)))
|
||||
processed)
|
||||
(mapc (lambda (map-entry)
|
||||
(unless (member (car map-entry) processed)
|
||||
(setq processed (spacemacs//evilify-event
|
||||
(eval map-symbol) map-symbol
|
||||
(car map-entry) (cdr map-entry)))))
|
||||
sorted-map))
|
||||
(when mode (spacemacs/evilify-configure-default-state mode)))
|
||||
(defmacro spacemacs|evilify-map (map &rest props)
|
||||
"Evilify MAP."
|
||||
(declare (indent 1))
|
||||
(let* ((mode (plist-get props :mode))
|
||||
(evilified-map (plist-get props :evilified-map))
|
||||
(bindings (spacemacs/mplist-get props :bindings))
|
||||
(defkey (when bindings `(evil-define-key 'evilified ,map ,@bindings))))
|
||||
`(progn
|
||||
(let ((sorted-map (spacemacs//evilify-sort-keymap
|
||||
(or ,evilified-map evil-evilified-state-map)))
|
||||
processed)
|
||||
(mapc (lambda (map-entry)
|
||||
(unless (member (car map-entry) processed)
|
||||
(setq processed (spacemacs//evilify-event
|
||||
,map ',map
|
||||
(car map-entry) (cdr map-entry)))))
|
||||
sorted-map))
|
||||
(unless ,(null defkey)
|
||||
(,@defkey))
|
||||
(unless ,(null mode)
|
||||
(spacemacs/evilify-configure-default-state ',mode)))))
|
||||
|
||||
(defun spacemacs/evilify-configure-default-state (mode)
|
||||
"Configure default state for the passed mode."
|
||||
|
|
|
@ -10,11 +10,12 @@
|
|||
;;
|
||||
;;; License: GPLv3
|
||||
(require 'mocker)
|
||||
(require 'core-funcs)
|
||||
(require 'core-evilify-keymap)
|
||||
(require 'core-spacemacs-buffer)
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; spacemacs/evilify-map
|
||||
;; spacemacs|evilify-map
|
||||
;; ---------------------------------------------------------------------------
|
||||
|
||||
;; commands
|
||||
|
@ -25,7 +26,7 @@
|
|||
evil-map))
|
||||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "s" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func-or-evil-func--evilified-input-map-s)
|
||||
(83 . func--evilified-input-map-S))
|
||||
(spacemacs//evilify-sort-keymap input-map)))))
|
||||
|
@ -37,7 +38,7 @@
|
|||
evil-map))
|
||||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "s" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func-or-evil-func--evilified-input-map-s)
|
||||
(83 . evil-func2--evilified-input-map-S)
|
||||
(19 . func--evilified-input-map-C-s))
|
||||
|
@ -50,7 +51,7 @@
|
|||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "s" 'func1)
|
||||
(define-key input-map "S" 'func2)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func--evilified-input-map-s)
|
||||
(83 . func2-or-func1--evilified-input-map-S)
|
||||
(19 . func2--evilified-input-map-C-s))
|
||||
|
@ -63,7 +64,7 @@
|
|||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "S" 'func2)
|
||||
(define-key input-map "s" 'func1)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func--evilified-input-map-s)
|
||||
(83 . func2-or-func1--evilified-input-map-S)
|
||||
(19 . func2--evilified-input-map-C-s))
|
||||
|
@ -77,7 +78,7 @@
|
|||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "s" 'func1)
|
||||
(define-key input-map "S" 'func2)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func1--evilified-input-map-s)
|
||||
(83 . func2-or-evil-func2--evilified-input-map-S)
|
||||
(19 . func1--evilified-input-map-C-s)
|
||||
|
@ -92,7 +93,7 @@
|
|||
(input-map (make-sparse-keymap)))
|
||||
(define-key input-map "S" 'func2)
|
||||
(define-key input-map "s" 'func1)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func1--evilified-input-map-s)
|
||||
(83 . func2-or-evil-func2--evilified-input-map-S)
|
||||
(19 . func1--evilified-input-map-C-s)
|
||||
|
@ -107,7 +108,7 @@
|
|||
(define-key input-map "s" 'func1)
|
||||
(define-key input-map "S" 'func2)
|
||||
(define-key input-map (kbd "C-s") 'func3)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func--evilified-input-map-s)
|
||||
(83 . func2-or-func1--evilified-input-map-S)
|
||||
(19 . func3-or-func2--evilified-input-map-C-s)
|
||||
|
@ -122,7 +123,7 @@
|
|||
(define-key input-map "s" 'func1)
|
||||
(define-key input-map (kbd "C-s") 'func3)
|
||||
(define-key input-map "S" 'func2)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func--evilified-input-map-s)
|
||||
(83 . func2-or-func1--evilified-input-map-S)
|
||||
(19 . func3-or-func2--evilified-input-map-C-s)
|
||||
|
@ -142,7 +143,7 @@
|
|||
((spacemacs-buffer/warning (msg &rest args)
|
||||
((:record-cls 'mocker-stub-record
|
||||
:output nil :occur 1))))
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func1--evilified-input-map-s)
|
||||
(83 . func2-or-evil-func2--evilified-input-map-S)
|
||||
(19 . func3-or-func1--evilified-input-map-C-s)
|
||||
|
@ -162,7 +163,7 @@
|
|||
((spacemacs-buffer/warning (msg &rest args)
|
||||
((:record-cls 'mocker-stub-record
|
||||
:output nil :occur 1))))
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func1-or-evil-func1--evilified-input-map-s)
|
||||
(83 . func2-or-evil-func2--evilified-input-map-S)
|
||||
(19 . func3-or-func1--evilified-input-map-C-s)
|
||||
|
@ -179,7 +180,7 @@
|
|||
(submap (make-sparse-keymap)))
|
||||
(define-key input-map "s" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func--evilified-input-map-s)
|
||||
(83 . keymap-s--evilified-input-map-S))
|
||||
(spacemacs//evilify-sort-keymap input-map)))))
|
||||
|
@ -193,7 +194,7 @@
|
|||
(submap (make-sparse-keymap)))
|
||||
(define-key input-map "s" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func1--evilified-input-map-s)
|
||||
(83 . evil-func2--evilified-input-map-S)
|
||||
(19 . keymap-s--evilified-input-map-C-s))
|
||||
|
@ -208,7 +209,7 @@
|
|||
(define-key input-map "s" submap)
|
||||
(define-key input-map "S" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func--evilified-input-map-s)
|
||||
(83 . keymap-S-or-keymap-s--evilified-input-map-S)
|
||||
(19 . keymap-S--evilified-input-map-C-s))
|
||||
|
@ -224,7 +225,7 @@
|
|||
(define-key input-map "s" submap)
|
||||
(define-key input-map "S" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func1--evilified-input-map-s)
|
||||
(83 . keymap-S-or-evil-func2--evilified-input-map-S)
|
||||
(19 . keymap-s--evilified-input-map-C-s)
|
||||
|
@ -241,7 +242,7 @@
|
|||
(define-key input-map "S" submap)
|
||||
(define-key input-map (kbd "C-s") submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func--evilified-input-map-s)
|
||||
(83 . keymap-S-or-keymap-s--evilified-input-map-S)
|
||||
(19 . keymap-C-s-or-keymap-S--evilified-input-map-C-s)
|
||||
|
@ -263,7 +264,7 @@
|
|||
((spacemacs-buffer/warning (msg &rest args)
|
||||
((:record-cls 'mocker-stub-record
|
||||
:output nil :occur 1))))
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . keymap-s-or-evil-func1--evilified-input-map-s)
|
||||
(83 . keymap-S-or-evil-func2--evilified-input-map-S)
|
||||
(19 . keymap-C-s-or-keymap-s--evilified-input-map-C-s)
|
||||
|
@ -281,7 +282,7 @@
|
|||
(define-key input-map "s" 'func)
|
||||
(define-key input-map "S" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(spacemacs/evilify-map 'input-map)
|
||||
(spacemacs|evilify-map input-map)
|
||||
(should (equal '((115 . func-or-evil-func--evilified-input-map-s)
|
||||
(83 . keymap-S-or-func--evilified-input-map-S)
|
||||
(19 . keymap-S--evilified-input-map-C-s))
|
||||
|
@ -301,7 +302,7 @@
|
|||
(define-key input-map "S" submap)
|
||||
(define-key submap "t" 'func)
|
||||
(dotimes (_ 10)
|
||||
(spacemacs/evilify-map 'input-map))
|
||||
(spacemacs|evilify-map input-map))
|
||||
(should (equal '((115 . func2-or-evil-func--evilified-input-map-s)
|
||||
(101 . func1)
|
||||
(83 . keymap-S-or-func2--evilified-input-map-S)
|
||||
|
|
Loading…
Reference in a new issue