summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2016-05-05 04:15:23 +0300
committerDmitry Gutov <dgutov@yandex.ru>2016-05-05 04:15:23 +0300
commitab3ba912fc7b91b7b147ea36fabe461dc99a9fb8 (patch)
tree7618c1534a3b505e05e772da86372c52b7448b46
parent922c7a3e48e649ad67bd12b1f83343b730dd1bc4 (diff)
downloademacs-ab3ba912fc7b91b7b147ea36fabe461dc99a9fb8.tar.gz
shell-quote-argument DIR when appropriate
* lisp/progmodes/project.el (project-file-completion-table): `shell-quote-argument' DIR as well. * lisp/progmodes/xref.el (xref--rgrep-command): Pass DIR through `shell-quote-argument' (bug#23453). Thanks for Kaushal Modi for pointing out the problem. Assert that DIR doesn't start with `~'.
-rw-r--r--lisp/progmodes/project.el3
-rw-r--r--lisp/progmodes/xref.el5
2 files changed, 5 insertions, 3 deletions
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 9c8a88c80fc..a51c383b93b 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -172,7 +172,8 @@ to find the list of ignores for each directory."
(let ((command
(format "%s %s %s -type f -print0"
find-program
- dir
+ (shell-quote-argument
+ (expand-file-name dir))
(xref--find-ignores-arguments
(project-ignores project dir)
(expand-file-name dir)))))
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 17bfdb69f8f..1c28390258c 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -941,6 +941,8 @@ IGNORES is a list of glob patterns."
(require 'find-dired) ; for `find-name-arg'
(defvar grep-find-template)
(defvar find-name-arg)
+ ;; `shell-quote-argument' quotes the tilde as well.
+ (cl-assert (not (string-match-p "\\`~" dir)))
(grep-expand-template
grep-find-template
regexp
@@ -952,14 +954,13 @@ IGNORES is a list of glob patterns."
(concat " -o " find-name-arg " "))
" "
(shell-quote-argument ")"))
- dir
+ (shell-quote-argument dir)
(xref--find-ignores-arguments ignores dir)))
(defun xref--find-ignores-arguments (ignores dir)
"Convert IGNORES and DIR to a list of arguments for 'find'.
IGNORES is a list of glob patterns. DIR is an absolute
directory, used as the root of the ignore globs."
- ;; `shell-quote-argument' quotes the tilde as well.
(cl-assert (not (string-match-p "\\`~" dir)))
(when ignores
(concat