Avoid mapping file names through 'substring'

* lisp/progmodes/project.el (project--files-in-directory):
Avoid mapping file names through 'substring'.  Reducing the amount
of garbage generated.  Better perf by up to 20%.
Bump the package version.
This commit is contained in:
Dmitry Gutov 2021-10-10 04:14:35 +03:00
parent bcce93f04c
commit 6bf29072e9

View file

@ -1,7 +1,7 @@
;;; project.el --- Operations on the current project -*- lexical-binding: t; -*-
;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
;; Version: 0.8.0
;; Version: 0.8.1
;; Package-Requires: ((emacs "26.1") (xref "1.0.2"))
;; This is a GNU ELPA :core package. Avoid using functionality that
@ -316,16 +316,21 @@ to find the list of ignores for each directory."
" "
(shell-quote-argument ")"))
"")))
(output (with-output-to-string
(with-current-buffer standard-output
(let ((status
(process-file-shell-command command nil t)))
(unless (zerop status)
(error "File listing failed: %s" (buffer-string))))))))
res)
(with-temp-buffer
(let ((status
(process-file-shell-command command nil t))
(pt (point-min)))
(unless (zerop status)
(error "File listing failed: %s" (buffer-string)))
(goto-char pt)
(while (search-forward "\0" nil t)
(push (buffer-substring-no-properties (1+ pt) (1- (point)))
res)
(setq pt (point)))))
(project--remote-file-names
(mapcar (lambda (s) (concat dfn (substring s 1)))
(sort (split-string output "\0" t)
#'string<)))))
(mapcar (lambda (s) (concat dfn s))
(sort res #'string<)))))
(defun project--remote-file-names (local-files)
"Return LOCAL-FILES as if they were on the system of `default-directory'.