Prompt for extra ag options on C-u C-u.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Sun, 13 May 2018 00:30:35 +0300
changeset 1562 df57aca81e75
parent 1561 0876ef9be273
child 1563 bc9da63949f1
Prompt for extra ag options on C-u C-u.
ag.el
--- a/ag.el	Sun May 13 00:29:14 2018 +0300
+++ b/ag.el	Sun May 13 00:30:35 2018 +0300
@@ -80,13 +80,17 @@
     (my-ag-mode))
   (display-buffer my-ag/buffer))
 
-(defun my-ag/run (regex)
-  (let ( (default-directory (buffer-local-value 'default-directory my-ag/buffer)) )
+(defun my-ag/run (regex &optional args)
+  (let ((default-directory (buffer-local-value 'default-directory my-ag/buffer))
+        (cmd (list "ag" "--group" "--nocolor")))
+    (when args
+      (nconc cmd (split-string args)))
+    (nconc cmd (list "--" regex))
     (make-process
      :name "ag"
      :buffer my-ag/buffer
      :filter 'my-ag/filter
-     :command (list "ag" "--group" "--nocolor" regex))))
+     :command cmd)))
 
 (defun my-ag/project-root ()
   (condition-case err
@@ -106,13 +110,26 @@
      (if part (format "Regex [%s]: " part) "Regex: ")
      ""  'my-ag/regex-history  def  t)))
 
+(defvar my-ag/extra-history nil)
+
+(defun my-ag/read-extra ()
+  (let* ( (def (when my-ag/extra-history (car my-ag/extra-history)))
+          (part (when def (if (< (length def) 20)
+                              def
+                            (concat (substring def 0 20) "...")))) )
+    (read-string
+     (if part (format "Extra args [%s]: " part) "Extra args: ")
+     ""  'my-ag/extra-history  def  t)))
+
 ;;;###autoload
-(defun my-ag (regex)
+(defun my-ag (regex &optional args)
   "Search in 'ag' recursively from VCS root directory and fall to
 current directory if VCS root is not defined."
-  (interactive (list (my-ag/read-regex)))
+  (interactive (if (equal current-prefix-arg '(16))
+                   (list (my-ag/read-regex) (my-ag/read-extra))
+                 (list (my-ag/read-regex))))
   (my-ag/setup-buffer (if current-prefix-arg default-directory (my-ag/project-root)))
-  (my-ag/run regex))
+  (my-ag/run regex args))
 
 ;;;###autoload
 (defun my-ag-default-directory (regex)