|
From: | Gregory Heytings |
Subject: | bug#41423: 27.0.91; eshell file completion in tramp dir is slow (3 minutes) [regression on pretest] |
Date: | Fri, 28 Aug 2020 09:32:48 +0000 |
User-agent: | Alpine 2.22 (NEB 394 2020-01-19) |
The root of this bug is that `eshell-complete-commands-list' loops through all executables *on the remote server* with (while comps-in-path ...). That means typically 1000-2000 commands to check, one by one, hence the 3 minutes delay.The easy fix is to hit C-g, which stops this loop.
Another note: in fact this bug exists because `eshell-complete-commands-list' is, in this context, called in Emacs 27, but not in Emacs 26 and earlier.
The backtrace is: * eshell-complete-commands-list() #f(compiled-function () #<bytecode 0x1e0009b1b5c5>)() pcomplete--here(#f(compiled-function () #<bytecode 0x1e0009b1b5c5>) nil nil nil) #f(compiled-function () #<bytecode 0x1fff46e348cd94>)() pcomplete-completions() pcomplete-completions-at-point() #f(compiled-function () #<bytecode 0xcbc6f2b2c706bdb>)() completion-in-region--postch()In Emacs 26 `pcomplete--here' is called only once, with `pcomplete-entries' and `file-directory-p' in its `form' argument, and `pcomplete-completions' returns.
In Emacs 27 `pcomplete--here' is called twice with these arguments, and a third time with `eshell-complete-commands-list' as its `form' argument. It is this third call which takes about three minutes to complete.
[Prev in Thread] | Current Thread | [Next in Thread] |