Subject: Re: bug#25788: 26.0.50; first C-x C-f triggering tramp is slow

From: [email-masked]
Date: Sat, 18 Feb 2017 23:30:47 -0500

Mark Oteiza <[email-masked]> writes:

> Eli Zaretskii <[email-masked]> writes:
>
>>> From: Mark Oteiza <[email-masked]>
>>> Date: Sat, 18 Feb 2017 16:12:42 -0500
>>> 
>>> >From -Q:
>>> 
>>> 1. C-x C-f
>>> 2. Experience delay
>>> 3. C-g
>>> 4. C-x C-c
>>> 
>>> Depending on where Emacs is started, loading tramp is triggered and
>>> there is a delay before the prompt is shown.  The delay is about a
>>> quarter second on my system.  This is quite noticeable.
>>
>> Not reproducible on MS-Windows, but maybe the place "where Emacs is
>> started" needs to be defined in more detail.  Can you tell in what
>> directories it happens for you?
>
> My home directory is the only one I'm aware of.

I see this also on GNU/Linux (with master, not emacs-25), here's a
backtrace from doing (debug-on-entry 'require) before the C-x C-f:

Debugger entered--entering a function:
* require(tramp-compat)
  byte-code(...)
  load("tramp" noerror nomessage)
  (and (null load-in-progress) (load "tramp" (quote noerror) (quote nomessage)))
  (let ((default-directory temporary-file-directory)) (and (null load-in-progress) (load "tramp" (quote noerror) (quote nomessage))))
  (if (let ((default-directory temporary-file-directory)) (and (null load-in-progress) (load "tramp" (quote noerror) (quote nomessage)))) (apply operation args) (tramp-completion-run-real-handler operation args))
  tramp-autoload-file-name-handler(substitute-in-file-name "/")
  apply(tramp-autoload-file-name-handler substitute-in-file-name "/")
  (if (tramp-completion-mode-p) (apply (quote tramp-autoload-file-name-handler) operation args) (tramp-completion-run-real-handler operation args))
  tramp-completion-file-name-handler(substitute-in-file-name "/")
  substitute-in-file-name("/")
  rfn-eshadow-update-overlay()
  read-from-minibuffer("Find file: " "~/" (keymap ...) nil file-name-history "~/" nil)
  completing-read-default("Find file: " read-file-name-internal file-exists-p confirm-after-completion "~/" file-name-history "~/" nil)
  completing-read("Find file: " read-file-name-internal file-exists-p confirm-after-completion "~/" file-name-history "~/")
  read-file-name-default("Find file: " nil "~/" confirm-after-completion nil nil)
  read-file-name("Find file: " nil "~/" confirm-after-completion)
  find-file-read-args("Find file: " confirm-after-completion)
  byte-code("\300\301\302 \"\207" [find-file-read-args "Find file: " confirm-nonexistent-file-or-buffer] 3)
  call-interactively(find-file nil nil)
  command-execute(find-file)