From 7a12ab5ea2257f8e9d3f4ba03918cf9709a728e1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 29 Apr 2020 18:58:42 +0300 Subject: [PATCH] Fix project.el commands in "transient" projects * lisp/progmodes/project.el (project--files-in-directory): Run local DIR directory names through 'expand-file-name', so that "~/" is expanded, in case the shell doesn't or the shell's notion of the home directory is different from that of Emacs. (Bug#40940) --- lisp/progmodes/project.el | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 1f4cbe96ad8..dbc967b8851 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -185,23 +185,27 @@ to find the list of ignores for each directory." (require 'find-dired) (require 'xref) (defvar find-name-arg) - (let ((default-directory dir) - (command (format "%s %s %s -type f %s -print0" - find-program - (file-local-name dir) - (xref--find-ignores-arguments - ignores - (expand-file-name dir)) - (if files - (concat (shell-quote-argument "(") - " " find-name-arg " " - (mapconcat - #'shell-quote-argument - (split-string files) - (concat " -o " find-name-arg " ")) - " " - (shell-quote-argument ")"))"") - ))) + (let* ((default-directory dir) + (dirname (file-remote-p dir 'localname)) + (dirname (or dirname + ;; Make sure ~/ etc. in local directory name is + ;; expanded and not left for the shell command + ;; to interpret. + (expand-file-name dir))) + (command (format "%s %s %s -type f %s -print0" + find-program + dirname + (xref--find-ignores-arguments ignores dirname) + (if files + (concat (shell-quote-argument "(") + " " find-name-arg " " + (mapconcat + #'shell-quote-argument + (split-string files) + (concat " -o " find-name-arg " ")) + " " + (shell-quote-argument ")"))"") + ))) (project--remote-file-names (sort (split-string (shell-command-to-string command) "\0" t) #'string<)))) -- 2.39.2