From 665b4e7c4e093391a353506e7b2385f0902db70b Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Wed, 6 Jan 2021 19:41:55 +0200 Subject: [PATCH] Proof some searches and file listings against symlinks * lisp/progmodes/project.el (project--files-in-directory): Make sure the directory includes the trailing slash in case it's a symlink, discussed in https://lists.gnu.org/archive/html/emacs-devel/2021-01/msg00345.html. * lisp/progmodes/xref.el (xref-matches-in-directory): Same. * lisp/cedet/semantic/symref/grep.el (semantic-symref-perform-search): Same. --- lisp/cedet/semantic/symref/grep.el | 3 ++- lisp/progmodes/project.el | 3 ++- lisp/progmodes/xref.el | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el index 5f9a3fa352e..9f0ac38ec75 100644 --- a/lisp/cedet/semantic/symref/grep.el +++ b/lisp/cedet/semantic/symref/grep.el @@ -168,7 +168,8 @@ This shell should support pipe redirect syntax." (erase-buffer) (setq default-directory rootdir) (let ((cmd (semantic-symref-grep-use-template - (file-local-name rootdir) filepattern grepflags greppat))) + (file-name-as-directory (file-local-name rootdir)) + filepattern grepflags greppat))) (process-file semantic-symref-grep-shell nil b nil shell-command-switch cmd))) (setq ans (semantic-symref-parse-tool-output tool b)) diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index d417382c0df..62c3cf44cb6 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -291,7 +291,8 @@ to find the list of ignores for each directory." (localdir (file-local-name (expand-file-name dir))) (command (format "%s %s %s -type f %s -print0" find-program - localdir + ;; In case DIR is a symlink. + (file-name-as-directory localdir) (xref--find-ignores-arguments ignores localdir) (if files (concat (shell-quote-argument "(") diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 2fefc23e199..b393b8d0f1a 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1374,7 +1374,8 @@ IGNORES is a list of glob patterns for files to ignore." ;; do that reliably enough, without creating false negatives? (command (xref--rgrep-command (xref--regexp-to-extended regexp) files - (file-local-name (expand-file-name dir)) + (file-name-as-directory + (file-local-name (expand-file-name dir))) ignores)) (def default-directory) (buf (get-buffer-create " *xref-grep*")) -- 2.39.5