diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2022-01-24 14:55:35 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2022-01-24 14:57:17 +0100 |
commit | edeb220d310f189023b232407deb55f49445358b (patch) | |
tree | 81955a07718bda5f7c2b525656b6903522d006d7 | |
parent | a46421446ff2e97b01434a1d77fa149d985e6c7d (diff) | |
download | emacs-edeb220d310f189023b232407deb55f49445358b.tar.gz |
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).
-rw-r--r-- | lisp/progmodes/gud.el | 19 |
1 files 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))) |