aboutsummaryrefslogtreecommitdiff
path: root/.config/emacs/lisp/evil-collection/modes/rg
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/lisp/evil-collection/modes/rg')
-rw-r--r--.config/emacs/lisp/evil-collection/modes/rg/README.org47
-rw-r--r--.config/emacs/lisp/evil-collection/modes/rg/evil-collection-rg.el91
2 files changed, 138 insertions, 0 deletions
diff --git a/.config/emacs/lisp/evil-collection/modes/rg/README.org b/.config/emacs/lisp/evil-collection/modes/rg/README.org
new file mode 100644
index 0000000..677010c
--- /dev/null
+++ b/.config/emacs/lisp/evil-collection/modes/rg/README.org
@@ -0,0 +1,47 @@
+* rg
+
+ Evil bindings for [[https://github.com/dajva/rg.el][rg.el]] (ripgrep) result buffers.
+
+ Initial state for =rg-mode= is forced to =normal=. Bindings cover
+ =normal=, =motion=, and =visual= states so that evil motion overrides
+ conflicting single-letter rg commands.
+
+** Key bindings
+
+*** normal state
+
+ | Command | Original | Evil |
+ |--------------------------------+-----------+-------------|
+ | =rg-rerun-toggle-case= | =c= | =c= |
+ | =rg-rerun-change-dir= | =d= | =d= |
+ | =rg-rerun-change-files= | =f= | =f= |
+ | =rg-rerun-toggle-ignore= | =i= | =I= |
+ | =rg-rerun-change-regexp= | =r= | =r= |
+ | =rg-rerun-change-literal= | =t= | =t= |
+ | =rg-save-search= | =s= | =s= |
+ | =rg-save-search-as-name= | =S= | =S= |
+ | =rg-menu= | =m= | =m= |
+ | =wgrep-change-to-wgrep-mode= | =e= | =i= |
+ | =next-error-follow-minor-mode= | =C-c C-f= | =F= |
+ | =rg-list-searches= | =L= | =L= |
+ | =rg-back-history= | =C-c <= | =C-p= |
+ | =rg-forward-history= | =C-c >= | =C-n= |
+ | =rg-prev-file= | =M-P= | ={= |
+ | =rg-next-file= | =M-N= | =}= |
+ | =previous-error-no-select= | =p= | =gk=, =C-k= |
+ | =next-error-no-select= | =n= | =gj=, =C-j= |
+ | =evil-forward-word-end= | | =e= |
+ | =evil-forward-char= | | =l= |
+ | =evil-forward-word-begin= | | =w= |
+ | =evil-goto-first-line= | | =gg= |
+ | =rg-recompile= | =g= | =gr= |
+ | =quit-window= | | =q= |
+
+*** motion / visual states
+
+ | Command | Evil |
+ |---------------------------+------|
+ | =evil-forward-word-end= | =e= |
+ | =evil-forward-char= | =l= |
+ | =evil-forward-word-begin= | =w= |
+ | =evil-goto-first-line= | =gg= |
diff --git a/.config/emacs/lisp/evil-collection/modes/rg/evil-collection-rg.el b/.config/emacs/lisp/evil-collection/modes/rg/evil-collection-rg.el
new file mode 100644
index 0000000..af20fb7
--- /dev/null
+++ b/.config/emacs/lisp/evil-collection/modes/rg/evil-collection-rg.el
@@ -0,0 +1,91 @@
+;;; evil-collection-rg.el --- Evil bindings for rg -*- lexical-binding: t -*-
+
+;; Copyright (C) 2020 Zhiwei Chen
+
+;; Author: Zhiwei Chen <condy0919@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.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, rg, 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 rg.
+
+;;; Code:
+(require 'evil-collection)
+(require 'rg nil t)
+
+(defconst evil-collection-rg-maps '(rg-mode-map))
+
+;;;###autoload
+(defun evil-collection-rg-setup ()
+ "Set up `evil' bindings for `rg'."
+ (evil-set-initial-state 'rg-mode 'normal)
+
+ (evil-collection-define-key 'normal 'rg-mode-map
+ ;; rerun
+ "c" 'rg-rerun-toggle-case
+ "d" 'rg-rerun-change-dir
+ "f" 'rg-rerun-change-files
+ "I" 'rg-rerun-toggle-ignore ;; was i
+ "r" 'rg-rerun-change-regexp
+ "t" 'rg-rerun-change-literal
+
+ ;; save
+ "s" 'rg-save-search
+ "S" 'rg-save-search-as-name
+
+ ;; action
+ "m" 'rg-menu
+ "i" 'wgrep-change-to-wgrep-mode ;; was w/e
+ "F" 'next-error-follow-minor-mode ;; C-c C-f
+ "L" 'rg-list-searches ;; was l
+ (kbd "C-p") 'rg-back-history ;; C-c <
+ (kbd "C-n") 'rg-forward-history ;; C-c >
+
+ ;; navigation
+ "{" 'rg-prev-file
+ "}" 'rg-next-file
+ "gk" 'previous-error-no-select
+ "gj" 'next-error-no-select
+ (kbd "C-k") 'previous-error-no-select
+ (kbd "C-j") 'next-error-no-select
+
+ "e" 'evil-forward-word-end ;; shadows wgrep-change-to-wgrep-mode
+ "l" 'evil-forward-char ;; shadows rg-list-searches
+ "w" 'evil-forward-word-begin ;; shadows wgrep-change-to-wgrep-mode
+ "gg" 'evil-goto-first-line
+ "gr" 'rg-recompile
+
+ ;; quit
+ "q" 'quit-window)
+
+ (evil-collection-define-key 'motion 'rg-mode-map
+ "e" 'evil-forward-word-end ;; shadows wgrep-change-to-wgrep-mode
+ "l" 'evil-forward-char ;; shadows rg-list-searches
+ "w" 'evil-forward-word-begin ;; shadows wgrep-change-to-wgrep-mode
+ "gg" 'evil-goto-first-line)
+
+ (evil-collection-define-key 'visual 'rg-mode-map
+ "e" 'evil-forward-word-end ;; shadows wgrep-change-to-wgrep-mode
+ "l" 'evil-forward-char ;; shadows rg-list-searches
+ "w" 'evil-forward-word-begin ;; shadows wgrep-change-to-wgrep-mode
+ "gg" 'evil-goto-first-line))
+
+(provide 'evil-collection-rg)
+;;; evil-collection-rg.el ends here