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

From: Eli Zaretskii <[email-masked]>
Date: Thu, 17 Jul 2025 09:41:44 +0300

> From: Liu Hui <[email-masked]>
> Date: Thu, 17 Jul 2025 12:57:45 +0800
> 
> 1. emacs -Q
> 2. Create a remote python file and start the remote python shell, e.g.
>    M-x find-file /ssh:server:/tmp/test.py
>    M-x run-python
> 3. Insert the following code in test.py and press C-c C-c to send it
>    to the python shell:
> 
>    def f():
>        breakpoint()
>        return 1
> 
> 4. Execute f() in the python shell to trigger the pdb
> 
> Result: Emacs tries to open /ssh:server:/ssh:server:/tmp/test.py
> instead of /ssh:server:/tmp/test.py.
> 
> The reason is the filename set by python-shell-send-string may be
> remote. The attached patch fixes the issue.
> 
> From b9770cea20186d0205319efb54327099849e3a21 Mon Sep 17 00:00:00 2001
> From: Liu Hui <[email-masked]>
> Date: Thu, 17 Jul 2025 12:43:34 +0800
> Subject: [PATCH] Fix pdb tracking for remote filenames
> 
> * lisp/progmodes/python.el (python-pdbtrack-set-tracked-buffer):
> Check remote file names.
> ---
>  lisp/progmodes/python.el | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
> index f4f0518dbfd..59977fcb49f 100644
> --- a/lisp/progmodes/python.el
> +++ b/lisp/progmodes/python.el
> @@ -5079,8 +5079,10 @@ python-pdbtrack-set-tracked-buffer
>    "Set the buffer for FILE-NAME as the tracked buffer.
>  Internally it uses the `python-pdbtrack-tracked-buffer' variable.
>  Returns the tracked buffer."
> -  (let* ((file-name-prospect (concat (file-remote-p default-directory)
> -                              file-name))
> +  (let* ((file-name-prospect (if (file-remote-p file-name)
> +                                 file-name
> +                               (concat (file-remote-p default-directory)
> +                                       file-name)))
>           (file-buffer (get-file-buffer file-name-prospect)))
>      (unless file-buffer
>        (cond

Shouldn't this code use 'expand-file-name' instead?  Using 'concat' to
construct file names is a bug waiting to happen, IME.

Michael, WDYT?