Subject: bug#77859: [PATCH] Handle empty cancidates in python-shell-completion-at-point

From: kobarity <[email-masked]>
Date: Sat, 26 Apr 2025 22:17:35 +0900

Eli Zaretskii wrote:
> 
> > From: Christian Sattler <[email-masked]>
> > Date: Thu, 17 Apr 2025 11:04:16 +0200
> > 
> > Fixes regression bug#77853.
> > 
> > From bfd998ef21accf658e9938b53086925f50ec9ddf Mon Sep 17 00:00:00 2001
> > From: Christian Sattler <[email-masked]>
> > Date: Wed, 16 Apr 2025 22:03:46 +0200
> > Subject: [PATCH] Handle empty cancidates in python-shell-completion-at-point.
> > 
> > This fixes a regression (bug#77853) introduced by 0b9c714:
> > 2024-02-08 "Respect the delimiter of completer in Python shell completion"
> > ---
> >  lisp/progmodes/python.el | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
> > index 6fbabe99cb0..ed87a67ad30 100644
> > --- a/lisp/progmodes/python.el
> > +++ b/lisp/progmodes/python.el
> > @@ -4894,7 +4894,8 @@ python-shell-completion-at-point
> >                :annotation-function
> >                (lambda (c) (concat " " (nth 3 (assoc c cands))))
> >                :company-docsig
> > -              (lambda (c) (nth 4 (assoc c cands)))))))))
> > +              (lambda (c) (nth 4 (assoc c cands)))))
> > +       (t (list start end (cddr python-shell--capf-cache)))))))
> >  
> >  (define-obsolete-function-alias
> >    'python-shell-completion-complete-at-point
> > -- 
> > 2.48.1
> > 
> 
> Should this be installed, or did the fix for bug#77853 fix this as
> well?

Liu's fix for bug#77853 already fixed it.

At first I was going to fix it the same way as Christian, but I think
Liu's patch is better.  If `python-shell-completion-at-point' returns
nil when there are no completion candidates, as is currently the case,
the next completion function may be able to provide appropriate
completion candidates.

The problem with bug#77853 is that the default setting includes an
inappropriate completion function for inferior Python mode, so it
would be better to remove the inappropriate completion function
`comint-filename-completion' from `comint-dynamic-complete-functions'
as in Liu's patch.