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:
parent
717d0ec06f
commit
fbe782df22
13 changed files with 425 additions and 357 deletions
|
@ -1,27 +1,8 @@
|
|||
;;; feature/debug/config.el
|
||||
|
||||
(after! debug
|
||||
;; For elisp debugging
|
||||
(map! :map debugger-mode-map
|
||||
:n "RET" #'debug-help-follow
|
||||
:n "n" #'debugger-step-through
|
||||
:n "c" #'debugger-continue))
|
||||
|
||||
|
||||
(def-package! realgud
|
||||
:commands (realgud:gdb realgud:trepanjs realgud:bashdb realgud:zshdb)
|
||||
:config
|
||||
(map! :map realgud:shortkey-mode-map
|
||||
:n "j" #'evil-next-line
|
||||
:n "k" #'evil-previous-line
|
||||
:n "h" #'evil-backward-char
|
||||
:n "l" #'evil-forward-char
|
||||
:m "n" #'realgud:cmd-next
|
||||
:m "b" #'realgud:cmd-break
|
||||
:m "B" #'realgud:cmd-clear
|
||||
:n "c" #'realgud:cmd-continue)
|
||||
|
||||
;; Popup rules
|
||||
(set! :popup
|
||||
'("^\\*\\(g\\|zsh\\|bash\\)db.*?\\*$" :size 20 :regexp t)
|
||||
'("^\\*trepanjs.*?\\*$" :size 20 :regexp t))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -40,20 +40,6 @@
|
|||
(advice-add #'yas-expand :before #'sp-remove-active-pair-overlay)
|
||||
|
||||
(after! evil
|
||||
(map! (:map yas-keymap
|
||||
"C-e" #'+snippets/goto-end-of-field
|
||||
"C-a" #'+snippets/goto-start-of-field
|
||||
"<M-right>" #'+snippets/goto-end-of-field
|
||||
"<M-left>" #'+snippets/goto-start-of-field
|
||||
"<M-backspace>" #'+snippets/delete-to-start-of-field
|
||||
[escape] #'evil-normal-state
|
||||
[backspace] #'+snippets/delete-backward-char
|
||||
[delete] #'+snippets/delete-forward-char-or-field)
|
||||
|
||||
(:map yas-minor-mode-map
|
||||
:i "<tab>" yas-maybe-expand
|
||||
:v "<tab>" #'+snippets/expand-on-region))
|
||||
|
||||
;; Exit snippets on ESC in normal mode
|
||||
(add-hook '+evil-esc-hook #'yas-exit-all-snippets)
|
||||
;; Once you're in normal mode, you're out
|
||||
|
@ -78,9 +64,6 @@
|
|||
|
||||
(def-package! auto-yasnippet
|
||||
:commands (aya-create aya-expand aya-open-line aya-persist-snippet)
|
||||
:init
|
||||
(map! :i [C-tab] #'aya-expand
|
||||
:nv [C-tab] #'aya-create)
|
||||
:config
|
||||
(setq aya-persist-snippets-dir (concat doom-local-dir "auto-snippets/")))
|
||||
|
||||
|
|
|
@ -5,12 +5,7 @@
|
|||
:config
|
||||
(setq ispell-program-name (executable-find "aspell")
|
||||
ispell-list-command "--list"
|
||||
ispell-extr-args '("--dont-tex-check-comments"))
|
||||
|
||||
(map! :map flyspell-mode-map
|
||||
:localleader
|
||||
:n "s" #'flyspell-correct-word-generic
|
||||
:n "S" #'flyspell-correct-previous-word-generic))
|
||||
ispell-extr-args '("--dont-tex-check-comments")))
|
||||
|
||||
|
||||
(def-package! flyspell-correct
|
||||
|
|
|
@ -12,13 +12,6 @@
|
|||
|
||||
(set! :popup 'flycheck-error-list-mode :select t :autokill t)
|
||||
|
||||
(map! :map flycheck-error-list-mode-map
|
||||
:n "C-n" #'flycheck-error-list-next-error
|
||||
:n "C-p" #'flycheck-error-list-previous-error
|
||||
:n "j" #'flycheck-error-list-next-error
|
||||
:n "k" #'flycheck-error-list-previous-error
|
||||
:n "RET" #'flycheck-error-list-goto-error)
|
||||
|
||||
(after! evil
|
||||
;; Flycheck buffer on ESC in normal mode.
|
||||
(defun +syntax-checkers|flycheck-buffer ()
|
||||
|
|
|
@ -65,15 +65,7 @@
|
|||
(advice-add #'git-timemachine-show-revision :after #'+vcs*update-header-line)
|
||||
|
||||
;; Force evil to rehash keybindings for the current state
|
||||
(add-hook 'git-timemachine-mode-hook #'evil-force-normal-state)
|
||||
(map! :map git-timemachine-mode-map
|
||||
:nv "p" #'git-timemachine-show-previous-revision
|
||||
:nv "n" #'git-timemachine-show-next-revision
|
||||
:nv "g" #'git-timemachine-show-nth-revision
|
||||
:nv "q" #'git-timemachine-quit
|
||||
:nv "w" #'git-timemachine-kill-abbreviated-revision
|
||||
:nv "W" #'git-timemachine-kill-revision
|
||||
:nv "b" #'git-timemachine-blame))
|
||||
(add-hook 'git-timemachine-mode-hook #'evil-force-normal-state))
|
||||
|
||||
|
||||
(def-package! magit
|
||||
|
@ -87,9 +79,5 @@
|
|||
(def-package! evil-magit
|
||||
:when (featurep! :feature evil)
|
||||
:after magit
|
||||
:init (setq evil-magit-want-horizontal-movement t)
|
||||
:config
|
||||
(map! :map (magit-status-mode-map magit-revision-mode-map)
|
||||
:n "C-j" nil
|
||||
:n "C-k" nil))
|
||||
:init (setq evil-magit-want-horizontal-movement t))
|
||||
|
||||
|
|
|
@ -13,15 +13,4 @@
|
|||
|
||||
(set! :evil-state
|
||||
'(vc-annotate-mode . normal)
|
||||
'(vc-git-log-view-mode . normal))
|
||||
|
||||
(map! :map vc-annotate-mode-map
|
||||
:n "q" #'kill-this-buffer
|
||||
:n "d" #'vc-annotate-show-diff-revision-at-line
|
||||
:n "D" #'vc-annotate-show-changeset-diff-revision-at-line
|
||||
:n "SPC" #'vc-annotate-show-log-revision-at-line
|
||||
:n "]]" #'vc-annotate-next-revision
|
||||
:n "[[" #'vc-annotate-prev-revision
|
||||
:n [tab] #'vc-annotate-toggle-annotation-visibility
|
||||
:n "RET" #'vc-annotate-find-revision-at-line))
|
||||
|
||||
'(vc-git-log-view-mode . normal)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue