From be38e39fccab7c2f8e86c59ffb9c022d3d5b9382 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 26 Dec 2019 15:38:53 +0200 Subject: [PATCH] project--find-regexp-in-files: Support remote files * lisp/progmodes/project.el (project--find-regexp-in-files): Support remote files (bug#34343). --- lisp/progmodes/project.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index e45cb5db127..d5920d10fcf 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -450,6 +450,9 @@ pattern to search for." (status nil) (hits nil) (xrefs nil) + ;; Support for remote files. + (dir (file-name-directory (car files))) + (remote-id (file-remote-p dir)) ;; 'git ls-files' can output broken symlinks. (command (format "xargs -0 grep %s -snHE -e %s" (if (and case-fold-search @@ -457,10 +460,13 @@ pattern to search for." "-i" "") (shell-quote-argument (xref--regexp-to-extended regexp))))) + (when remote-id + (setq files (mapcar #'file-local-name files))) (with-current-buffer output (erase-buffer) (with-temp-buffer (insert (mapconcat #'identity files "\0")) + (setq default-directory dir) (setq status (project--process-file-region (point-min) (point-max) @@ -478,7 +484,7 @@ pattern to search for." (buffer-substring (point-min) (line-end-position)))) (while (re-search-forward grep-re nil t) (push (list (string-to-number (match-string line-group)) - (match-string file-group) + (concat remote-id (match-string file-group)) (buffer-substring-no-properties (point) (line-end-position))) hits))) (setq xrefs (xref--convert-hits (nreverse hits) regexp)) -- 2.39.2