Subject: bug#79036: [PATCH] Fix pdb tracking for remote filenames

From: Michael Albinus <[email-masked]>
Date: Thu, 17 Jul 2025 17:09:13 +0200

Eli Zaretskii <[email-masked]> writes:

>> > So we need a function called, say, remote-file-name, which, when given
>> > a file name, even an absolute one, will consider it to be on the
>> > remote host indicated by default-directory, and will be equivalent to
>> > expand-file-name if default-directory is a local one, is that right?
>> >
>> > Michael, don't we already have such a function?
>> 
>> No, we haven't IIRC. Something like this? (untested)
>> 
>> --8<---------------cut here---------------start------------->8---
>> (defun file-remote-name (file)
>>   "Return the remote file name of FILE.
>> If FILE is already remote, return it as it is.
>> If `default-directory' is local, return FILE as it is.
>> Otherwise, prepend the remote file name component of `default-directory'
>> to FILE."
>>   (if (file-remote-p file)
>>       file
>>     (concat (file-remote-p default-directory) file)))
>> --8<---------------cut here---------------end--------------->8---
>
> I'm missing expand-file-name somewhere (FILE could be not an absolute
> file name) in the case that FILE is a local file.  Otherwise, yes,
> thanks.

I have left it out by intention. expand-file-name has a price on remote
systems, it should be called explicitly by the callee of
file-remote-name. So maybe we do something like this:

--8<---------------cut here---------------start------------->8---
(defun file-remote-name (file)
  "Return the remote file name of FILE.
If FILE is a relative file name, return FILE as it is.
If FILE is already remote, return FILE as it is.
If `default-directory' is local, return FILE as it is.
Otherwise, prepend the remote file name component of `default-directory'
to FILE."
  (if (or (not (file-absolute-p file)) (file-remote-p file))
      file
    (concat (file-remote-p default-directory) file)))
--8<---------------cut here---------------end--------------->8---

Best regards, Michael.