diff options
Diffstat (limited to '.config/emacs/lisp/evil-collection/modes/selectrum')
| -rw-r--r-- | .config/emacs/lisp/evil-collection/modes/selectrum/README.org | 43 | ||||
| -rw-r--r-- | .config/emacs/lisp/evil-collection/modes/selectrum/evil-collection-selectrum.el | 72 |
2 files changed, 115 insertions, 0 deletions
diff --git a/.config/emacs/lisp/evil-collection/modes/selectrum/README.org b/.config/emacs/lisp/evil-collection/modes/selectrum/README.org new file mode 100644 index 0000000..aafc019 --- /dev/null +++ b/.config/emacs/lisp/evil-collection/modes/selectrum/README.org @@ -0,0 +1,43 @@ +* selectrum + + Evil bindings for [[https://github.com/radian-software/selectrum][selectrum]], the incremental narrowing UI for the minibuffer. + + Bindings are installed only when =evil-collection-setup-minibuffer= is + non-nil. + +** Key bindings + +*** selectrum-minibuffer-map (insert and normal) + + | Command | Original | Evil | + |--------------------------------------+----------+---------| + | =selectrum-previous-page= | =M-v= | =C-b= | + | =selectrum-next-page= | =C-v= | =C-f= | + | =selectrum-submit-exact-input= | =C-j= | =M-RET= | + | =selectrum-select-current-candidate= | =RET= | =RET= | + | =selectrum-previous-page= | =M-v= | =C-u= | + | =selectrum-next-page= | =C-v= | =C-d= | + + =C-u= and =C-d= are added only when =evil-want-C-u-scroll= and + =evil-want-C-d-scroll= respectively are non-nil. + +*** selectrum-minibuffer-map (insert) + + | Command | Original | Evil | + |--------------------------------+----------+-------| + | =selectrum-next-candidate= | =C-n= | =C-j= | + | =selectrum-previous-candidate= | =C-p= | =C-k= | + | =selectrum-next-candidate= | =C-n= | =C-n= | + | =selectrum-previous-candidate= | =C-p= | =C-p= | + +*** selectrum-minibuffer-map (normal) + + | Command | Original | Evil | + |--------------------------------+----------+------| + | =selectrum-next-candidate= | n/a | =j= | + | =selectrum-previous-candidate= | n/a | =k= | + | =selectrum-next-group= | =C-q n= | =gj= | + | =selectrum-previous-group= | =C-q p= | =gk= | + | =selectrum-goto-beginning= | =M-<= | =gg= | + | =selectrum-goto-end= | =M->= | =G= | + | =selectrum-kill-ring-save= | =M-w= | =gy= | diff --git a/.config/emacs/lisp/evil-collection/modes/selectrum/evil-collection-selectrum.el b/.config/emacs/lisp/evil-collection/modes/selectrum/evil-collection-selectrum.el new file mode 100644 index 0000000..525e33d --- /dev/null +++ b/.config/emacs/lisp/evil-collection/modes/selectrum/evil-collection-selectrum.el @@ -0,0 +1,72 @@ +;;; evil-collection-selectrum.el --- Evil bindings for Selectrum -*- lexical-binding: t -*- + +;; Copyright (C) 2021 Balaji Sivaraman + +;; Author: Balaji Sivaraman <balaji@balajisivaraman.com> +;; Maintainer: Balaji Sivaraman <balaji@balajisivaraman.com> +;; Pierre Neidhardt <mail@ambrevar.xyz> +;; URL: https://github.com/emacs-evil/evil-collection +;; Version: 0.0.1 +;; Package-Requires: ((emacs "26.3")) +;; 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 <http://www.gnu.org/licenses/>. + +;;; 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 "<return>") '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 + (kbd "gj") 'selectrum-next-group + (kbd "gk") 'selectrum-previous-group + (kbd "G") 'selectrum-goto-end + (kbd "gg") 'selectrum-goto-beginning + (kbd "gy") 'selectrum-kill-ring-save) + + (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 |
