#'file-name-as-directory
(rgrep-find-ignored-directories default-directory))
grep-find-ignored-files))
- (fetcher
- (lambda ()
- (let (files xrefs)
- (mapc
- (lambda (mark)
- (if (file-directory-p mark)
- (setq files (nconc
- (project--files-in-directory mark ignores "*")
- files))
- (push mark files)))
- (reverse marks))
- (message "Searching...")
- (setq xrefs
- (xref-matches-in-files regexp files))
- (unless xrefs
- (user-error "No matches for: %s" regexp))
- (message "Searching...done")
- xrefs))))
+ (files nil))
+ (dolist (mark (reverse marks))
+ (if (file-directory-p mark)
+ (setq files (nconc (project--files-in-directory mark ignores "*") files))
+ (push mark files)))
(dired-post-do-command)
- (xref-show-xrefs fetcher nil)))
+ (xref-show-xrefs
+ (xref-make-fetcher (cons 'files files) regexp 'apropos regexp))))
;;;###autoload
(defun dired-do-find-regexp-and-replace (from to)
If BACKEND is implemented in Lisp, it can use
`xref-apropos-regexp' to convert the pattern to regexp.")
+(cl-defmethod xref-backend-apropos ((backend (head files)) pattern)
+ "Find matches for PATTERN in files that BACKEND specifies."
+ (or (xref-matches-in-files pattern (cdr backend))
+ (user-error "No matches for: %s" pattern)))
+
(cl-defgeneric xref-backend-identifier-at-point (_backend)
"Return the relevant identifier at point.
"Return BACKEND-specific context for finding references to IDENTIFIER."
(bookmark-make-record))
+(cl-defmethod xref-backend-context ((_backend (head files)) _id _kind))
+
(cl-defgeneric xref-backend-restore (_backend context)
"Restore BACKEND-specific CONTEXT."
(bookmark-handle-bookmark context))
+(cl-defmethod xref-backend-restore ((_backend (head files)) _context))
+
\f
;;; misc utilities
(defun xref--alistify (list key)