Subject: bug#36733: 27.0.50; Eshell taking long time to enter directory after TAB completion

From: Ivan Kozlov <[email-masked]>
Date: Sat, 29 Feb 2020 12:02:30 +0300

29.02.2020, 10:56, "Ivan Kozlov" <[email-masked]>:
>Maybe it is eshell that should tell the completion mode to stop when a command has been entered.

Yes, it must be the way.

(defun eshell-send-input (&optional use-region queue-p no-newline)
  "Send the input received to Eshell for parsing and processing.                                                                                            
After `eshell-last-output-end', sends all text from that marker to                                                                                          
point as input.  Before that marker, calls `eshell-get-old-input' to                                                                                        
retrieve old input, copies it to the end of the buffer, and sends it.                                                                                       
                                                                                                                                                            
If USE-REGION is non-nil, the current region (between point and mark)                                                                                       
will be used as input.                                                                                                                                      
                                                                                                                                                            
If QUEUE-P is non-nil, input will be queued until the next prompt,                                                                                          
rather than sent to the currently active process.  If no process, the                                                                                       
input is processed immediately.                                                                                                                             
                                                                                                                                                            
If NO-NEWLINE is non-nil, the input is sent without an implied final                                                                                        
newline."
  (interactive "P")
  ;; Note that the input string does not include its terminal newline.                                                                                      
  (let ((proc-running-p (and (eshell-interactive-process)
                             (not queue-p)))
        (inhibit-point-motion-hooks t)
        (inhibit-modification-hooks t))
+    (completion-in-region-mode -1)
    (unless (and proc-running-p
                 (not (eq (process-status
                           (eshell-interactive-process))
                          'run)))

The bug is gone. With my two changes, all is good.