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

From: Liu Hui <[email-masked]>
Date: Fri, 18 Jul 2025 22:06:56 +0800

On Fri, Jul 18, 2025 at 8:08 PM Eli Zaretskii <[email-masked]> wrote:
>
> > From: Liu Hui <[email-masked]>
> > Date: Fri, 18 Jul 2025 12:47:07 +0800
> > Cc: [email-masked], [email-masked], [email-masked]
> >
> > > If we did have such a function, wouldn't it be enough to just call
> > >
> > >    (find-file-noselect (remote-file-name file-name))
> > >
> > > ?  That is, we won't need to call get-file-buffer, nor file-exists-p,
> > > right?  Or am I still missing something?
> >
> > They are still needed because python-pdbtrack-set-tracked-buffer is
> > not just used to visit file-name.
> >
> > If the file-buffer already exists, which uses get-file-buffer for
> > checking, we don't kill it when pdb finishes. Otherwise, the
> > file-buffer will be created by find-file-noselect and added to
> > python-pdbtrack-buffers-to-kill.
>
> This could be handled by other means.  For example, use
> buffer-list-update-hook.  Or you could use get-file-buffer first and
> _then_ call find-file-noselect unconditionally; it would still be
> cleaner, IMO.
>
> > file-exists-p: For a local file name in a remote python shell, we
> > cannot simply distinguish whether it is a file on the remote system or
> > a local file (i.e. sending code from local host), although the former
> > is more likely. So we need file-exists-p for verification.
>
> Sorry, I don't understand the problem and its solution.  What do you
> mean by "local file name in a remote python shell"?

For example, below is the pdb output in a remote python shell, and the
file-name "/tmp/test.py" is local. Because of the "from ... import
...", we can know the file is on the remote system.

    >>> from test import f; f()
    > /tmp/test.py(3)f()
    -> return 1
    (Pdb)

However, with the following pdb output in a remote python shell

    >>> f()
    > /tmp/test.py(3)f()
    -> return 1
    (Pdb)

The local filename "/tmp/test.py" may be on the remote system like the
above case, or may be on the local host if we press C-c C-c to send
its code to the remote process.

Which file should python shell track? The simplest solution is to
check which file exists.

> > Moreover, if file doesn't exist (e.g. the original file may be
> > deleted), it makes no sense to create an empty buffer/file, because we
> > don't want to edit it, but to debug the code in it.
>
> This can be handled by other means.  But again, I don't understand why
> is this important, so please elaborate.

I was explaining why file-exists-p is needed. It is another possible
case.