ag.el
changeset 1496 4b336f352950
parent 1493 d242edfd1321
child 1498 e8ad022540d4
equal deleted inserted replaced
1495:d76487c37e61 1496:4b336f352950
    77     (erase-buffer)
    77     (erase-buffer)
    78     (my/ag-mode))
    78     (my/ag-mode))
    79   (display-buffer my/ag-buffer))
    79   (display-buffer my/ag-buffer))
    80 
    80 
    81 (defun my/ag-run (regex)
    81 (defun my/ag-run (regex)
    82   (make-process
    82   (let ( (default-directory (buffer-local-value 'default-directory my/ag-buffer)) )
    83    :name "ag"
    83     (make-process
    84    :buffer my/ag-buffer
    84      :name "ag"
    85    :filter 'my/ag-filter
    85      :buffer my/ag-buffer
    86    :command (list "ag" "--group" "--nocolor" regex)))
    86      :filter 'my/ag-filter
       
    87      :command (list "ag" "--group" "--nocolor" regex))))
       
    88 
       
    89 (defun my/ag-project-root ()
       
    90   (let ( (backend (vc-responsible-backend default-directory)) )
       
    91     (if backend
       
    92         (condition-case err
       
    93             (vc-call-backend backend 'root default-directory)
       
    94           (vc-not-supported
       
    95            (unless (eq (cadr err) 'root)
       
    96              (signal (car err) (cdr err)))
       
    97            nil))
       
    98       default-directory)))
    87 
    99 
    88 ;;;###autoload
   100 ;;;###autoload
    89 (defun my/ag (regex)
   101 (defun my/ag (regex)
    90   (interactive
   102   (interactive
    91    (let* ( (def (when my/ag-regex-history (car my/ag-regex-history)))
   103    (let* ( (def (when my/ag-regex-history (car my/ag-regex-history)))
    93                                def
   105                                def
    94                              (concat (substring def 0 20) "...")))) )
   106                              (concat (substring def 0 20) "...")))) )
    95      (list (read-string
   107      (list (read-string
    96             (if part (format "Regex [%s]: " part) "Regex: ")
   108             (if part (format "Regex [%s]: " part) "Regex: ")
    97             ""  'my/ag-regex-history  def  t))))
   109             ""  'my/ag-regex-history  def  t))))
    98   (my/ag-setup-buffer (if current-prefix-arg default-directory (or (ignore-errors (vc-root-dir)) default-directory)))
   110   (my/ag-setup-buffer (if current-prefix-arg default-directory (my/ag-project-root)))
    99   (my/ag-run regex))
   111   (my/ag-run regex))
   100 
   112 
   101 (provide 'ag)
   113 (provide 'ag)
   102 
   114 
   103 ;;; ag.el ends here
   115 ;;; ag.el ends here