From abe42fcb9a18e81cf7b0be58526af253d305329a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 21 Mar 2018 22:26:56 -0400 Subject: [PATCH] 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). --- core/core-keybinds.el | 22 ++++++++++++++++------ modules/config/default/+bindings.el | 29 ----------------------------- modules/feature/evil/config.el | 3 +++ 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/core/core-keybinds.el b/core/core-keybinds.el index 39307e518..8b3634990 100644 --- a/core/core-keybinds.el +++ b/core/core-keybinds.el @@ -10,6 +10,14 @@ (defvar doom-localleader-key "SPC m" "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 '((?n . normal) (?v . visual) @@ -300,17 +308,19 @@ Example (unless (featurep 'evil) (throw 'skip 'evil)) (dolist (state states) - (push `(define-key - ,(if (eq state 'global) - '(current-global-map) - (intern (format "evil-%s-state-%smap" state (if doom--local "local-" "")))) - ,key ,def) + (push (if (eq state 'global) + `(define-key doom-mode-map ,key ,def) + (if doom--local + `(evil-local-set-key ',state ,key ,def) + `(evil-define-key* ',state doom-mode-map ,key ,def))) forms))) (doom--keymaps (dolist (keymap doom--keymaps) (push `(define-key ,keymap ,key ,def) forms))) (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)))) (setq states '() doom--local nil diff --git a/modules/config/default/+bindings.el b/modules/config/default/+bindings.el index d4d966854..ad1fa3a10 100644 --- a/modules/config/default/+bindings.el +++ b/modules/config/default/+bindings.el @@ -733,32 +733,3 @@ (:after view (:map view-mode-map "" #'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))) diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index bdde64a5e..45f473ed5 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -63,6 +63,9 @@ (add-hook 'doom-init-hook #'evil-mode) (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 "^\\*Command Line" '((size . 8)))