# HG changeset patch # User Oleksandr Gavenko # Date 1487830761 -7200 # Node ID 4b336f352950dd1a114720fcb03262864f472f34 # Parent d76487c37e61be441e429f742bad8eb0c82164fe (vc-root-dir) selectively work depending on buffer mode. I need root based on default-directory... Fix: switch to necessary directory before running process. diff -r d76487c37e61 -r 4b336f352950 ag.el --- a/ag.el Thu Feb 23 07:35:48 2017 +0200 +++ b/ag.el Thu Feb 23 08:19:21 2017 +0200 @@ -79,11 +79,23 @@ (display-buffer my/ag-buffer)) (defun my/ag-run (regex) - (make-process - :name "ag" - :buffer my/ag-buffer - :filter 'my/ag-filter - :command (list "ag" "--group" "--nocolor" regex))) + (let ( (default-directory (buffer-local-value 'default-directory my/ag-buffer)) ) + (make-process + :name "ag" + :buffer my/ag-buffer + :filter 'my/ag-filter + :command (list "ag" "--group" "--nocolor" regex)))) + +(defun my/ag-project-root () + (let ( (backend (vc-responsible-backend default-directory)) ) + (if backend + (condition-case err + (vc-call-backend backend 'root default-directory) + (vc-not-supported + (unless (eq (cadr err) 'root) + (signal (car err) (cdr err))) + nil)) + default-directory))) ;;;###autoload (defun my/ag (regex) @@ -95,7 +107,7 @@ (list (read-string (if part (format "Regex [%s]: " part) "Regex: ") "" 'my/ag-regex-history def t)))) - (my/ag-setup-buffer (if current-prefix-arg default-directory (or (ignore-errors (vc-root-dir)) default-directory))) + (my/ag-setup-buffer (if current-prefix-arg default-directory (my/ag-project-root))) (my/ag-run regex)) (provide 'ag)