From: Dmitry Gutov Date: Fri, 4 Oct 2019 12:50:16 +0000 (+0300) Subject: (project--vc-list-files): Optimize the Hg implementation X-Git-Tag: emacs-27.0.90~1291 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9a3089fea004e83992b6c4d05ecb7517b6c519ba;p=emacs.git (project--vc-list-files): Optimize the Hg implementation * lisp/progmodes/project.el (project--vc-list-files): Optimize the Hg implementation. --- diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 2c0c32345d2..ef2499030a7 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -322,10 +322,9 @@ backend implementation of `project-external-roots'.") "\0" t)))) (`Hg (let ((default-directory (file-name-as-directory dir)) - args - files) + args) ;; Include unregistered. - (setq args (nconc args '("--all"))) + (setq args (nconc args '("-mcardu" "--no-status" "-0"))) (when extra-ignores (setq args (nconc args (mapcan @@ -333,13 +332,10 @@ backend implementation of `project-external-roots'.") (list "--exclude" i)) extra-ignores)))) (with-temp-buffer - (apply #'vc-hg-command t 0 "." - "status" args) - (goto-char (point-min)) - (while (re-search-forward "^[?C]\s+\\(.*\\)$" nil t) - (setq files (cons (concat dir (match-string 1)) - files)))) - (nreverse files))))) + (apply #'vc-hg-command t 0 "." "status" args) + (mapcar + (lambda (s) (concat dir s)) + (split-string (buffer-string) "\0" t))))))) (cl-defmethod project-ignores ((project (head vc)) dir) (let* ((root (cdr project))