summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-01-24 14:55:35 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2022-01-24 14:57:17 +0100
commitedeb220d310f189023b232407deb55f49445358b (patch)
tree81955a07718bda5f7c2b525656b6903522d006d7
parenta46421446ff2e97b01434a1d77fa149d985e6c7d (diff)
downloademacs-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.el19
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)))