GNU bug report logs - #77853
30.1; python-inferior-mode: completion regression

Previous Next

Package: emacs;

Reported by: Christian Sattler <sattler.christian <at> gmail.com>

Date: Wed, 16 Apr 2025 23:44:03 UTC

Severity: normal

Found in version 30.1

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Liu Hui <liuhui1610 <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 77853 <at> debbugs.gnu.org, Christian Sattler <sattler.christian <at> gmail.com>, kobarity <kobarity <at> gmail.com>
Subject: bug#77853: 30.1; python-inferior-mode: completion regression
Date: Fri, 18 Apr 2025 13:38:04 +0800
[Message part 1 (text/plain, inline)]
On Thu, Apr 17, 2025 at 2:29 PM Eli Zaretskii <eliz <at> gnu.org> wrote:
>
> > From: Christian Sattler <sattler.christian <at> gmail.com>
> > 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"
[0001-Fix-filename-completion-in-Python-shell-bug-77853.patch (text/x-patch, attachment)]

This bug report was last modified 22 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.