From edeb220d310f189023b232407deb55f49445358b Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 24 Jan 2022 14:55:35 +0100 Subject: [PATCH] Don't loop so much in gud-query-cmdline on remote systems * lisp/progmodes/gud.el (gud-query-cmdline): Avoid looping over large numbers of files on remote systems (bug#21528). --- lisp/progmodes/gud.el | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index b42279415bc..7092ca2041f 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -759,13 +759,18 @@ The option \"--fullname\" must be included in this value." (concat (or cmd-name (symbol-name minor-mode)) " " (or init - (let ((file nil)) - (dolist (f (directory-files default-directory) file) - (if (and (file-executable-p f) - (not (file-directory-p f)) - (or (not file) - (file-newer-than-file-p f file))) - (setq file f))))))) + (let ((file nil) + (files (directory-files default-directory))) + ;; On remote systems, this may be slow, so avoid it. + (when (or (not (file-remote-p default-directory)) + (length< files 50)) + (dolist (f files) + (if (and (file-executable-p f) + (not (file-directory-p f)) + (or (not file) + (file-newer-than-file-p f file))) + (setq file f))) + file))))) gud-minibuffer-local-map nil hist-sym))) -- 2.39.2