summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2021-09-18 13:39:09 +0200
committerMattias EngdegÄrd <mattiase@acm.org>2021-09-18 13:45:03 +0200
commit031e1c28f9ee3971b1376f30f1c8a010432e529b (patch)
tree788a466e0cb5299463f08ba1e3c31d83d7c140e9
parentdd1220b96972d77e5bbe1094586514bae63fe1eb (diff)
downloademacs-031e1c28f9ee3971b1376f30f1c8a010432e529b.tar.gz
Regexp-quote literal symbols when grepping
`xref-find-references` was unable to find symbols like `backquote-list*-macro`. * lisp/cedet/semantic/symref/grep.el (semantic-symref-grep--quote-extended): New function. (semantic-symref-perform-search): Call it.
-rw-r--r--lisp/cedet/semantic/symref/grep.el11
1 files changed, 10 insertions, 1 deletions
diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el
index 53745b429a2..1e282c3052c 100644
--- a/lisp/cedet/semantic/symref/grep.el
+++ b/lisp/cedet/semantic/symref/grep.el
@@ -133,6 +133,12 @@ This shell should support pipe redirect syntax."
:group 'semantic
:type 'string)
+(defun semantic-symref-grep--quote-extended (string)
+ "Quote STRING as an extended-syntax regexp."
+ (replace-regexp-in-string (rx (in ".^$*+?|{}[]()|\\"))
+ (lambda (s) (concat "\\" s))
+ string nil t))
+
(cl-defmethod semantic-symref-perform-search ((tool semantic-symref-tool-grep))
"Perform a search with Grep."
;; Grep doesn't support some types of searches.
@@ -151,7 +157,10 @@ This shell should support pipe redirect syntax."
((eq (oref tool searchtype) 'regexp)
"-nE ")
(t "-nw ")))
- (greppat (oref tool searchfor))
+ (searchfor (oref tool searchfor))
+ (greppat (if (eq (oref tool searchtype) 'regexp)
+ searchfor
+ (semantic-symref-grep--quote-extended searchfor)))
;; Misc
(b (get-buffer-create "*Semantic SymRef*"))
(ans nil)