emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 44ea8b5 166/399: counsel.el (counsel-git-grep-cmd-function


From: Oleh Krehel
Subject: [elpa] master 44ea8b5 166/399: counsel.el (counsel-git-grep-cmd-function): Add
Date: Sat, 20 Jul 2019 14:57:16 -0400 (EDT)

branch: master
commit 44ea8b5edf7115269db21987ba812bb68e4b078b
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    counsel.el (counsel-git-grep-cmd-function): Add
    
    Fixes #2011
---
 counsel.el | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/counsel.el b/counsel.el
index e1a733c..a883c7e 100644
--- a/counsel.el
+++ b/counsel.el
@@ -1286,13 +1286,31 @@ INITIAL-INPUT can be given as the initial minibuffer 
input."
 Typical value: '(recenter)."
   :type 'hook)
 
+(defcustom counsel-git-grep-cmd-function 
#'counsel-git-grep-cmd-function-default
+  "How a git-grep shell call is built from the input."
+  :type '(radio
+          (function-item counsel-git-grep-cmd-function-default)
+          (function-item counsel-git-grep-cmd-function-ignore-order)
+          (function :tag "Other")))
+
+(defun counsel-git-grep-cmd-function-default (str)
+  (format counsel-git-grep-cmd
+          (setq ivy--old-re (ivy--regex str t))))
+
+(defun counsel-git-grep-cmd-function-ignore-order (str)
+  (setq ivy--old-re (ivy--regex str t))
+  (let ((parts (split-string str " " t)))
+    (concat
+     "git --no-pager grep --full-name -n --no-color -i -e "
+     (mapconcat #'shell-quote-argument parts " --and -e "))))
+
 (defun counsel-git-grep-function (string)
   "Grep in the current Git repository for STRING."
   (or
    (ivy-more-chars)
-   (let ((cmd (format counsel-git-grep-cmd
-                      (setq ivy--old-re (ivy--regex string t)))))
-     (counsel--async-command cmd)
+   (progn
+     (counsel--async-command
+      (funcall counsel-git-grep-cmd-function string))
      nil)))
 
 (defun counsel-git-grep-action (x)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]