diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-06-22 17:26:30 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-06-22 17:40:00 +0200 |
commit | d8e9953bf2266c48e01d99d95dfa6e7b6f32fcec (patch) | |
tree | 1754dc92b36f28c97919961aba643110805e82a7 /lisp/init-grep.el | |
parent | ca2a625e378f2946da39917280bb05d6f5f8224f (diff) |
grep: Use ripgrep
Diffstat (limited to 'lisp/init-grep.el')
-rw-r--r-- | lisp/init-grep.el | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/lisp/init-grep.el b/lisp/init-grep.el index 87444f7..621597d 100644 --- a/lisp/init-grep.el +++ b/lisp/init-grep.el @@ -2,6 +2,17 @@ ;;; Commentary: ;;; Code: +(defvar mpolden/rg-template "rg -nH --no-heading <C> -e <R> -- " + "The grep template use when rg (ripgrep) is installed.") + +(defun mpolden/grep () + "Run grep interactively in `default-directory' or current VC tree." + (interactive) + (let ((vc-root-dir (vc-root-dir))) + (if vc-root-dir + (vc-git-grep (grep-read-regexp) "" vc-root-dir) + (lgrep (grep-read-regexp) "" default-directory)))) + (defun mpolden/grep-visit-buffer-other-window (&optional result noselect) "Visit grep RESULT in another window. If NOSELECT is non-nil, do not select the window." @@ -18,13 +29,26 @@ If NOSELECT is non-nil, do not select the window." (use-package grep :commands grep-read-regexp - :bind (:map grep-mode-map - ;; make C-o and o behave as in dired - ("o" . mpolden/grep-visit-buffer-other-window) - ("C-o" . mpolden/grep-visit-buffer-other-window-noselect) - ;; n and p changes line as in ag-mode - ("n" . compilation-next-error) - ("p" . compilation-previous-error))) + :config + (when (executable-find "rg") + ;; never use null device with ripgrep + (setq grep-use-null-device nil) + (grep-apply-setting 'grep-template mpolden/rg-template)) + :bind (;; C-c g runs git grep in current vc tree + ("C-c g" . mpolden/grep) + :map grep-mode-map + ;; make C-o and o behave as in dired + ("o" . mpolden/grep-visit-buffer-other-window) + ("C-o" . mpolden/grep-visit-buffer-other-window-noselect) + ;; n and p changes line as in ag-mode + ("n" . compilation-next-error) + ("p" . compilation-previous-error))) + +(use-package vc-git + :commands vc-git-grep + :init + (when (executable-find "rg") + (setq vc-git-grep-template mpolden/rg-template))) (provide 'init-grep) |