Subject: Re: bug#77853: 30.1; python-inferior-mode: completion regression

From: kobarity <[email-masked]>
Date: Mon, 21 Apr 2025 00:12:03 +0900

Liu Hui wrote:
> On Thu, Apr 17, 2025 at 2:29 PM Eli Zaretskii <[email-masked]> wrote:
> >
> > > From: Christian Sattler <[email-masked]>
> > > Date: Wed, 16 Apr 2025 21:59:01 +0200
> > >
> > > Completing a non-existing prefix attempts to complete it as a filename.
> > >
> > > Steps to reproduce:
> > >
> > > 1. touch test.file
> > > 2. emacs -Q
> > > 3. M-x run-python
> > > 4. test
> > > 5. M-x python-shell-completion-complete-or-indent
> > >
> > > Outcome: incorrectly completes to test.file.
> > >
> > > This regression was introduced in commit 0b9c714. The function
> > > python-shell-completion-at-point now returns nil instead of an empty
> > > list of candidates. This causes the next element of
> > > completion-at-point-functions list to be tried. This is
> > > comint-completion-at-point and completes filenames, which does not
> > > make sense in this context.
> >
> > Thanks.
> >
> > Liu Hui and kobarity, any suggestions for how to fix that?  The fix
> > should be safe enough for the release branch, since the regression was
> > introduced by Emacs 30.1.
> 
> We can just remove comint-filename-completion from
> comint-dynamic-complete-functions, which is called by
> comint-completion-at-point in completion-at-point-functions.
> 
> Before commit 0b9c714, comint-filename-completion was actually not
> used due to python-shell-completion-at-point. Therefore, removing it
> is safe and acceptable.
> 
> Users who need proper filename completion in Python shell can use
> specialized completion backends, e.g.
> 
> 1. touch test.file
> 2. export PYTHONSTARTUP="$(python -m jedi repl)"; emacs -Q
> 3. M-x run-python
> 4. test<tab>         => no completion
> 5. open("test<tab>   => open("test.file"

I agree with this patch, but it failed to apply to both master and
emacs-30 branches.  Is this patch for the latest branch?