Move evil & corrective keybinds to respective modules
Keybinds that correct behavior or provide or extend vim functionality were moved to their respective modules, or to the :editor evil module. Keybinds in the global space, that are particularly opinionated but potentially harmful or imposing as a default, or likely for users to change (like leader keys), are kept in config/default.
This commit is contained in:
parent
c360f0dceb
commit
3c6f48f9ec
11 changed files with 479 additions and 508 deletions
|
@ -1,15 +1,38 @@
|
||||||
;;; config/default/+bindings.el -*- lexical-binding: t; -*-
|
;;; config/default/+bindings.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
;; This file defines a Spacemacs-esque keybinding scheme
|
(when (featurep! :editor evil +everywhere)
|
||||||
|
;; Have C-u behave similarly to `doom/backward-to-bol-or-indent'.
|
||||||
|
;; NOTE SPC u replaces C-u as the universal argument.
|
||||||
|
(map! :gi "C-u" #'doom/backward-kill-to-bol-and-indent
|
||||||
|
:gi "C-w" #'backward-kill-word
|
||||||
|
;; Vimmish ex motion keys
|
||||||
|
:gi "C-b" #'backward-word
|
||||||
|
:gi "C-f" #'forward-word)
|
||||||
|
|
||||||
;; Don't let evil-collection interfere with certain keys
|
;; Minibuffer
|
||||||
(appendq! evil-collection-key-blacklist
|
(define-key! evil-ex-completion-map
|
||||||
'("gd" "gf" "K" "[" "]" "gz" "<escape>"))
|
"C-a" #'move-beginning-of-line
|
||||||
|
"C-b" #'backward-word
|
||||||
|
"C-s" (if (featurep! :completion ivy)
|
||||||
|
#'counsel-minibuffer-history
|
||||||
|
#'helm-minibuffer-history))
|
||||||
|
|
||||||
(defadvice! +default-evil-collection-disable-blacklist-a (orig-fn)
|
(define-key! :keymaps +default-minibuffer-maps
|
||||||
:around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC
|
[escape] #'abort-recursive-edit
|
||||||
(let (evil-collection-key-blacklist)
|
"C-v" #'yank
|
||||||
(apply orig-fn)))
|
"C-z" (λ! (ignore-errors (call-interactively #'undo)))
|
||||||
|
"C-a" #'move-beginning-of-line
|
||||||
|
"C-b" #'backward-word
|
||||||
|
"C-r" #'evil-paste-from-register
|
||||||
|
;; Scrolling lines
|
||||||
|
"C-j" #'next-line
|
||||||
|
"C-k" #'previous-line
|
||||||
|
"C-S-j" #'scroll-up-command
|
||||||
|
"C-S-k" #'scroll-down-command)
|
||||||
|
|
||||||
|
(define-key! read-expression-map
|
||||||
|
"C-j" #'next-line-or-history-element
|
||||||
|
"C-k" #'previous-line-or-history-element))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -20,176 +43,51 @@
|
||||||
(and (featurep! :editor snippets)
|
(and (featurep! :editor snippets)
|
||||||
(bound-and-true-p yas-minor-mode)
|
(bound-and-true-p yas-minor-mode)
|
||||||
(yas-maybe-expand-abbrev-key-filter 'yas-expand))
|
(yas-maybe-expand-abbrev-key-filter 'yas-expand))
|
||||||
'yas-expand
|
#'yas-expand
|
||||||
(and (featurep! :completion company +tng)
|
(and (featurep! :completion company +tng)
|
||||||
(+company-has-completion-p))
|
(+company-has-completion-p))
|
||||||
'+company/complete)
|
#'+company/complete)
|
||||||
:n [tab] (general-predicate-dispatch nil
|
:n [tab] (general-predicate-dispatch nil
|
||||||
(and (featurep! :editor fold)
|
(and (featurep! :editor fold)
|
||||||
(save-excursion (end-of-line) (invisible-p (point))))
|
(save-excursion (end-of-line) (invisible-p (point))))
|
||||||
'+fold/toggle
|
#'+fold/toggle
|
||||||
(fboundp 'evil-jump-item)
|
(fboundp 'evil-jump-item)
|
||||||
'evil-jump-item)
|
#'evil-jump-item)
|
||||||
:v [tab] (general-predicate-dispatch nil
|
:v [tab] (general-predicate-dispatch nil
|
||||||
(and (bound-and-true-p yas-minor-mode)
|
(and (bound-and-true-p yas-minor-mode)
|
||||||
(or (eq evil-visual-selection 'line)
|
(or (eq evil-visual-selection 'line)
|
||||||
(not (memq (char-after) (list ?\( ?\[ ?\{ ?\} ?\] ?\))))))
|
(not (memq (char-after) (list ?\( ?\[ ?\{ ?\} ?\] ?\))))))
|
||||||
'yas-insert-snippet
|
#'yas-insert-snippet
|
||||||
(fboundp 'evil-jump-item)
|
(fboundp 'evil-jump-item)
|
||||||
'evil-jump-item)
|
#'evil-jump-item)
|
||||||
|
|
||||||
;; Smarter newlines
|
;; Smarter newlines
|
||||||
:i [remap newline] #'newline-and-indent ; auto-indent on newline
|
:i [remap newline] #'newline-and-indent ; auto-indent on newline
|
||||||
:i "C-j" #'+default/newline ; default behavior
|
:i "C-j" #'+default/newline ; default behavior
|
||||||
|
|
||||||
(:after vc-annotate
|
(:after help :map help-mode-map
|
||||||
:map vc-annotate-mode-map
|
|
||||||
[remap quit-window] #'kill-current-buffer)
|
|
||||||
|
|
||||||
(:map (help-mode-map helpful-mode-map)
|
|
||||||
:n "o" #'ace-link-help)
|
:n "o" #'ace-link-help)
|
||||||
(:map apropos-mode-map
|
(:after helpful :map helpful-mode-map
|
||||||
|
:n "o" #'ace-link-help)
|
||||||
|
(:after info :map Info-mode-map
|
||||||
|
:n "o" #'ace-link-info)
|
||||||
|
(:after apropos :map apropos-mode-map
|
||||||
:n "o" #'ace-link-help
|
:n "o" #'ace-link-help
|
||||||
:n "TAB" #'forward-button
|
:n "TAB" #'forward-button
|
||||||
:n [tab] #'forward-button
|
:n [tab] #'forward-button
|
||||||
:n [backtab] #'backward-button)
|
:n [backtab] #'backward-button)
|
||||||
(:map Info-mode-map
|
(:after view :map view-mode-map
|
||||||
:n "o" #'ace-link-info)
|
[escape] #'View-quit-all)
|
||||||
|
(:after man :map Man-mode-map
|
||||||
|
:n "q" #'kill-current-buffer)
|
||||||
|
|
||||||
|
:m "gs" #'+evil/easymotion ; lazy-load `evil-easymotion'
|
||||||
|
|
||||||
;; misc
|
;; misc
|
||||||
:n "C-S-f" #'toggle-frame-fullscreen
|
:n "C-S-f" #'toggle-frame-fullscreen
|
||||||
:n "C-+" #'doom/reset-font-size
|
:n "C-+" #'doom/reset-font-size
|
||||||
:n "C-=" #'doom/increase-font-size
|
:n "C-=" #'doom/increase-font-size
|
||||||
:n "C--" #'doom/decrease-font-size
|
:n "C--" #'doom/decrease-font-size)
|
||||||
|
|
||||||
;; ported from vim
|
|
||||||
:m "]m" #'+evil/next-beginning-of-method
|
|
||||||
:m "[m" #'+evil/previous-beginning-of-method
|
|
||||||
:m "]M" #'+evil/next-end-of-method
|
|
||||||
:m "[M" #'+evil/previous-end-of-method
|
|
||||||
:m "]#" #'+evil/next-preproc-directive
|
|
||||||
:m "[#" #'+evil/previous-preproc-directive
|
|
||||||
:m "]*" #'+evil/next-comment
|
|
||||||
:m "[*" #'+evil/previous-comment
|
|
||||||
:m "]\\" #'+evil/next-comment
|
|
||||||
:m "[\\" #'+evil/previous-comment
|
|
||||||
:nv "z=" #'flyspell-correct-word-generic
|
|
||||||
:v "@" #'+evil:apply-macro
|
|
||||||
|
|
||||||
;; ported from vim-unimpaired
|
|
||||||
:n "] SPC" #'+evil/insert-newline-below
|
|
||||||
:n "[ SPC" #'+evil/insert-newline-above
|
|
||||||
:n "]b" #'next-buffer
|
|
||||||
:n "[b" #'previous-buffer
|
|
||||||
:n "]f" #'+evil/next-file
|
|
||||||
:n "[f" #'+evil/previous-file
|
|
||||||
:m "]u" #'+evil:url-encode
|
|
||||||
:m "[u" #'+evil:url-decode
|
|
||||||
:m "]y" #'+evil:c-string-encode
|
|
||||||
:m "[y" #'+evil:c-string-decode
|
|
||||||
;; NOTE hl-todo-{next,previous} have ]t/[t, use ]F/[F instead
|
|
||||||
;; NOTE {next,previous}-error have ]e/[e, use ddp/ddP or gx instead
|
|
||||||
(:when (featurep! :lang web)
|
|
||||||
:m "]x" #'+web:encode-html-entities
|
|
||||||
:m "[x" #'+web:decode-html-entities)
|
|
||||||
|
|
||||||
;; custom vim-unmpaired-esque keys
|
|
||||||
:m "]a" #'evil-forward-arg
|
|
||||||
:m "[a" #'evil-backward-arg
|
|
||||||
:m "]e" #'next-error
|
|
||||||
:m "[e" #'previous-error
|
|
||||||
:n "]F" #'+evil/next-frame
|
|
||||||
:n "[F" #'+evil/previous-frame
|
|
||||||
:m "]h" #'outline-next-visible-heading
|
|
||||||
:m "[h" #'outline-previous-visible-heading
|
|
||||||
:n "[o" #'+evil/insert-newline-above
|
|
||||||
:n "]o" #'+evil/insert-newline-below
|
|
||||||
:n "gp" #'+evil/reselect-paste
|
|
||||||
:v "gp" #'+evil/paste-preserve-register
|
|
||||||
:nv "g@" #'+evil:apply-macro
|
|
||||||
:nv "gc" #'evilnc-comment-operator
|
|
||||||
:nv "gx" #'evil-exchange
|
|
||||||
:nv "gy" #'+evil:yank-unindented
|
|
||||||
:n "g=" #'evil-numbers/inc-at-pt
|
|
||||||
:n "g-" #'evil-numbers/dec-at-pt
|
|
||||||
:v "g=" #'evil-numbers/inc-at-pt-incremental
|
|
||||||
:v "g-" #'evil-numbers/dec-at-pt-incremental
|
|
||||||
:v "g+" #'evil-numbers/inc-at-pt
|
|
||||||
|
|
||||||
;; custom evil keybinds
|
|
||||||
:n "zn" #'+evil:narrow-buffer
|
|
||||||
:n "zN" #'doom/widen-indirectly-narrowed-buffer
|
|
||||||
:n "zx" #'kill-current-buffer
|
|
||||||
:n "ZX" #'bury-buffer
|
|
||||||
;; repeat in visual mode (FIXME buggy)
|
|
||||||
:v "." #'+evil:apply-macro
|
|
||||||
;; don't leave visual mode after shifting
|
|
||||||
:v "<" #'+evil/visual-dedent ; vnoremap < <gv
|
|
||||||
:v ">" #'+evil/visual-indent ; vnoremap > >gv
|
|
||||||
|
|
||||||
;; window management (prefix "C-w")
|
|
||||||
(:map evil-window-map
|
|
||||||
;; Navigation
|
|
||||||
"C-h" #'evil-window-left
|
|
||||||
"C-j" #'evil-window-down
|
|
||||||
"C-k" #'evil-window-up
|
|
||||||
"C-l" #'evil-window-right
|
|
||||||
"C-w" #'other-window
|
|
||||||
;; Swapping windows
|
|
||||||
"H" #'+evil/window-move-left
|
|
||||||
"J" #'+evil/window-move-down
|
|
||||||
"K" #'+evil/window-move-up
|
|
||||||
"L" #'+evil/window-move-right
|
|
||||||
"C-S-w" #'ace-swap-window
|
|
||||||
;; Window undo/redo
|
|
||||||
(:prefix "m"
|
|
||||||
"m" #'doom/window-maximize-buffer
|
|
||||||
"v" #'doom/window-maximize-vertically
|
|
||||||
"s" #'doom/window-maximize-horizontally)
|
|
||||||
"u" #'winner-undo
|
|
||||||
"C-u" #'winner-undo
|
|
||||||
"C-r" #'winner-redo
|
|
||||||
"o" #'doom/window-enlargen
|
|
||||||
;; Delete window
|
|
||||||
"d" #'evil-window-delete
|
|
||||||
"C-C" #'ace-delete-window)
|
|
||||||
|
|
||||||
;; Plugins
|
|
||||||
;; evil-easymotion
|
|
||||||
:m "gs" #'+evil/easymotion ; lazy-load `evil-easymotion'
|
|
||||||
(:after evil-easymotion
|
|
||||||
:map evilem-map
|
|
||||||
"a" (evilem-create #'evil-forward-arg)
|
|
||||||
"A" (evilem-create #'evil-backward-arg)
|
|
||||||
"s" #'evil-avy-goto-char-2
|
|
||||||
"SPC" (λ!! #'evil-avy-goto-char-timer t)
|
|
||||||
"/" #'evil-avy-goto-char-timer)
|
|
||||||
|
|
||||||
;; text object plugins
|
|
||||||
:textobj "x" #'evil-inner-xml-attr #'evil-outer-xml-attr
|
|
||||||
:textobj "a" #'evil-inner-arg #'evil-outer-arg
|
|
||||||
:textobj "B" #'evil-textobj-anyblock-inner-block #'evil-textobj-anyblock-a-block
|
|
||||||
:textobj "c" #'evilnc-inner-comment #'evilnc-outer-commenter
|
|
||||||
:textobj "f" #'+evil:defun-txtobj #'+evil:defun-txtobj
|
|
||||||
:textobj "g" #'+evil:whole-buffer-txtobj #'+evil:whole-buffer-txtobj
|
|
||||||
:textobj "i" #'evil-indent-plus-i-indent #'evil-indent-plus-a-indent
|
|
||||||
:textobj "k" #'evil-indent-plus-i-indent-up #'evil-indent-plus-a-indent-up
|
|
||||||
:textobj "j" #'evil-indent-plus-i-indent-up-down #'evil-indent-plus-a-indent-up-down
|
|
||||||
|
|
||||||
;; evil-snipe
|
|
||||||
(:after evil-snipe
|
|
||||||
:map evil-snipe-parent-transient-map
|
|
||||||
"C-;" (λ! (require 'evil-easymotion)
|
|
||||||
(call-interactively
|
|
||||||
(evilem-create #'evil-snipe-repeat
|
|
||||||
:bind ((evil-snipe-scope 'whole-buffer)
|
|
||||||
(evil-snipe-enable-highlight)
|
|
||||||
(evil-snipe-enable-incremental-highlight))))))
|
|
||||||
|
|
||||||
;; evil-surround
|
|
||||||
:v "S" #'evil-surround-region
|
|
||||||
:o "s" #'evil-surround-edit
|
|
||||||
:o "S" #'evil-Surround-edit)
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -199,16 +97,6 @@
|
||||||
(map! (:when (featurep! :completion company)
|
(map! (:when (featurep! :completion company)
|
||||||
:i "C-@" #'+company/complete
|
:i "C-@" #'+company/complete
|
||||||
:i "C-SPC" #'+company/complete
|
:i "C-SPC" #'+company/complete
|
||||||
(:prefix "C-x"
|
|
||||||
:i "C-l" #'+company/whole-lines
|
|
||||||
:i "C-k" #'+company/dict-or-keywords
|
|
||||||
:i "C-f" #'company-files
|
|
||||||
:i "C-]" #'company-etags
|
|
||||||
:i "s" #'company-ispell
|
|
||||||
:i "C-s" #'company-yasnippet
|
|
||||||
:i "C-o" #'company-capf
|
|
||||||
:i "C-n" #'+company/dabbrev
|
|
||||||
:i "C-p" #'+company/dabbrev-code-previous)
|
|
||||||
(:after company
|
(:after company
|
||||||
(:map company-active-map
|
(:map company-active-map
|
||||||
"C-w" nil ; don't interfere with `evil-delete-backward-word'
|
"C-w" nil ; don't interfere with `evil-delete-backward-word'
|
||||||
|
@ -232,15 +120,13 @@
|
||||||
"C-j" #'company-select-next-or-abort
|
"C-j" #'company-select-next-or-abort
|
||||||
"C-k" #'company-select-previous-or-abort
|
"C-k" #'company-select-previous-or-abort
|
||||||
"C-s" (λ! (company-search-abort) (company-filter-candidates))
|
"C-s" (λ! (company-search-abort) (company-filter-candidates))
|
||||||
"ESC" #'company-search-abort)
|
"ESC" #'company-search-abort))
|
||||||
;; TAB auto-completion in term buffers
|
;; TAB auto-completion in term buffers
|
||||||
(:map comint-mode-map
|
(:after comint :map comint-mode-map
|
||||||
"TAB" #'company-complete
|
"TAB" #'company-complete
|
||||||
[tab] #'company-complete)))
|
[tab] #'company-complete))
|
||||||
|
|
||||||
(:when (featurep! :completion ivy)
|
(:when (featurep! :completion ivy)
|
||||||
(:map (help-mode-map helpful-mode-map)
|
|
||||||
:n "Q" #'ivy-resume)
|
|
||||||
(:after ivy
|
(:after ivy
|
||||||
:map ivy-minibuffer-map
|
:map ivy-minibuffer-map
|
||||||
"C-SPC" #'ivy-call-and-recenter ; preview file
|
"C-SPC" #'ivy-call-and-recenter ; preview file
|
||||||
|
@ -253,98 +139,48 @@
|
||||||
[C-return] #'+ivy/git-grep-other-window-action))
|
[C-return] #'+ivy/git-grep-other-window-action))
|
||||||
|
|
||||||
(:when (featurep! :completion helm)
|
(:when (featurep! :completion helm)
|
||||||
(:after helm
|
(:after helm :map helm-map
|
||||||
(:map helm-map
|
[left] #'left-char
|
||||||
[left] #'left-char
|
[right] #'right-char
|
||||||
[right] #'right-char
|
"C-S-f" #'helm-previous-page
|
||||||
"C-S-n" #'helm-next-source
|
"C-S-n" #'helm-next-source
|
||||||
"C-S-p" #'helm-previous-source
|
"C-S-p" #'helm-previous-source
|
||||||
"C-j" #'helm-next-line
|
"C-S-j" #'helm-next-source
|
||||||
"C-k" #'helm-previous-line
|
"C-S-k" #'helm-previous-source
|
||||||
"C-S-j" #'helm-next-source
|
"C-j" #'helm-next-line
|
||||||
"C-S-k" #'helm-previous-source
|
"C-k" #'helm-previous-line
|
||||||
"C-f" #'helm-next-page
|
"C-u" #'helm-delete-minibuffer-contents
|
||||||
"C-S-f" #'helm-previous-page
|
"C-s" #'helm-minibuffer-history
|
||||||
"C-u" #'helm-delete-minibuffer-contents
|
;; Swap TAB and C-z
|
||||||
"C-w" #'backward-kill-word
|
"TAB" #'helm-execute-persistent-action
|
||||||
"C-r" #'evil-paste-from-register ; Evil registers in helm! Glorious!
|
[tab] #'helm-execute-persistent-action
|
||||||
"C-s" #'helm-minibuffer-history
|
"C-z" #'helm-select-action)
|
||||||
"C-b" #'backward-word
|
(:after helm-ag :map helm-ag-map
|
||||||
;; Swap TAB and C-z
|
"C--" #'+helm-do-ag-decrease-context
|
||||||
"TAB" #'helm-execute-persistent-action
|
"C-=" #'+helm-do-ag-increase-context
|
||||||
[tab] #'helm-execute-persistent-action
|
[left] nil
|
||||||
"C-z" #'helm-select-action)
|
[right] nil)
|
||||||
(:after helm-ag
|
(:after helm-files :map (helm-find-files-map helm-read-file-map)
|
||||||
:map helm-ag-map
|
[C-return] #'helm-ff-run-switch-other-window
|
||||||
"C--" #'+helm-do-ag-decrease-context
|
"C-w" #'helm-find-files-up-one-level)
|
||||||
"C-=" #'+helm-do-ag-increase-context
|
(:after helm-locate :map helm-generic-files-map
|
||||||
[left] nil
|
[C-return] #'helm-ff-run-switch-other-window)
|
||||||
[right] nil)
|
(:after helm-buffers :map helm-buffer-map
|
||||||
(:after helm-files
|
[C-return] #'helm-buffer-switch-other-window)
|
||||||
:map (helm-find-files-map helm-read-file-map)
|
(:after helm-occur :map helm-occur-map
|
||||||
[C-return] #'helm-ff-run-switch-other-window
|
[C-return] #'helm-occur-run-goto-line-ow)
|
||||||
"C-w" #'helm-find-files-up-one-level)
|
(:after helm-grep :map helm-grep-map
|
||||||
(:after helm-locate
|
[C-return] #'helm-grep-run-other-window-action)))
|
||||||
:map helm-generic-files-map
|
|
||||||
[C-return] #'helm-ff-run-switch-other-window)
|
|
||||||
(:after helm-buffers
|
|
||||||
:map helm-buffer-map
|
|
||||||
[C-return] #'helm-buffer-switch-other-window)
|
|
||||||
(:after helm-occur
|
|
||||||
:map helm-occur-map
|
|
||||||
[C-return] #'helm-occur-run-goto-line-ow)
|
|
||||||
(:after helm-grep
|
|
||||||
:map helm-grep-map
|
|
||||||
[C-return] #'helm-grep-run-other-window-action))))
|
|
||||||
|
|
||||||
;;; :ui
|
;;; :ui
|
||||||
(map! (:when (featurep! :ui hl-todo)
|
(map! (:when (featurep! :ui popup)
|
||||||
:m "]t" #'hl-todo-next
|
|
||||||
:m "[t" #'hl-todo-previous)
|
|
||||||
|
|
||||||
(:when (featurep! :ui neotree)
|
|
||||||
:after neotree
|
|
||||||
:map neotree-mode-map
|
|
||||||
:n "g" nil
|
|
||||||
:n "TAB" #'neotree-quick-look
|
|
||||||
:n "RET" #'neotree-enter
|
|
||||||
:n [tab] #'neotree-quick-look
|
|
||||||
:n [return] #'neotree-enter
|
|
||||||
:n "DEL" #'evil-window-prev
|
|
||||||
:n "c" #'neotree-create-node
|
|
||||||
:n "r" #'neotree-rename-node
|
|
||||||
:n "d" #'neotree-delete-node
|
|
||||||
:n "j" #'neotree-next-line
|
|
||||||
:n "k" #'neotree-previous-line
|
|
||||||
:n "n" #'neotree-next-line
|
|
||||||
:n "p" #'neotree-previous-line
|
|
||||||
:n "h" #'+neotree/collapse-or-up
|
|
||||||
:n "l" #'+neotree/expand-or-open
|
|
||||||
:n "J" #'neotree-select-next-sibling-node
|
|
||||||
:n "K" #'neotree-select-previous-sibling-node
|
|
||||||
:n "H" #'neotree-select-up-node
|
|
||||||
:n "L" #'neotree-select-down-node
|
|
||||||
:n "G" #'evil-goto-line
|
|
||||||
:n "gg" #'evil-goto-first-line
|
|
||||||
:n "v" #'neotree-enter-vertical-split
|
|
||||||
:n "s" #'neotree-enter-horizontal-split
|
|
||||||
:n "q" #'neotree-hide
|
|
||||||
:n "R" #'neotree-refresh)
|
|
||||||
|
|
||||||
(:when (featurep! :ui popup)
|
|
||||||
:n "C-`" #'+popup/toggle
|
:n "C-`" #'+popup/toggle
|
||||||
:n "C-~" #'+popup/raise
|
:n "C-~" #'+popup/raise
|
||||||
:g "C-x p" #'+popup/other)
|
:g "C-x p" #'+popup/other)
|
||||||
|
|
||||||
(:when (featurep! :ui vc-gutter)
|
|
||||||
:m "]d" #'git-gutter:next-hunk
|
|
||||||
:m "[d" #'git-gutter:previous-hunk)
|
|
||||||
|
|
||||||
(:when (featurep! :ui workspaces)
|
(:when (featurep! :ui workspaces)
|
||||||
:n "gt" #'+workspace:switch-next
|
:n "C-t" #'+workspace/new
|
||||||
:n "gT" #'+workspace:switch-previous
|
:n "C-S-t" #'+workspace/display
|
||||||
:n "]w" #'+workspace/switch-right
|
|
||||||
:n "[w" #'+workspace/switch-left
|
|
||||||
:g "M-1" #'+workspace/switch-to-0
|
:g "M-1" #'+workspace/switch-to-0
|
||||||
:g "M-2" #'+workspace/switch-to-1
|
:g "M-2" #'+workspace/switch-to-1
|
||||||
:g "M-3" #'+workspace/switch-to-2
|
:g "M-3" #'+workspace/switch-to-2
|
||||||
|
@ -355,8 +191,6 @@
|
||||||
:g "M-8" #'+workspace/switch-to-7
|
:g "M-8" #'+workspace/switch-to-7
|
||||||
:g "M-9" #'+workspace/switch-to-8
|
:g "M-9" #'+workspace/switch-to-8
|
||||||
:g "M-0" #'+workspace/switch-to-final
|
:g "M-0" #'+workspace/switch-to-final
|
||||||
:n "C-t" #'+workspace/new
|
|
||||||
:n "C-S-t" #'+workspace/display
|
|
||||||
(:when IS-MAC
|
(:when IS-MAC
|
||||||
:g "s-t" #'+workspace/new
|
:g "s-t" #'+workspace/new
|
||||||
:g "s-T" #'+workspace/display
|
:g "s-T" #'+workspace/display
|
||||||
|
@ -372,36 +206,13 @@
|
||||||
:n "s-0" #'+workspace/switch-to-final)))
|
:n "s-0" #'+workspace/switch-to-final)))
|
||||||
|
|
||||||
;;; :editor
|
;;; :editor
|
||||||
(map! (:when (featurep! :editor fold)
|
(map! (:when (featurep! :editor format)
|
||||||
:nv "C-SPC" #'+fold/toggle)
|
:n "gQ" #'+format:region)
|
||||||
|
|
||||||
(:when (featurep! :editor format)
|
(:when (featurep! :editor rotate-text)
|
||||||
:n "gQ" #'+format:region)
|
:n "!" #'rotate-text)
|
||||||
|
|
||||||
(:when (featurep! :editor multiple-cursors)
|
(:when (featurep! :editor multiple-cursors)
|
||||||
;; evil-mc
|
|
||||||
(:prefix "gz"
|
|
||||||
:nv "d" #'evil-mc-make-and-goto-next-match
|
|
||||||
:nv "D" #'evil-mc-make-and-goto-prev-match
|
|
||||||
:nv "j" #'evil-mc-make-cursor-move-next-line
|
|
||||||
:nv "k" #'evil-mc-make-cursor-move-prev-line
|
|
||||||
:nv "m" #'evil-mc-make-all-cursors
|
|
||||||
:nv "n" #'evil-mc-make-and-goto-next-cursor
|
|
||||||
:nv "N" #'evil-mc-make-and-goto-last-cursor
|
|
||||||
:nv "p" #'evil-mc-make-and-goto-prev-cursor
|
|
||||||
:nv "P" #'evil-mc-make-and-goto-first-cursor
|
|
||||||
:nv "q" #'evil-mc-undo-all-cursors
|
|
||||||
:nv "t" #'+multiple-cursors/evil-mc-toggle-cursors
|
|
||||||
:nv "u" #'evil-mc-undo-last-added-cursor
|
|
||||||
:nv "z" #'+multiple-cursors/evil-mc-make-cursor-here
|
|
||||||
:v "I" #'evil-mc-make-cursor-in-visual-selection-beg
|
|
||||||
:v "A" #'evil-mc-make-cursor-in-visual-selection-end)
|
|
||||||
(:after evil-mc
|
|
||||||
:map evil-mc-key-map
|
|
||||||
:nv "C-n" #'evil-mc-make-and-goto-next-cursor
|
|
||||||
:nv "C-N" #'evil-mc-make-and-goto-last-cursor
|
|
||||||
:nv "C-p" #'evil-mc-make-and-goto-prev-cursor
|
|
||||||
:nv "C-P" #'evil-mc-make-and-goto-first-cursor)
|
|
||||||
;; evil-multiedit
|
;; evil-multiedit
|
||||||
:v "R" #'evil-multiedit-match-all
|
:v "R" #'evil-multiedit-match-all
|
||||||
:n "M-d" #'evil-multiedit-match-symbol-and-next
|
:n "M-d" #'evil-multiedit-match-symbol-and-next
|
||||||
|
@ -414,106 +225,16 @@
|
||||||
"M-d" #'evil-multiedit-match-and-next
|
"M-d" #'evil-multiedit-match-and-next
|
||||||
"M-D" #'evil-multiedit-match-and-prev
|
"M-D" #'evil-multiedit-match-and-prev
|
||||||
"RET" #'evil-multiedit-toggle-or-restrict-region
|
"RET" #'evil-multiedit-toggle-or-restrict-region
|
||||||
[return] #'evil-multiedit-toggle-or-restrict-region)
|
[return] #'evil-multiedit-toggle-or-restrict-region)))
|
||||||
(:map (evil-multiedit-state-map evil-multiedit-insert-state-map)
|
|
||||||
"C-n" #'evil-multiedit-next
|
|
||||||
"C-p" #'evil-multiedit-prev)))
|
|
||||||
|
|
||||||
(:when (featurep! :editor rotate-text)
|
|
||||||
:n "!" #'rotate-text)
|
|
||||||
|
|
||||||
(:when (featurep! :editor snippets)
|
(:when (featurep! :editor snippets)
|
||||||
;; auto-yasnippet
|
;; auto-yasnippet
|
||||||
:i [C-tab] #'aya-expand
|
:i [C-tab] #'aya-expand
|
||||||
:nv [C-tab] #'aya-create
|
:nv [C-tab] #'aya-create))
|
||||||
;; yasnippet
|
|
||||||
(:after yasnippet
|
|
||||||
(: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
|
|
||||||
[backspace] #'+snippets/delete-backward-char
|
|
||||||
[delete] #'+snippets/delete-forward-char-or-field))))
|
|
||||||
|
|
||||||
;;; :emacs
|
|
||||||
(map! (:when (featurep! :emacs vc)
|
|
||||||
:after git-timemachine
|
|
||||||
:map git-timemachine-mode-map
|
|
||||||
:n "C-p" #'git-timemachine-show-previous-revision
|
|
||||||
:n "C-n" #'git-timemachine-show-next-revision
|
|
||||||
:n "[[" #'git-timemachine-show-previous-revision
|
|
||||||
:n "]]" #'git-timemachine-show-next-revision
|
|
||||||
:n "q" #'git-timemachine-quit
|
|
||||||
:n "gb" #'git-timemachine-blame))
|
|
||||||
|
|
||||||
;;; :tools
|
;;; :tools
|
||||||
(map! (:when (featurep! :tools eval)
|
(when (featurep! :tools eval)
|
||||||
:g "M-r" #'+eval/buffer
|
(map! "M-r" #'+eval/buffer))
|
||||||
:nv "gr" #'+eval:region
|
|
||||||
:n "gR" #'+eval/buffer
|
|
||||||
:v "gR" #'+eval:replace-region)
|
|
||||||
|
|
||||||
(:when (featurep! :tools flyspell)
|
|
||||||
;; Keybinds that have no Emacs+evil analogues (i.e. don't exist):
|
|
||||||
;; zq - mark word at point as good word
|
|
||||||
;; zw - mark word at point as bad
|
|
||||||
;; zu{q,w} - undo last marking
|
|
||||||
;; Keybinds that evil define:
|
|
||||||
;; z= - correct flyspell word at point
|
|
||||||
;; ]s - jump to previous spelling error
|
|
||||||
;; [s - jump to next spelling error
|
|
||||||
(:map flyspell-mouse-map
|
|
||||||
"RET" #'flyspell-correct-word-generic
|
|
||||||
[return] #'flyspell-correct-word-generic
|
|
||||||
[mouse-1] #'flyspell-correct-word-generic))
|
|
||||||
|
|
||||||
(:when (featurep! :tools flycheck)
|
|
||||||
(:after flycheck
|
|
||||||
: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
|
|
||||||
:n [return] #'flycheck-error-list-goto-error))
|
|
||||||
|
|
||||||
(:when (featurep! :tools gist)
|
|
||||||
:after gist
|
|
||||||
:map gist-list-menu-mode-map
|
|
||||||
:n "go" #'gist-browse-current-url
|
|
||||||
:n "gr" #'gist-list-reload
|
|
||||||
:n "c" #'gist-add-buffer
|
|
||||||
:n "d" #'gist-kill-current
|
|
||||||
:n "e" #'gist-edit-current-description
|
|
||||||
:n "f" #'gist-fork
|
|
||||||
:n "q" #'kill-current-buffer
|
|
||||||
:n "s" #'gist-star
|
|
||||||
:n "S" #'gist-unstar
|
|
||||||
:n "y" #'gist-print-current-url)
|
|
||||||
|
|
||||||
(:when (featurep! :tools lookup)
|
|
||||||
:nv "K" #'+lookup/documentation
|
|
||||||
:nv "gd" #'+lookup/definition
|
|
||||||
:nv "gD" #'+lookup/references
|
|
||||||
:nv "gf" #'+lookup/file)
|
|
||||||
|
|
||||||
(:when (featurep! :tools magit)
|
|
||||||
(:after evil-magit
|
|
||||||
;; fix conflicts with private bindings
|
|
||||||
:map (magit-status-mode-map magit-revision-mode-map)
|
|
||||||
"C-j" nil
|
|
||||||
"C-k" nil)
|
|
||||||
(:map transient-map
|
|
||||||
"q" #'transient-quit-one)))
|
|
||||||
|
|
||||||
;;; :lang
|
|
||||||
(map! (:when (featurep! :lang markdown)
|
|
||||||
:after markdown-mode
|
|
||||||
:map markdown-mode-map
|
|
||||||
;; fix conflicts with private bindings
|
|
||||||
[backspace] nil))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
@ -831,7 +552,8 @@
|
||||||
:desc "Save session to file" "S" #'doom/save-session
|
:desc "Save session to file" "S" #'doom/save-session
|
||||||
:desc "Restore session from file" "L" #'doom/load-session
|
:desc "Restore session from file" "L" #'doom/load-session
|
||||||
:desc "Restart & restore Emacs" "r" #'doom/restart-and-restore
|
:desc "Restart & restore Emacs" "r" #'doom/restart-and-restore
|
||||||
:desc "Restart Emacs" "R" #'doom/restart)
|
:desc "Restart Emacs" "R" #'doom/restart
|
||||||
|
:desc "Restart emacs server" "d" #'+default/restart-server)
|
||||||
|
|
||||||
;;; <leader> r --- remote
|
;;; <leader> r --- remote
|
||||||
(:when (featurep! :tools upload)
|
(:when (featurep! :tools upload)
|
||||||
|
@ -878,93 +600,3 @@
|
||||||
(:when (featurep! :lang org +pomodoro)
|
(:when (featurep! :lang org +pomodoro)
|
||||||
:desc "Pomodoro timer" "t" #'org-pomodoro)
|
:desc "Pomodoro timer" "t" #'org-pomodoro)
|
||||||
:desc "Word-wrap mode" "w" #'+word-wrap-mode))
|
:desc "Word-wrap mode" "w" #'+word-wrap-mode))
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;;; Universal motion repeating keys
|
|
||||||
|
|
||||||
(defvar +default-repeat-keys (cons ";" ",")
|
|
||||||
"The keys to use for repeating motions.
|
|
||||||
|
|
||||||
This is a cons cell whose CAR is the key for repeating a motion forward, and
|
|
||||||
whose CDR is for repeating backward. They should both be kbd-able strings.")
|
|
||||||
|
|
||||||
(when +default-repeat-keys
|
|
||||||
(defmacro set-repeater! (command next-func prev-func)
|
|
||||||
"Makes ; and , the universal repeat-keys in evil-mode.
|
|
||||||
To change these keys see `+default-repeat-keys'."
|
|
||||||
(let ((fn-sym (intern (format "+default/repeat-%s" (doom-unquote command)))))
|
|
||||||
`(progn
|
|
||||||
(defun ,fn-sym (&rest _)
|
|
||||||
(evil-define-key* 'motion 'local
|
|
||||||
(kbd (car +default-repeat-keys)) #',next-func
|
|
||||||
(kbd (cdr +default-repeat-keys)) #',prev-func))
|
|
||||||
(advice-add #',command :after-while #',fn-sym))))
|
|
||||||
|
|
||||||
;; n/N
|
|
||||||
(set-repeater! evil-ex-search-next evil-ex-search-next evil-ex-search-previous)
|
|
||||||
(set-repeater! evil-ex-search-previous evil-ex-search-next evil-ex-search-previous)
|
|
||||||
(set-repeater! evil-ex-search-forward evil-ex-search-next evil-ex-search-previous)
|
|
||||||
(set-repeater! evil-ex-search-backward evil-ex-search-next evil-ex-search-previous)
|
|
||||||
|
|
||||||
;; f/F/t/T/s/S
|
|
||||||
(after! evil-snipe
|
|
||||||
(setq evil-snipe-repeat-keys nil
|
|
||||||
evil-snipe-override-evil-repeat-keys nil) ; causes problems with remapped ;
|
|
||||||
(set-repeater! evil-snipe-f evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-F evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-t evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-T evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-s evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-S evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-x evil-snipe-repeat evil-snipe-repeat-reverse)
|
|
||||||
(set-repeater! evil-snipe-X evil-snipe-repeat evil-snipe-repeat-reverse))
|
|
||||||
|
|
||||||
;; */#
|
|
||||||
(set-repeater! evil-visualstar/begin-search-forward
|
|
||||||
evil-ex-search-next evil-ex-search-previous)
|
|
||||||
(set-repeater! evil-visualstar/begin-search-backward
|
|
||||||
evil-ex-search-previous evil-ex-search-next))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;;; Universal evil integration
|
|
||||||
|
|
||||||
(when (featurep! :editor evil +everywhere)
|
|
||||||
;; Have C-u behave similarly to `doom/backward-to-bol-or-indent'.
|
|
||||||
;; NOTE SPC u replaces C-u as the universal argument.
|
|
||||||
(map! :gi "C-u" #'doom/backward-kill-to-bol-and-indent
|
|
||||||
:gi "C-w" #'backward-kill-word
|
|
||||||
;; Vimmish ex motion keys
|
|
||||||
:gi "C-b" #'backward-word
|
|
||||||
:gi "C-f" #'forward-word)
|
|
||||||
|
|
||||||
(after! view
|
|
||||||
(define-key view-mode-map [escape] #'View-quit-all))
|
|
||||||
(after! man
|
|
||||||
(evil-define-key* 'normal Man-mode-map "q" #'kill-current-buffer))
|
|
||||||
|
|
||||||
;; Minibuffer
|
|
||||||
(define-key! evil-ex-completion-map
|
|
||||||
"C-a" #'move-beginning-of-line
|
|
||||||
"C-b" #'backward-word
|
|
||||||
"C-s" (if (featurep! :completion ivy)
|
|
||||||
#'counsel-minibuffer-history
|
|
||||||
#'helm-minibuffer-history))
|
|
||||||
|
|
||||||
(define-key! :keymaps +default-minibuffer-maps
|
|
||||||
[escape] #'abort-recursive-edit
|
|
||||||
"C-v" #'yank
|
|
||||||
"C-z" (λ! (ignore-errors (call-interactively #'undo)))
|
|
||||||
"C-a" #'move-beginning-of-line
|
|
||||||
"C-b" #'backward-word
|
|
||||||
"C-r" #'evil-paste-from-register
|
|
||||||
;; Scrolling lines
|
|
||||||
"C-j" #'next-line
|
|
||||||
"C-k" #'previous-line
|
|
||||||
"C-S-j" #'scroll-up-command
|
|
||||||
"C-S-k" #'scroll-down-command)
|
|
||||||
|
|
||||||
(define-key! read-expression-map
|
|
||||||
"C-j" #'next-line-or-history-element
|
|
||||||
"C-k" #'previous-line-or-history-element))
|
|
||||||
|
|
|
@ -7,9 +7,13 @@
|
||||||
minibuffer-local-must-match-map
|
minibuffer-local-must-match-map
|
||||||
minibuffer-local-isearch-map
|
minibuffer-local-isearch-map
|
||||||
read-expression-map
|
read-expression-map
|
||||||
,@(when (featurep! :completion ivy)
|
,@(cond ((featurep! :completion ivy)
|
||||||
'(ivy-minibuffer-map
|
'(ivy-minibuffer-map
|
||||||
ivy-switch-buffer-map)))
|
ivy-switch-buffer-map))
|
||||||
|
((featurep! :completion helm)
|
||||||
|
'(helm-map
|
||||||
|
helm-ag-map
|
||||||
|
helm-read-file-map))))
|
||||||
"A list of all the keymaps used for the minibuffer.")
|
"A list of all the keymaps used for the minibuffer.")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,12 @@
|
||||||
;; I'm a vimmer at heart. Its modal philosophy suits me better, and this module
|
;; I'm a vimmer at heart. Its modal philosophy suits me better, and this module
|
||||||
;; strives to make Emacs a much better vim than vim was.
|
;; strives to make Emacs a much better vim than vim was.
|
||||||
|
|
||||||
|
(defvar +evil-repeat-keys (cons ";" ",")
|
||||||
|
"The keys to use for universal repeating motions.
|
||||||
|
|
||||||
|
This is a cons cell whose CAR is the key for repeating a motion forward, and
|
||||||
|
whose CDR is for repeating backward. They should both be kbd-able strings.")
|
||||||
|
|
||||||
(defvar +evil-want-o/O-to-continue-comments t
|
(defvar +evil-want-o/O-to-continue-comments t
|
||||||
"If non-nil, the o/O keys will continue comment lines if the point is on a
|
"If non-nil, the o/O keys will continue comment lines if the point is on a
|
||||||
line with a linewise comment.")
|
line with a linewise comment.")
|
||||||
|
@ -171,11 +177,6 @@ directives. By default, this only recognizes C directives.")
|
||||||
(evil-add-command-properties '+evil:align-right :ex-arg 'regexp-match)
|
(evil-add-command-properties '+evil:align-right :ex-arg 'regexp-match)
|
||||||
(evil-add-command-properties '+multiple-cursors:evil-mc :ex-arg 'regexp-global-match)
|
(evil-add-command-properties '+multiple-cursors:evil-mc :ex-arg 'regexp-global-match)
|
||||||
|
|
||||||
;; `evil-collection'
|
|
||||||
(when (and (featurep! +everywhere)
|
|
||||||
(not doom-reloading-p))
|
|
||||||
(load! "+everywhere"))
|
|
||||||
|
|
||||||
;; Lazy load evil ex commands
|
;; Lazy load evil ex commands
|
||||||
(delq! 'evil-ex features)
|
(delq! 'evil-ex features)
|
||||||
(add-transient-hook! 'evil-ex (provide 'evil-ex))
|
(add-transient-hook! 'evil-ex (provide 'evil-ex))
|
||||||
|
@ -329,3 +330,229 @@ directives. By default, this only recognizes C directives.")
|
||||||
|
|
||||||
(use-package! exato
|
(use-package! exato
|
||||||
:commands evil-outer-xml-attr evil-inner-xml-attr)
|
:commands evil-outer-xml-attr evil-inner-xml-attr)
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Keybinds
|
||||||
|
|
||||||
|
(when +evil-repeat-keys
|
||||||
|
(defmacro set-repeater! (command next-func prev-func)
|
||||||
|
"Makes ; and , the universal repeat-keys in evil-mode.
|
||||||
|
To change these keys see `+evil-repeat-keys'."
|
||||||
|
(let ((fn-sym (intern (format "+default/repeat-%s" (doom-unquote command)))))
|
||||||
|
`(progn
|
||||||
|
(defun ,fn-sym (&rest _)
|
||||||
|
(evil-define-key* 'motion 'local
|
||||||
|
(kbd (car +evil-repeat-keys)) #',next-func
|
||||||
|
(kbd (cdr +evil-repeat-keys)) #',prev-func))
|
||||||
|
(advice-add #',command :after-while #',fn-sym))))
|
||||||
|
|
||||||
|
;; n/N
|
||||||
|
(set-repeater! evil-ex-search-next evil-ex-search-next evil-ex-search-previous)
|
||||||
|
(set-repeater! evil-ex-search-previous evil-ex-search-next evil-ex-search-previous)
|
||||||
|
(set-repeater! evil-ex-search-forward evil-ex-search-next evil-ex-search-previous)
|
||||||
|
(set-repeater! evil-ex-search-backward evil-ex-search-next evil-ex-search-previous)
|
||||||
|
|
||||||
|
;; f/F/t/T/s/S
|
||||||
|
(after! evil-snipe
|
||||||
|
(setq evil-snipe-repeat-keys nil
|
||||||
|
evil-snipe-override-evil-repeat-keys nil) ; causes problems with remapped ;
|
||||||
|
(set-repeater! evil-snipe-f evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-F evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-t evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-T evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-s evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-S evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-x evil-snipe-repeat evil-snipe-repeat-reverse)
|
||||||
|
(set-repeater! evil-snipe-X evil-snipe-repeat evil-snipe-repeat-reverse))
|
||||||
|
|
||||||
|
;; */#
|
||||||
|
(set-repeater! evil-visualstar/begin-search-forward
|
||||||
|
evil-ex-search-next evil-ex-search-previous)
|
||||||
|
(set-repeater! evil-visualstar/begin-search-backward
|
||||||
|
evil-ex-search-previous evil-ex-search-next))
|
||||||
|
|
||||||
|
|
||||||
|
;; `evil-collection'
|
||||||
|
(when (featurep! +everywhere)
|
||||||
|
(unless doom-reloading-p
|
||||||
|
(load! "+everywhere"))
|
||||||
|
|
||||||
|
(setq evil-collection-company-use-tng (featurep! :completion company +tng))
|
||||||
|
|
||||||
|
;; Don't let evil-collection interfere with certain keys
|
||||||
|
(appendq! evil-collection-key-blacklist
|
||||||
|
(append (when (featurep! :tools lookup)
|
||||||
|
'("gd" "gf" "K"))
|
||||||
|
(when (featurep! :tools eval)
|
||||||
|
'("gr" "gR"))
|
||||||
|
'("[" "]" "gz" "<escape>")))
|
||||||
|
|
||||||
|
(defadvice! +default-evil-collection-disable-blacklist-a (orig-fn)
|
||||||
|
:around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC
|
||||||
|
(let (evil-collection-key-blacklist)
|
||||||
|
(apply orig-fn))))
|
||||||
|
|
||||||
|
;; Keybinds that have no Emacs+evil analogues (i.e. don't exist):
|
||||||
|
;; zq - mark word at point as good word
|
||||||
|
;; zw - mark word at point as bad
|
||||||
|
;; zu{q,w} - undo last marking
|
||||||
|
;; Keybinds that evil define:
|
||||||
|
;; z= - correct flyspell word at point
|
||||||
|
;; ]s - jump to previous spelling error
|
||||||
|
;; [s - jump to next spelling error
|
||||||
|
|
||||||
|
(map! :m "]m" #'+evil/next-beginning-of-method
|
||||||
|
:m "[m" #'+evil/previous-beginning-of-method
|
||||||
|
:m "]M" #'+evil/next-end-of-method
|
||||||
|
:m "[M" #'+evil/previous-end-of-method
|
||||||
|
:m "]#" #'+evil/next-preproc-directive
|
||||||
|
:m "[#" #'+evil/previous-preproc-directive
|
||||||
|
:m "]*" #'+evil/next-comment
|
||||||
|
:m "[*" #'+evil/previous-comment
|
||||||
|
:m "]\\" #'+evil/next-comment
|
||||||
|
:m "[\\" #'+evil/previous-comment
|
||||||
|
:v "@" #'+evil:apply-macro
|
||||||
|
|
||||||
|
;; ported from vim-unimpaired
|
||||||
|
:n "] SPC" #'+evil/insert-newline-below
|
||||||
|
:n "[ SPC" #'+evil/insert-newline-above
|
||||||
|
:n "]b" #'next-buffer
|
||||||
|
:n "[b" #'previous-buffer
|
||||||
|
:n "]f" #'+evil/next-file
|
||||||
|
:n "[f" #'+evil/previous-file
|
||||||
|
:m "]u" #'+evil:url-encode
|
||||||
|
:m "[u" #'+evil:url-decode
|
||||||
|
:m "]y" #'+evil:c-string-encode
|
||||||
|
:m "[y" #'+evil:c-string-decode
|
||||||
|
(:when (featurep! :lang web)
|
||||||
|
:m "]x" #'+web:encode-html-entities
|
||||||
|
:m "[x" #'+web:decode-html-entities)
|
||||||
|
(:when (featurep! :ui vc-gutter)
|
||||||
|
:m "]d" #'git-gutter:next-hunk
|
||||||
|
:m "[d" #'git-gutter:previous-hunk)
|
||||||
|
(:when (featurep! :ui hl-todo)
|
||||||
|
:m "]t" #'hl-todo-next
|
||||||
|
:m "[t" #'hl-todo-previous)
|
||||||
|
(:when (featurep! :ui workspaces)
|
||||||
|
:n "gt" #'+workspace:switch-next
|
||||||
|
:n "gT" #'+workspace:switch-previous
|
||||||
|
:n "]w" #'+workspace/switch-right
|
||||||
|
:n "[w" #'+workspace/switch-left)
|
||||||
|
|
||||||
|
;; custom vim-unmpaired-esque keys
|
||||||
|
:m "]a" #'evil-forward-arg
|
||||||
|
:m "[a" #'evil-backward-arg
|
||||||
|
:m "]e" #'next-error
|
||||||
|
:m "[e" #'previous-error
|
||||||
|
:n "]F" #'+evil/next-frame
|
||||||
|
:n "[F" #'+evil/previous-frame
|
||||||
|
:m "]h" #'outline-next-visible-heading
|
||||||
|
:m "[h" #'outline-previous-visible-heading
|
||||||
|
:n "[o" #'+evil/insert-newline-above
|
||||||
|
:n "]o" #'+evil/insert-newline-below
|
||||||
|
:n "gp" #'+evil/reselect-paste
|
||||||
|
:v "gp" #'+evil/paste-preserve-register
|
||||||
|
:nv "g@" #'+evil:apply-macro
|
||||||
|
:nv "gc" #'evilnc-comment-operator
|
||||||
|
:nv "gx" #'evil-exchange
|
||||||
|
:nv "gy" #'+evil:yank-unindented
|
||||||
|
:n "g=" #'evil-numbers/inc-at-pt
|
||||||
|
:n "g-" #'evil-numbers/dec-at-pt
|
||||||
|
:v "g=" #'evil-numbers/inc-at-pt-incremental
|
||||||
|
:v "g-" #'evil-numbers/dec-at-pt-incremental
|
||||||
|
:v "g+" #'evil-numbers/inc-at-pt
|
||||||
|
(:when (featurep! :tools lookup)
|
||||||
|
:nv "K" #'+lookup/documentation
|
||||||
|
:nv "gd" #'+lookup/definition
|
||||||
|
:nv "gD" #'+lookup/references
|
||||||
|
:nv "gf" #'+lookup/file)
|
||||||
|
(:when (featurep! :tools eval)
|
||||||
|
:nv "gr" #'+eval:region
|
||||||
|
:n "gR" #'+eval/buffer
|
||||||
|
:v "gR" #'+eval:replace-region)
|
||||||
|
|
||||||
|
:nv "z=" #'flyspell-correct-word-generic
|
||||||
|
;; custom evil keybinds
|
||||||
|
:n "zn" #'+evil:narrow-buffer
|
||||||
|
:n "zN" #'doom/widen-indirectly-narrowed-buffer
|
||||||
|
:n "zx" #'kill-current-buffer
|
||||||
|
:n "ZX" #'bury-buffer
|
||||||
|
;; don't leave visual mode after shifting
|
||||||
|
:v "<" #'+evil/visual-dedent ; vnoremap < <gv
|
||||||
|
:v ">" #'+evil/visual-indent ; vnoremap > >gv
|
||||||
|
|
||||||
|
;; window management (prefix "C-w")
|
||||||
|
(:map evil-window-map
|
||||||
|
;; Navigation
|
||||||
|
"C-h" #'evil-window-left
|
||||||
|
"C-j" #'evil-window-down
|
||||||
|
"C-k" #'evil-window-up
|
||||||
|
"C-l" #'evil-window-right
|
||||||
|
"C-w" #'other-window
|
||||||
|
;; Swapping windows
|
||||||
|
"H" #'+evil/window-move-left
|
||||||
|
"J" #'+evil/window-move-down
|
||||||
|
"K" #'+evil/window-move-up
|
||||||
|
"L" #'+evil/window-move-right
|
||||||
|
"C-S-w" #'ace-swap-window
|
||||||
|
;; Window undo/redo
|
||||||
|
(:prefix "m"
|
||||||
|
"m" #'doom/window-maximize-buffer
|
||||||
|
"v" #'doom/window-maximize-vertically
|
||||||
|
"s" #'doom/window-maximize-horizontally)
|
||||||
|
"u" #'winner-undo
|
||||||
|
"C-u" #'winner-undo
|
||||||
|
"C-r" #'winner-redo
|
||||||
|
"o" #'doom/window-enlargen
|
||||||
|
;; Delete window
|
||||||
|
"d" #'evil-window-delete
|
||||||
|
"C-C" #'ace-delete-window)
|
||||||
|
|
||||||
|
;; text objects
|
||||||
|
:textobj "x" #'evil-inner-xml-attr #'evil-outer-xml-attr
|
||||||
|
:textobj "a" #'evil-inner-arg #'evil-outer-arg
|
||||||
|
:textobj "B" #'evil-textobj-anyblock-inner-block #'evil-textobj-anyblock-a-block
|
||||||
|
:textobj "c" #'evilnc-inner-comment #'evilnc-outer-commenter
|
||||||
|
:textobj "f" #'+evil:defun-txtobj #'+evil:defun-txtobj
|
||||||
|
:textobj "g" #'+evil:whole-buffer-txtobj #'+evil:whole-buffer-txtobj
|
||||||
|
:textobj "i" #'evil-indent-plus-i-indent #'evil-indent-plus-a-indent
|
||||||
|
:textobj "k" #'evil-indent-plus-i-indent-up #'evil-indent-plus-a-indent-up
|
||||||
|
:textobj "j" #'evil-indent-plus-i-indent-up-down #'evil-indent-plus-a-indent-up-down
|
||||||
|
|
||||||
|
;; evil-easymotion
|
||||||
|
(:after evil-easymotion
|
||||||
|
:map evilem-map
|
||||||
|
"a" (evilem-create #'evil-forward-arg)
|
||||||
|
"A" (evilem-create #'evil-backward-arg)
|
||||||
|
"s" #'evil-avy-goto-char-2
|
||||||
|
"SPC" (λ!! #'evil-avy-goto-char-timer t)
|
||||||
|
"/" #'evil-avy-goto-char-timer)
|
||||||
|
|
||||||
|
;; evil-snipe
|
||||||
|
(:after evil-snipe
|
||||||
|
:map evil-snipe-parent-transient-map
|
||||||
|
"C-;" (λ! (require 'evil-easymotion)
|
||||||
|
(call-interactively
|
||||||
|
(evilem-create #'evil-snipe-repeat
|
||||||
|
:bind ((evil-snipe-scope 'whole-buffer)
|
||||||
|
(evil-snipe-enable-highlight)
|
||||||
|
(evil-snipe-enable-incremental-highlight))))))
|
||||||
|
|
||||||
|
;; evil-surround
|
||||||
|
:v "S" #'evil-surround-region
|
||||||
|
:o "s" #'evil-surround-edit
|
||||||
|
:o "S" #'evil-Surround-edit
|
||||||
|
|
||||||
|
;; Omni-completion
|
||||||
|
(:when (featurep! :completion company)
|
||||||
|
(:prefix "C-x"
|
||||||
|
:i "C-l" #'+company/whole-lines
|
||||||
|
:i "C-k" #'+company/dict-or-keywords
|
||||||
|
:i "C-f" #'company-files
|
||||||
|
:i "C-]" #'company-etags
|
||||||
|
:i "s" #'company-ispell
|
||||||
|
:i "C-s" #'company-yasnippet
|
||||||
|
:i "C-o" #'company-capf
|
||||||
|
:i "C-n" #'+company/dabbrev
|
||||||
|
:i "C-p" #'+company/dabbrev-code-previous)))
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
;;; editor/multiple-cursors/config.el -*- lexical-binding: t; -*-
|
;;; editor/multiple-cursors/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package! evil-multiedit
|
||||||
|
:when (featurep! :editor evil)
|
||||||
|
:defer t
|
||||||
|
:config
|
||||||
|
(map! :map (evil-multiedit-state-map evil-multiedit-insert-state-map)
|
||||||
|
"C-n" #'evil-multiedit-next
|
||||||
|
"C-p" #'evil-multiedit-prev))
|
||||||
|
|
||||||
|
|
||||||
(use-package! evil-mc
|
(use-package! evil-mc
|
||||||
:when (featurep! :editor evil)
|
:when (featurep! :editor evil)
|
||||||
:commands (evil-mc-make-cursor-here
|
:commands (evil-mc-make-cursor-here
|
||||||
|
@ -25,7 +34,12 @@
|
||||||
evil-mc-make-and-goto-prev-match
|
evil-mc-make-and-goto-prev-match
|
||||||
evil-mc-skip-and-goto-prev-match)
|
evil-mc-skip-and-goto-prev-match)
|
||||||
:init
|
:init
|
||||||
|
;; The included keybindings are too imposing and are likely to cause
|
||||||
|
;; conflicts, so we'll set them ourselves.
|
||||||
(defvar evil-mc-key-map (make-sparse-keymap))
|
(defvar evil-mc-key-map (make-sparse-keymap))
|
||||||
|
|
||||||
|
(defvar +multiple-cursors-evil-mc-prefix "gz"
|
||||||
|
"Where to store `evil-mc' keybinds.")
|
||||||
:config
|
:config
|
||||||
(global-evil-mc-mode +1)
|
(global-evil-mc-mode +1)
|
||||||
|
|
||||||
|
@ -71,7 +85,30 @@
|
||||||
;; Forward declare these so that ex completion and evil-mc support is
|
;; Forward declare these so that ex completion and evil-mc support is
|
||||||
;; recognized before the autoloaded functions are loaded.
|
;; recognized before the autoloaded functions are loaded.
|
||||||
(evil-add-command-properties '+evil:align :evil-mc t)
|
(evil-add-command-properties '+evil:align :evil-mc t)
|
||||||
(evil-add-command-properties '+multiple-cursors:evil-mc :evil-mc t))
|
(evil-add-command-properties '+multiple-cursors:evil-mc :evil-mc t)
|
||||||
|
|
||||||
|
(map! :map evil-mc-key-map
|
||||||
|
:nv "C-n" #'evil-mc-make-and-goto-next-cursor
|
||||||
|
:nv "C-N" #'evil-mc-make-and-goto-last-cursor
|
||||||
|
:nv "C-p" #'evil-mc-make-and-goto-prev-cursor
|
||||||
|
:nv "C-P" #'evil-mc-make-and-goto-first-cursor
|
||||||
|
:when +multiple-cursors-evil-mc-prefix
|
||||||
|
(:prefix +multiple-cursors-evil-mc-prefix
|
||||||
|
:nv "d" #'evil-mc-make-and-goto-next-match
|
||||||
|
:nv "D" #'evil-mc-make-and-goto-prev-match
|
||||||
|
:nv "j" #'evil-mc-make-cursor-move-next-line
|
||||||
|
:nv "k" #'evil-mc-make-cursor-move-prev-line
|
||||||
|
:nv "m" #'evil-mc-make-all-cursors
|
||||||
|
:nv "n" #'evil-mc-make-and-goto-next-cursor
|
||||||
|
:nv "N" #'evil-mc-make-and-goto-last-cursor
|
||||||
|
:nv "p" #'evil-mc-make-and-goto-prev-cursor
|
||||||
|
:nv "P" #'evil-mc-make-and-goto-first-cursor
|
||||||
|
:nv "q" #'evil-mc-undo-all-cursors
|
||||||
|
:nv "t" #'+multiple-cursors/evil-mc-toggle-cursors
|
||||||
|
:nv "u" #'evil-mc-undo-last-added-cursor
|
||||||
|
:nv "z" #'+multiple-cursors/evil-mc-make-cursor-here
|
||||||
|
:v "I" #'evil-mc-make-cursor-in-visual-selection-beg
|
||||||
|
:v "A" #'evil-mc-make-cursor-in-visual-selection-end)))
|
||||||
|
|
||||||
|
|
||||||
(after! multiple-cursors-core
|
(after! multiple-cursors-core
|
||||||
|
|
|
@ -71,7 +71,16 @@
|
||||||
;; Replace commands with superior alternatives
|
;; Replace commands with superior alternatives
|
||||||
(define-key! yas-minor-mode-map
|
(define-key! yas-minor-mode-map
|
||||||
[remap yas-new-snippet] #'+snippets/new
|
[remap yas-new-snippet] #'+snippets/new
|
||||||
[remap yas-visit-snippet-file] #'+snippets/edit))
|
[remap yas-visit-snippet-file] #'+snippets/edit)
|
||||||
|
|
||||||
|
(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
|
||||||
|
[backspace] #'+snippets/delete-backward-char
|
||||||
|
[delete] #'+snippets/delete-forward-char-or-field))
|
||||||
|
|
||||||
|
|
||||||
(use-package! auto-yasnippet
|
(use-package! auto-yasnippet
|
||||||
|
|
|
@ -15,7 +15,11 @@
|
||||||
("^\\vc-c" :select t))) ; *vc-change-log*
|
("^\\vc-c" :select t))) ; *vc-change-log*
|
||||||
(set-evil-initial-state!
|
(set-evil-initial-state!
|
||||||
'(vc-annotate-mode vc-git-log-view-mode)
|
'(vc-annotate-mode vc-git-log-view-mode)
|
||||||
'normal))
|
'normal)
|
||||||
|
|
||||||
|
;; Clean up after itself
|
||||||
|
(define-key vc-annotate-mode-map [remap quit-window] #'kill-current-buffer))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(after! git-timemachine
|
(after! git-timemachine
|
||||||
|
@ -34,6 +38,12 @@
|
||||||
(add-transient-hook! #'git-timemachine-blame (require 'magit-blame)))
|
(add-transient-hook! #'git-timemachine-blame (require 'magit-blame)))
|
||||||
|
|
||||||
(map! :map git-timemachine-mode-map
|
(map! :map git-timemachine-mode-map
|
||||||
|
:n "C-p" #'git-timemachine-show-previous-revision
|
||||||
|
:n "C-n" #'git-timemachine-show-next-revision
|
||||||
|
:n "[[" #'git-timemachine-show-previous-revision
|
||||||
|
:n "]]" #'git-timemachine-show-next-revision
|
||||||
|
:n "q" #'git-timemachine-quit
|
||||||
|
:n "gb" #'git-timemachine-blame
|
||||||
:n "gtc" #'git-timemachine-show-commit))
|
:n "gtc" #'git-timemachine-show-commit))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,6 @@
|
||||||
(setq-hook! css-mode
|
(setq-hook! css-mode
|
||||||
comment-indent-function #'+css/comment-indent-new-line)
|
comment-indent-function #'+css/comment-indent-new-line)
|
||||||
|
|
||||||
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
|
|
||||||
:localleader
|
|
||||||
"rb" #'+css/toggle-inline-or-block)
|
|
||||||
|
|
||||||
(after! (:any css-mode sass-mode)
|
(after! (:any css-mode sass-mode)
|
||||||
(set-docsets! '(css-mode scss-mode sass-mode)
|
(set-docsets! '(css-mode scss-mode sass-mode)
|
||||||
"CSS" "HTML" "Bourbon" "Compass"
|
"CSS" "HTML" "Bourbon" "Compass"
|
||||||
|
@ -37,7 +33,30 @@
|
||||||
;; DEPRECATED css-mode's built in completion is superior in 26+
|
;; DEPRECATED css-mode's built in completion is superior in 26+
|
||||||
'company-capf
|
'company-capf
|
||||||
'company-css))
|
'company-css))
|
||||||
(map! :map scss-mode-map :localleader "b" #'+css/scss-build))
|
|
||||||
|
(map! :localleader
|
||||||
|
:map scss-mode-map
|
||||||
|
"b" #'+css/scss-build
|
||||||
|
:map (css-mode-map scss-mode-map less-css-mode-map)
|
||||||
|
"rb" #'+css/toggle-inline-or-block)
|
||||||
|
|
||||||
|
(use-package! counsel-css
|
||||||
|
:when (featurep! :completion ivy)
|
||||||
|
:commands counsel-css
|
||||||
|
:hook (css-mode . counsel-css-imenu-setup)
|
||||||
|
:init
|
||||||
|
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
|
||||||
|
:localleader ";" #'counsel-css))
|
||||||
|
|
||||||
|
(use-package! helm-css-scss
|
||||||
|
:when (featurep! :completion helm)
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
|
||||||
|
:localleader ";" #'helm-css-scss)
|
||||||
|
:config
|
||||||
|
(setq helm-css-scss-split-direction #'split-window-vertically
|
||||||
|
helm-css-scss-split-with-multiple-windows t)))
|
||||||
|
|
||||||
|
|
||||||
(after! sass-mode
|
(after! sass-mode
|
||||||
|
@ -51,23 +70,3 @@
|
||||||
(when (featurep! +lsp)
|
(when (featurep! +lsp)
|
||||||
(add-hook! '(css-mode-hook sass-mode-hook less-css-mode-hook)
|
(add-hook! '(css-mode-hook sass-mode-hook less-css-mode-hook)
|
||||||
#'lsp!))
|
#'lsp!))
|
||||||
|
|
||||||
|
|
||||||
(use-package! counsel-css
|
|
||||||
:when (featurep! :completion ivy)
|
|
||||||
:commands counsel-css
|
|
||||||
:hook (css-mode . counsel-css-imenu-setup)
|
|
||||||
:init
|
|
||||||
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
|
|
||||||
:localleader ";" #'counsel-css))
|
|
||||||
|
|
||||||
|
|
||||||
(use-package! helm-css-scss
|
|
||||||
:when (featurep! :completion helm)
|
|
||||||
:defer t
|
|
||||||
:init
|
|
||||||
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
|
|
||||||
:localleader ";" #'helm-css-scss)
|
|
||||||
:config
|
|
||||||
(setq helm-css-scss-split-direction #'split-window-vertically
|
|
||||||
helm-css-scss-split-with-multiple-windows t))
|
|
||||||
|
|
|
@ -34,6 +34,14 @@ errors.")
|
||||||
(ignore-errors (flycheck-buffer))
|
(ignore-errors (flycheck-buffer))
|
||||||
nil)))
|
nil)))
|
||||||
|
|
||||||
|
(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
|
||||||
|
:n [return] #'flycheck-error-list-goto-error)
|
||||||
|
|
||||||
(global-flycheck-mode +1))
|
(global-flycheck-mode +1))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,12 @@ e.g. proselint and langtool."
|
||||||
|
|
||||||
;; Ensure mode-local predicates declared with `set-flyspell-predicate!' are
|
;; Ensure mode-local predicates declared with `set-flyspell-predicate!' are
|
||||||
;; used in their respective major modes.
|
;; used in their respective major modes.
|
||||||
(add-hook 'flyspell-mode-hook #'+flyspell-init-predicate-h))
|
(add-hook 'flyspell-mode-hook #'+flyspell-init-predicate-h)
|
||||||
|
|
||||||
|
(map! :map flyspell-mouse-map
|
||||||
|
"RET" #'flyspell-correct-word-generic
|
||||||
|
[return] #'flyspell-correct-word-generic
|
||||||
|
[mouse-1] #'flyspell-correct-word-generic))
|
||||||
|
|
||||||
|
|
||||||
(use-package! flyspell-correct
|
(use-package! flyspell-correct
|
||||||
|
|
|
@ -13,4 +13,16 @@
|
||||||
:around #'gist-list-render
|
:around #'gist-list-render
|
||||||
(funcall orig-fn (car args) t)
|
(funcall orig-fn (car args) t)
|
||||||
(unless (cadr args)
|
(unless (cadr args)
|
||||||
(pop-to-buffer (current-buffer)))))
|
(pop-to-buffer (current-buffer))))
|
||||||
|
|
||||||
|
(map! :map gist-list-menu-mode-map
|
||||||
|
:n "go" #'gist-browse-current-url
|
||||||
|
:n "gr" #'gist-list-reload
|
||||||
|
:n "c" #'gist-add-buffer
|
||||||
|
:n "d" #'gist-kill-current
|
||||||
|
:n "e" #'gist-edit-current-description
|
||||||
|
:n "f" #'gist-fork
|
||||||
|
:n "q" #'kill-current-buffer
|
||||||
|
:n "s" #'gist-star
|
||||||
|
:n "S" #'gist-unstar
|
||||||
|
:n "y" #'gist-print-current-url))
|
||||||
|
|
|
@ -47,7 +47,35 @@
|
||||||
(defun +neotree-fix-cursor-h (&rest _)
|
(defun +neotree-fix-cursor-h (&rest _)
|
||||||
(with-current-buffer neo-global--buffer
|
(with-current-buffer neo-global--buffer
|
||||||
(+neotree--indent-cursor-a))))
|
(+neotree--indent-cursor-a))))
|
||||||
|
|
||||||
(defadvice! +neotree--indent-cursor-a (&rest _)
|
(defadvice! +neotree--indent-cursor-a (&rest _)
|
||||||
:after '(neotree-next-line neotree-previous-line)
|
:after '(neotree-next-line neotree-previous-line)
|
||||||
(beginning-of-line)
|
(beginning-of-line)
|
||||||
(skip-chars-forward " \t\r")))
|
(skip-chars-forward " \t\r"))
|
||||||
|
|
||||||
|
(map! :map neotree-mode-map
|
||||||
|
:n "g" nil
|
||||||
|
:n "TAB" #'neotree-quick-look
|
||||||
|
:n "RET" #'neotree-enter
|
||||||
|
:n [tab] #'neotree-quick-look
|
||||||
|
:n [return] #'neotree-enter
|
||||||
|
:n "DEL" #'evil-window-prev
|
||||||
|
:n "c" #'neotree-create-node
|
||||||
|
:n "r" #'neotree-rename-node
|
||||||
|
:n "d" #'neotree-delete-node
|
||||||
|
:n "j" #'neotree-next-line
|
||||||
|
:n "k" #'neotree-previous-line
|
||||||
|
:n "n" #'neotree-next-line
|
||||||
|
:n "p" #'neotree-previous-line
|
||||||
|
:n "h" #'+neotree/collapse-or-up
|
||||||
|
:n "l" #'+neotree/expand-or-open
|
||||||
|
:n "J" #'neotree-select-next-sibling-node
|
||||||
|
:n "K" #'neotree-select-previous-sibling-node
|
||||||
|
:n "H" #'neotree-select-up-node
|
||||||
|
:n "L" #'neotree-select-down-node
|
||||||
|
:n "G" #'evil-goto-line
|
||||||
|
:n "gg" #'evil-goto-first-line
|
||||||
|
:n "v" #'neotree-enter-vertical-split
|
||||||
|
:n "s" #'neotree-enter-horizontal-split
|
||||||
|
:n "q" #'neotree-hide
|
||||||
|
:n "R" #'neotree-refresh))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue