[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-28 6bf2907: Avoid mapping file names through 'substring'
From: |
Dmitry Gutov |
Subject: |
emacs-28 6bf2907: Avoid mapping file names through 'substring' |
Date: |
Sat, 9 Oct 2021 21:28:32 -0400 (EDT) |
branch: emacs-28
commit 6bf29072e968401f842789c71468e624e5c913a9
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>
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.
---
lisp/progmodes/project.el | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 3eaa789..da7435c 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -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'.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-28 6bf2907: Avoid mapping file names through 'substring',
Dmitry Gutov <=