From d6c34826635035f68137fdc3de6c87440bd5d55f Mon Sep 17 00:00:00 2001 From: Atemu Date: Sat, 27 Aug 2022 10:46:04 +0200 Subject: [PATCH] compleseus: disable ido and respect minibuffer binds evilification setting (#15710) * compleseus: disable ido-mode when vertico and selectrum are used ido would inject inself instead of the regular `find-file' but if these are activated, we actually want the regular `find-file'. * core: provide minibuffer evilification predicate Many different layers need to decide whether to evilify their minibuffer maps. Provide a single function that puts the logic in one place. * compleseus: only evilify minibuffer binds when desired --- core/core-dotspacemacs.el | 6 ++++ layers/+completion/compleseus/packages.el | 43 +++++++++++++---------- layers/+lang/emacs-lisp/funcs.el | 4 +-- layers/+source-control/git/funcs.el | 6 ---- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/core/core-dotspacemacs.el b/core/core-dotspacemacs.el index 8d76f1ab6..4eeeae5f7 100644 --- a/core/core-dotspacemacs.el +++ b/core/core-dotspacemacs.el @@ -198,6 +198,12 @@ in `dotspacemacs-themes'.") (const hybrid) (cons symbol sexp)) 'spacemacs-dotspacemacs-init) +(defun spacemacs//support-evilified-buffer-p () + "Return non-nil if evil navigation should be enabled." + (or (eq dotspacemacs-editing-style 'vim) + (and (eq dotspacemacs-editing-style 'hybrid) + hybrid-style-enable-evilified-state))) + (spacemacs|defc dotspacemacs-startup-banner 'official "Specify the startup banner. Default value is `official', it displays the official spacemacs logo. An integer value is the index of text diff --git a/layers/+completion/compleseus/packages.el b/layers/+completion/compleseus/packages.el index e13e22cb3..d0d4da991 100644 --- a/layers/+completion/compleseus/packages.el +++ b/layers/+completion/compleseus/packages.el @@ -310,18 +310,22 @@ (defun compleseus/init-selectrum () (use-package selectrum :init + ;; Disable ido. We want to use the regular find-file etc.; enhanced by selectrum + (setq ido-mode nil) + (selectrum-mode) (spacemacs/set-leader-keys "rl" 'selectrum-repeat "sl" 'selectrum-repeat) + :config - ;; TODO can we just use `minibuffer-mode-map'? - (define-key selectrum-minibuffer-map (kbd "C-j") 'selectrum-next-candidate) - (define-key selectrum-minibuffer-map (kbd "C-r") 'consult-history) - (define-key selectrum-minibuffer-map (kbd "C-k") 'selectrum-previous-candidate) - (define-key selectrum-minibuffer-map (kbd "C-M-k") #'spacemacs/selectrum-previous-candidate-preview) - (define-key selectrum-minibuffer-map (kbd "C-M-j") #'spacemacs/selectrum-next-candidate-preview) - (define-key selectrum-minibuffer-map (kbd "C-SPC") #'spacemacs/embark-preview))) + (when (spacemacs//support-evilified-buffer-p) + (define-key selectrum-minibuffer-map (kbd "C-j") 'selectrum-next-candidate) + (define-key selectrum-minibuffer-map (kbd "C-r") 'consult-history) + (define-key selectrum-minibuffer-map (kbd "C-k") 'selectrum-previous-candidate) + (define-key selectrum-minibuffer-map (kbd "C-M-k") #'spacemacs/selectrum-previous-candidate-preview) + (define-key selectrum-minibuffer-map (kbd "C-M-j") #'spacemacs/selectrum-next-candidate-preview) + (define-key selectrum-minibuffer-map (kbd "C-SPC") #'spacemacs/embark-preview)))) (defun compleseus/init-vertico () (use-package vertico @@ -352,18 +356,22 @@ vertico-count 20 vertico-cycle nil) + ;; Disable ido. We want to use the regular find-file etc.; enhanced by vertico + (setq ido-mode nil) + (vertico-mode) :config - (define-key vertico-map (kbd "M-RET") #'vertico-exit-input) - (define-key vertico-map (kbd "C-SPC") #'spacemacs/embark-preview) - (define-key vertico-map (kbd "C-j") #'vertico-next) - (define-key vertico-map (kbd "C-M-j") #'spacemacs/next-candidate-preview) - (define-key vertico-map (kbd "C-S-j") #'vertico-next-group) - (define-key vertico-map (kbd "C-k") #'vertico-previous) - (define-key vertico-map (kbd "C-M-k") #'spacemacs/previous-candidate-preview) - (define-key vertico-map (kbd "C-S-k") #'vertico-previous-group) - (define-key vertico-map (kbd "C-r") #'consult-history))) + (when (spacemacs//support-evilified-buffer-p) + (define-key vertico-map (kbd "M-RET") #'vertico-exit-input) + (define-key vertico-map (kbd "C-SPC") #'spacemacs/embark-preview) + (define-key vertico-map (kbd "C-j") #'vertico-next) + (define-key vertico-map (kbd "C-M-j") #'spacemacs/next-candidate-preview) + (define-key vertico-map (kbd "C-S-j") #'vertico-next-group) + (define-key vertico-map (kbd "C-k") #'vertico-previous) + (define-key vertico-map (kbd "C-M-k") #'spacemacs/previous-candidate-preview) + (define-key vertico-map (kbd "C-S-k") #'vertico-previous-group) + (define-key vertico-map (kbd "C-r") #'consult-history)))) (defun compleseus/init-vertico-quick () (use-package vertico-quick @@ -386,8 +394,7 @@ (defun compleseus/init-vertico-directory () (use-package vertico-directory ;; More convenient directory navigation commands - :bind (:map vertico-map - ("C-h" . vertico-directory-delete-char)) + :init (bind-key "C-h" 'vertico-directory-delete-char vertico-map (spacemacs//support-evilified-buffer-p)) ;; Tidy shadowed file names :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))) diff --git a/layers/+lang/emacs-lisp/funcs.el b/layers/+lang/emacs-lisp/funcs.el index f5432596b..123b159fc 100644 --- a/layers/+lang/emacs-lisp/funcs.el +++ b/layers/+lang/emacs-lisp/funcs.el @@ -72,9 +72,7 @@ Unlike `eval-defun', this does not go to topmost function." (defun spacemacs//edebug-mode (&rest args) "Additional processing when `edebug-mode' is activated or deactivated." - (let ((evilified? (or (eq 'vim dotspacemacs-editing-style) - (and (eq 'hybrid dotspacemacs-editing-style) - hybrid-style-enable-evilified-state)))) + (let ((evilified? (spacemacs//support-evilified-buffer-p))) (if (not edebug-mode) ;; disable edebug-mode (when evilified? (evil-evilified-state-exit)) diff --git a/layers/+source-control/git/funcs.el b/layers/+source-control/git/funcs.el index 701b1b661..d038a0c1b 100644 --- a/layers/+source-control/git/funcs.el +++ b/layers/+source-control/git/funcs.el @@ -73,12 +73,6 @@ (let (git-link-open-in-browser) (call-interactively 'git-link-commit))) -(defun spacemacs//support-evilified-buffer-p () - "Return non-nil if evil navigation should be enabled." - (or (eq dotspacemacs-editing-style 'vim) - (and (eq dotspacemacs-editing-style 'hybrid) - hybrid-style-enable-evilified-state))) - ;; git blame transient state