]> code.delx.au - gnu-emacs-elpa/commitdiff
counsel.el (counsel-git-grep-map): Bind "C-c C-m" to counsel-git-grep-switch-cmd
authorOleh Krehel <ohwoeowho@gmail.com>
Mon, 7 Mar 2016 16:40:49 +0000 (17:40 +0100)
committerOleh Krehel <ohwoeowho@gmail.com>
Mon, 7 Mar 2016 16:40:49 +0000 (17:40 +0100)
* counsel.el (counsel-git-grep-switch-cmd): New command.

The initial command always runs on all files.

To run only on *.el files, "C-c C-m" followed by "M-i" -- *.el.
To run on *.c and *.h files, "C-c C-m" followed by "M-i" -- *.c *.h.
To switch to all files again, "C-c C-m" and select the appropriate
entry.

Re #420

counsel.el

index f1ede40921897541305cded5822f818b8e0de086..2c6c54c98ea125ce98297ef1ce06a62cb9334edd 100644 (file)
@@ -683,6 +683,7 @@ Describe the selected candidate."
   (let ((map (make-sparse-keymap)))
     (define-key map (kbd "C-l") 'counsel-git-grep-recenter)
     (define-key map (kbd "M-q") 'counsel-git-grep-query-replace)
+    (define-key map (kbd "C-c C-m") 'counsel-git-grep-switch-cmd)
     map))
 
 (ivy-set-occur 'counsel-git-grep 'counsel-git-grep-occur)
@@ -800,6 +801,18 @@ INITIAL-INPUT can be given as the initial minibuffer input."
               :history 'counsel-git-grep-history
               :caller 'counsel-git-grep)))
 
+(defun counsel-git-grep-switch-cmd ()
+  "Set `counsel-git-grep-cmd' to a different value."
+  (interactive)
+  (setq counsel-git-grep-cmd
+        (ivy-read "cmd: " counsel-git-grep-cmd-history
+                  :history 'counsel-git-grep-cmd-history))
+  (setq counsel-git-grep-cmd-history
+        (delete-dups counsel-git-grep-cmd-history))
+  (unless (ivy-state-dynamic-collection ivy-last)
+    (setq ivy--all-candidates
+          (all-completions "" 'counsel-git-grep-function))))
+
 (defvar counsel-gg-state nil
   "The current state of candidates / count sync.")