[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Strange behavior of `file-exists-p` on latest Tramp version
From: |
Ruiyang Wu |
Subject: |
Re: Strange behavior of `file-exists-p` on latest Tramp version |
Date: |
Mon, 6 Mar 2023 13:31:58 -0500 |
Hi Michael,
Thanks for the quick reply. I can confirm the patch works for me.
Best,
Ruiyang
> On Mar 6, 2023, at 12:27 PM, Michael Albinus <michael.albinus@gmx.de> wrote:
>
> Ruiyang Wu <ywwry66@gmail.com> writes:
>
>> Hi Michael,
>
> Hi Ruiyang,
>
>> If you are willing to test out ivy-mode, here is the recipe:
>
> Yep. I've tested with Emacs 28.3 and ivy 0.13.4 + Tramp 2.6.0.2 from GNU
> ELPA.
>
>> With ivy-mode turned on, type "C-x d” (dired), then in the mini
>> buffer, input "//ssh:” followed by “C-j” (ivy-alt-done). With Tramp
>> 2.5.3.28.2, it will give possible completions (which is not as good as
>> Tramp’s builtin completion). With Tramp 2.6.0.2, this gives the error
>> “Reading directory: No such file or directory, /ssh:”.
>
> Thanks for the recipe. I could reproduce the problem.
>
>> The reason for the error is in the function "ivy--directory-done”.
>> The new behavior of (file-exists-p file) returning t causes the
>> function to enter the wrong condition clause. (ivy thinks “/ssh:” is a
>> file and tries to open it).
>
> Indeed. The following patch fixes this for me:
>
> *** /home/albinus/.emacs.d/elpa/ivy-0.13.4/ivy.el~ 2021-03-23
> 15:42:21.107225608 +0100
> --- /home/albinus/.emacs.d/elpa/ivy-0.13.4/ivy.el 2023-03-06
> 18:06:49.507257395 +0100
> ***************
> *** 1029,1034 ****
> --- 1029,1036 ----
> (defvar tramp-completion-mode)
> (with-no-warnings
> (let* ((tramp-completion-mode t)
> + (non-essential t)
> + minibuffer-completing-file-name
> (file (expand-file-name
> (if (> ivy--length 0) (ivy-state-current
> ivy-last) ivy-text)
> ivy--directory)))
>
> I've added (non-essential t), because this setting shall be used instead
> of (tramp-completion-mode t) in newer Tramp versions. And I've added
> minibuffer-completing-file-name (being nil), because it changes Tramp
> completion (when non-nil) since Tramp 2.6.0.2. That Tramp change is
> already on GNU ELPA, and it will appear with Emacs 29.2.
>
> Could you please confirm, that this works for you? I'll be in contact
> with the ivy-mode maintainer (added to Cc) then for a final solution.
>
>> Best,
>> Ruiyang
>
> Best regards, Michael.