GNU bug report logs - #68559
[PATCH] Improve Python shell completion

Previous Next

Package: emacs;

Reported by: Liu Hui <liuhui1610 <at> gmail.com>

Date: Thu, 18 Jan 2024 04:50:01 UTC

Severity: wishlist

Tags: patch

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: kobarity <kobarity <at> gmail.com>
To: Mattias EngdegÄrd <mattias.engdegard <at> gmail.com>
Cc: Liu Hui <liuhui1610 <at> gmail.com>, Eli Zaretskii <eliz <at> gnu.org>, 68559 <at> debbugs.gnu.org
Subject: bug#68559: [PATCH] Improve Python shell completion
Date: Wed, 21 Feb 2024 22:13:45 +0900
Mattias EngdegÄrd wrote:
> 17 feb. 2024 kl. 14.33 skrev kobarity <kobarity <at> gmail.com>:
> > On Mac, it might be better to set the default value of
> > `python-shell-completion-native-enable' to nil.
> Not sure why the inferior Python process doesn't act on a TAB being sent to it. Is the tty somehow in a state that disables readline/libedit? Something that Emacs does when setting up the pty?

On Mac, there are two independent problems.  One problem, which
existed before Liu's patch was applied, is that native completions
cannot be enabled.  The other problem is that the test now fails after
applying Liu's patch.  Suppressing echo back solves the latter, but
not the former.  Because of the former, leaving
`python-shell-completion-native-enable' at the default setting of t
will result in the warning.

There are two completions methods, native and non-native.  If native
completions cannot be used, it falls back to non-native completions.
Native completions is triggered by sending TAB character, while
non-native completions is triggered by sending and evaluating
__PYTHON_EL_get_completions().

As far as I have tried, native completions cannot be enabled for
libedit-based readline package, even on Linux.

So, there are two ways for Mac users to avoid the warning.  One is to
use gnureadline instead of libedit, and the other is to give up native
completions and set `python-shell-completion-native-enable' to nil.
This remains correct even with echo back disabled.

> Of course from a software engineering point of view, it's silly to send what essentially are edit keystrokes to Python and then screen-scrape the output. A proper interaction protocol would be the way to go, and would work equally well on any platform including Windows.

I think the protocol between python.el and inferior Python process is
already platform independent.  Protocol violations are echo back.

> Thanks for your patches. I suggest we apply your set-tty-raw patch on master now since it cures the test failures without breaking anything else (on Mac; I'm assuming no regression elsewhere).
> 
> Would you like me to do that for you?

Yes, please.  Thank you.  I have no commit right.




This bug report was last modified 1 year and 66 days ago.

Previous Next


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