Subject: 31.0.50; ffap's filename prompt problem in remote files
From: Liu Hui <[email-masked]>
To: [email-masked]
Date: Mon, 30 Jun 2025 17:54:31 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

When using ffap in remote files, I find the guess of filename at point
in the prompt, which is mainly determined by ffap-file-at-point, is
not suitable or at least inconsistent.

Case 1:

1. emacs -Q
2. Open a remote file:
   C-x C-f /ssh:server:~/test_file
3. type a filename that exists in localhost (e.g. /etc/hosts), and M-x ffap

ffap finds the local file /etc/hosts instead of the remote one. The
reason is that ffap-file-at-point always checks the local file first.
ffap-file-at-point only tries to find remote file if there is no
existing local file.

However, it is more reasonable to first check (or only check) remote
file and always prompt remote filename (i.e. /ssh:server:/etc/hosts)
in remote cases.

Case 2:

1. emacs -Q
2. Open a file in a remote project:
   C-x C-f /ssh:server:~/a_git_project/test_file
3. Create a file that exists outside the project in the remote host, e.g.
   M-! touch /tmp/abc
4. type the above filename (i.e. /tmp/abc), in test_file, and M-x ffap

ffap prompts /ssh:server:~/a_git_project/tmp/abc, while in Emacs 29
prompts /ssh:server:/tmp/abc correctly. This problem seems to be
related to commit 1eae0e7edf4.

Thanks.

--
Liu Hui