Heavily redesign keybinding design

+ SPC and SPC m as leader/localleader (spacemacs-ey)
+ Move all custom keybindings to private +bindings.el file
+ Redesign+rearrange keybindings
This commit is contained in:
Henrik Lissner 2017-05-27 14:49:06 +02:00
parent 717d0ec06f
commit fbe782df22
13 changed files with 425 additions and 357 deletions

View file

@ -74,22 +74,12 @@
table)))
(add-hook 'minibuffer-inactive-mode-hook #'minibuffer-inactive-mode-hook-setup)
(defsubst +evil--textobj (key inner-fn &optional outer-fn)
"Define a text object."
(declare (indent defun))
(define-key evil-inner-text-objects-map key inner-fn)
(define-key evil-outer-text-objects-map key (or outer-fn inner-fn)))
;; --- keybind fixes ----------------------
(map! ;; undo/redo for visual regions
:v "C-u" #'undo-tree-undo
:v "C-r" #'undo-tree-redo
(:after wgrep
;; a wrapper that invokes `wgrep-mark-deletion' across lines
;; you use `evil-delete' on.
:map wgrep-mode-map [remap evil-delete] #'+evil-delete))
(after! wgrep
;; a wrapper that invokes `wgrep-mark-deletion' across lines
;; you use `evil-delete' on.
(map! :map wgrep-mode-map [remap evil-delete] #'+evil-delete))
;; --- evil hacks -------------------------
@ -183,8 +173,7 @@ across windows."
(def-package! evil-args
:commands (evil-inner-arg evil-outer-arg
evil-forward-arg evil-backward-arg
evil-jump-out-args)
:init (+evil--textobj "a" #'evil-inner-arg #'evil-outer-arg))
evil-jump-out-args))
(def-package! evil-commentary
@ -301,19 +290,15 @@ across windows."
evil-indent-plus-i-indent-up
evil-indent-plus-a-indent-up
evil-indent-plus-i-indent-up-down
evil-indent-plus-a-indent-up-down)
:init
(+evil--textobj "i" #'evil-indent-plus-i-indent #'evil-indent-plus-a-indent)
(+evil--textobj "I" #'evil-indent-plus-i-indent-up #'evil-indent-plus-a-indent-up)
(+evil--textobj "J" #'evil-indent-plus-i-indent-up-down #'evil-indent-plus-a-indent-up-down))
evil-indent-plus-a-indent-up-down))
(def-package! evil-matchit
:commands (evilmi-jump-items evilmi-text-object global-evil-matchit-mode)
:config (global-evil-matchit-mode 1)
:init
(map! :m "%" #'evilmi-jump-items)
(+evil--textobj "%" #'evilmi-text-object)
(map! [remap evil-jump-item] #'evilmi-jump-items
:textobj "%" #'evilmi-text-object #'evilmi-text-object)
:config
(defun +evil|simple-matchit ()
"A hook to force evil-matchit to favor simple bracket jumping. Helpful when
@ -365,10 +350,7 @@ the new algorithm is confusing, like in python or ruby."
(def-package! evil-textobj-anyblock
:init
(+evil--textobj "B"
#'evil-textobj-anyblock-inner-block
#'evil-textobj-anyblock-a-block))
:commands (evil-textobj-anyblock-inner-block evil-textobj-anyblock-a-block))
(def-package! evil-snipe :demand t
@ -381,13 +363,8 @@ the new algorithm is confusing, like in python or ruby."
evil-snipe-aliases '((?\[ "[[{(]")
(?\] "[]})]")
(?\; "[;:]")))
:config
(evil-snipe-override-mode +1)
;; Switch to evil-easymotion/avy after a snipe
(map! :map evil-snipe-parent-transient-map
"C-;" (λ! (require 'evil-easymotion)
(call-interactively +evil--snipe-repeat-fn))))
(evil-snipe-override-mode +1))
(def-package! evil-surround
@ -463,6 +440,7 @@ the new algorithm is confusing, like in python or ruby."
neo-confirm-create-file #'off-p
neo-confirm-create-directory #'off-p
neo-show-hidden-files nil
neo-keymap-style 'concise
neo-hidden-regexp-list
'(;; vcs folders
"^\\.\\(git\\|hg\\|svn\\)$"
@ -475,32 +453,4 @@ the new algorithm is confusing, like in python or ruby."
"~$"
"^#.*#$"))
(evil-set-initial-state 'neotree-mode 'motion)
(push neo-buffer-name winner-boring-buffers)
;; `neotree-mode-map' are overridden when the neotree buffer is created. So we
;; bind them in a hook.
(add-hook 'neo-after-create-hook #'+evil|neotree-init-keymap)
(defun +evil|neotree-init-keymap (&rest _)
(map! :Lm "\\\\" 'evil-window-prev
:Lm "RET" 'neotree-enter
:Lm "<return>" 'neotree-enter
:Lm "ESC ESC" 'neotree-hide
:Lm [return] 'neotree-enter
:Lm "q" 'neotree-hide
:Lm "J" 'neotree-select-next-sibling-node
:Lm "K" 'neotree-select-previous-sibling-node
:Lm "H" 'neotree-select-up-node
:Lm "L" 'neotree-select-down-node
:Lm "h" '+evil/neotree-collapse-or-up
:Lm "j" 'neotree-next-line
:Lm "k" 'neotree-previous-line
:Lm "l" '+evil/neotree-expand-or-open
:Lm "v" 'neotree-enter-vertical-split
:Lm "s" 'neotree-enter-horizontal-split
:Lm "c" 'neotree-create-node
:Lm "d" 'neotree-delete-node
:Lm "\C-r" 'neotree-refresh
:Lm "r" 'neotree-rename-node
:Lm "R" 'neotree-change-root)))
(push neo-buffer-name winner-boring-buffers))