diff -r 0876ef9be273 -r df57aca81e75 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)