Give config/default keybinds higher precedence

This is highly experimental! It gives keybinds bound with `map!` much
higher precedence, allowing it to override the defaults imposed by
major modes and plugins (like evil-collection).
This commit is contained in:
Henrik Lissner 2018-03-21 22:26:56 -04:00
parent 69da6da541
commit abe42fcb9a
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 19 additions and 35 deletions

View file

@ -10,6 +10,14 @@
(defvar doom-localleader-key "SPC m" (defvar doom-localleader-key "SPC m"
"The localleader prefix key, for major-mode specific commands.") "The localleader prefix key, for major-mode specific commands.")
(defvar doom-mode-map (make-sparse-keymap)
"TODO")
(define-minor-mode doom-mode
"TODO"
:global t
:init-value t)
(defvar doom-evil-state-alist (defvar doom-evil-state-alist
'((?n . normal) '((?n . normal)
(?v . visual) (?v . visual)
@ -300,17 +308,19 @@ Example
(unless (featurep 'evil) (unless (featurep 'evil)
(throw 'skip 'evil)) (throw 'skip 'evil))
(dolist (state states) (dolist (state states)
(push `(define-key (push (if (eq state 'global)
,(if (eq state 'global) `(define-key doom-mode-map ,key ,def)
'(current-global-map) (if doom--local
(intern (format "evil-%s-state-%smap" state (if doom--local "local-" "")))) `(evil-local-set-key ',state ,key ,def)
,key ,def) `(evil-define-key* ',state doom-mode-map ,key ,def)))
forms))) forms)))
(doom--keymaps (doom--keymaps
(dolist (keymap doom--keymaps) (dolist (keymap doom--keymaps)
(push `(define-key ,keymap ,key ,def) forms))) (push `(define-key ,keymap ,key ,def) forms)))
(t (t
(push `(,(if doom--local #'local-set-key #'global-set-key) ,key ,def) (push (if doom--local
`(local-set-key ,key ,def)
`(define-key doom-mode-map ,key ,def))
forms)))) forms))))
(setq states '() (setq states '()
doom--local nil doom--local nil

View file

@ -733,32 +733,3 @@
(:after view (:after view
(:map view-mode-map "<escape>" #'View-quit-all))) (:map view-mode-map "<escape>" #'View-quit-all)))
;;
;; Evil-collection mods
;;
;; TODO find a better way
(when (featurep 'evil-collection)
;; don't interfere with leader key
(evil-define-key* '(normal visual) special-mode-map (kbd doom-leader-key) nil)
(after! dired
(evil-define-key* 'normal dired-mode-map (kbd doom-leader-key) nil))
;; Don't rebind Doom's keybinds
(after! alchemist
(evil-define-key* 'normal alchemist-mode-map "gd" nil "K" nil "gz" nil))
(after! anaconda-mode
(evil-define-key* 'normal anaconda-mode-map "gd" nil "K" nil))
(after! compile
(evil-define-key* '(normal visual) compilation-mode-map "gd" nil "K" nil))
(after! cider
(evil-define-key* '(normal visual) cider-mode-map "gd" nil "K" nil))
(after! go-mode
(evil-define-key* 'normal go-mode-map "gd" nil "K" nil))
(after! lua-mode
(evil-define-key* 'normal lua-mode-map "K" nil))
(after! outline
(evil-define-key* 'normal outline-mode-map "\C-j" nil "\C-k" nil))
(after! racer
(evil-define-key* 'normal racer-mode-map "gd" nil "K" nil)))

View file

@ -63,6 +63,9 @@
(add-hook 'doom-init-hook #'evil-mode) (add-hook 'doom-init-hook #'evil-mode)
(evil-select-search-module 'evil-search-module 'evil-search) (evil-select-search-module 'evil-search-module 'evil-search)
;; ensure `doom-mode-map' has high precedence
(evil-make-overriding-map doom-mode-map)
(set! :popup "^\\*evil-registers" '((size . 0.3))) (set! :popup "^\\*evil-registers" '((size . 0.3)))
(set! :popup "^\\*Command Line" '((size . 8))) (set! :popup "^\\*Command Line" '((size . 8)))