diff --git a/evil-collection.el b/evil-collection.el index c97ab96..1e5818c 100644 --- a/evil-collection.el +++ b/evil-collection.el @@ -240,6 +240,7 @@ This will bind additional find-* type commands, e.g. usages, assignments, etc.." rtags ruby-mode scroll-lock + selectrum sh-script ,@(when (>= emacs-major-version 28) '(shortdoc)) simple diff --git a/modes/selectrum/evil-collection-selectrum.el b/modes/selectrum/evil-collection-selectrum.el new file mode 100644 index 0000000..b4e43b1 --- /dev/null +++ b/modes/selectrum/evil-collection-selectrum.el @@ -0,0 +1,67 @@ +;;; evil-collection-selectrum.el --- Evil bindings for Selectrum -*- lexical-binding: t -*- + +;; Copyright (C) 2021 Balaji Sivaraman + +;; Author: Balaji Sivaraman +;; Maintainer: Balaji Sivaraman +;; Pierre Neidhardt +;; URL: https://github.com/emacs-evil/evil-collection +;; Version: 0.0.1 +;; Package-Requires: ((emacs "25.1")) +;; Keywords: evil, tools + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: +;; Evil bindings for Selectrum. + +;;; Code: + +(require 'evil-collection) +(require 'selectrum nil t) + +(defconst evil-collection-selectrum-maps '(selectrum-minibuffer-map)) + +;;;###autoload +(defun evil-collection-selectrum-setup () + "Set up `evil' bindings for `selectrum-mode'." + + (defvar evil-collection-setup-minibuffer) + (when evil-collection-setup-minibuffer + (evil-collection-define-key '(insert normal) 'selectrum-minibuffer-map + (kbd "C-b") 'selectrum-previous-page + (kbd "C-f") 'selectrum-next-page + (kbd "M-RET") 'selectrum-submit-exact-input + (kbd "") 'selectrum-select-current-candidate) + + (evil-collection-define-key 'insert 'selectrum-minibuffer-map + (kbd "C-j") 'selectrum-next-candidate + (kbd "C-k") 'selectrum-previous-candidate + (kbd "C-n") 'selectrum-next-candidate + (kbd "C-p") 'selectrum-previous-candidate) + + (evil-collection-define-key 'normal 'selectrum-minibuffer-map + (kbd "j") 'selectrum-next-candidate + (kbd "k") 'selectrum-previous-candidate) + + (when evil-want-C-u-scroll + (evil-collection-define-key '(insert normal) 'selectrum-minibuffer-map + (kbd "C-u") 'selectrum-previous-page)) + + (when evil-want-C-d-scroll + (evil-collection-define-key '(insert normal) 'selectrum-minibuffer-map + (kbd "C-d") 'selectrum-next-page)))) + +(provide 'evil-collection-selectrum) +;;; evil-collection-selectrum.el ends here