summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2017-01-29 10:41:32 +0200
committerDmitry Gutov <dgutov@yandex.ru>2017-01-29 23:01:42 +0200
commit8ba236e772b64d0bb021aa691bd7eacf4b7f3ae4 (patch)
tree9c6a6389da74bdb5cffe5b4c6ae56fe646bc5c67
parent52feecd3c71716ca5dbade0e8e6ae2f8ebf46e54 (diff)
downloademacs-8ba236e772b64d0bb021aa691bd7eacf4b7f3ae4.tar.gz
emacs-8ba236e772b64d0bb021aa691bd7eacf4b7f3ae4.tar.bz2
emacs-8ba236e772b64d0bb021aa691bd7eacf4b7f3ae4.zip
Escape dash in xref rgrep regexp
* lisp/progmodes/xref.el (xref-collect-matches): Escape dash in REGEXP if it's the first character.
-rw-r--r--lisp/progmodes/xref.el4
1 files changed, 4 insertions, 0 deletions
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index d8098c5a54a..a507755d42e 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -918,6 +918,10 @@ IGNORES is a list of glob patterns."
(grep-compute-defaults)
(defvar grep-find-template)
(defvar grep-highlight-matches)
+ ;; 'grep -E -foo' results in 'grep: oo: No such file or directory'.
+ ;; while 'grep -e -foo' inexplicably doesn't.
+ (when (eq (aref regexp 0) ?-)
+ (setq regexp (concat "\\" regexp)))
(let* ((grep-find-template (replace-regexp-in-string "-e " "-E "
grep-find-template t t))
(grep-highlight-matches nil)