xref-matches-in-files: Big Tramp speed-up

* lisp/progmodes/xref.el (xref-matches-in-files):
Greatly improve performance with remote files using Tramp
(bug#34343).
This commit is contained in:
Dmitry Gutov 2020-01-07 16:30:25 +03:00
parent 883b3490d8
commit b46c75b16c

View file

@ -1218,6 +1218,9 @@ IGNORES is a list of glob patterns for files to ignore."
#'xref-matches-in-directory
"27.1")
(declare-function tramp-tramp-file-p "tramp")
(declare-function tramp-file-local-name "tramp")
;;;###autoload
(defun xref-matches-in-files (regexp files)
"Find all matches for REGEXP in FILES.
@ -1240,7 +1243,12 @@ FILES must be a list of absolute file names."
"")
(shell-quote-argument (xref--regexp-to-extended regexp)))))
(when remote-id
(setq files (mapcar #'file-local-name files)))
(require 'tramp)
(setq files (mapcar
(if (tramp-tramp-file-p dir)
#'tramp-file-local-name
#'file-local-name)
files)))
(with-current-buffer output
(erase-buffer)
(with-temp-buffer