GNU bug report logs - #58389
29.0.50; Python completion fails under certain conditions

Previous Next

Package: emacs;

Reported by: kobarity <kobarity <at> gmail.com>

Date: Sun, 9 Oct 2022 06:59:02 UTC

Severity: normal

Found in version 29.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 58389 in the body.
You can then email your comments to 58389 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#58389; Package emacs. (Sun, 09 Oct 2022 06:59:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to kobarity <kobarity <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 09 Oct 2022 06:59:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: kobarity <kobarity <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; Python completion fails under certain conditions
Date: Sun, 09 Oct 2022 15:58:11 +0900
[Message part 1 (text/plain, inline)]
Hi,

Completion in Python mode buffer fails under certain conditions:

- non-native completion is used,
- ElDoc mode is used, or
- FFAP is used.

Here is how to reproduce the problem of non-native completion:

1. emacs -Q
2. Open the following Python file.

#+begin_src python
import sys
#+end_src

3. Use M-x customize-variable to disable
   python-shell-completion-native-enable
4. C-u -1 M-x eldoc-mode (Disable ElDoc mode)
5. C-c C-p (M-x run-python)
6. C-x o (Back to the Python mode buffer)
7. C-c C-c (M-x python-shell-send-buffer)
8. C-n (M-x next-line)
9. Type "sys."
10. C-M-i (M-x completion-at-point)
11. Completions are shown in *Completions* buffer.
12. Type "e"
13. C-M-i (M-x completion-at-point)
14. "No match" is shown in the minibuffer.

This does not happen when native completion is enabled and ElDoc mode
is disabled.

The following steps show the problem of ElDoc mode:

1. emacs -Q
2. Open the following Python file.

#+begin_src python
import sys
#+end_src

3. Make sure that ElDoc mode is enabled.
4. C-c C-p (M-x run-python)
5. Make sure that "Shell native completion is enabled." is shown in
   the minibuffer.
6. C-x o (Back to the Python mode buffer)
7. C-c C-c (M-x python-shell-send-buffer)
8. C-n (M-x next-line)
9. Type "sys."
10. Wait for 1-2 seconds to make sure ElDoc function is run by the
    idle timer.
11. C-M-i (M-x completion-at-point)
12. "No match" is shown in the minibuffer.

The problem with FFAP can be reproduced with similar steps.

The direct cause of these problems is that
`python-util-comint-last-prompt' returns nil, which is not supposed in
`python-shell-completion-at-point'.

`python-util-comint-last-prompt' is a wrapper to return
`comint-last-prompt'.  `comint-last-prompt' is initialized to nil in
`comint-snapshot-last-prompt' and is set in `comint-output-filter'.
However, `python-shell-send-string-no-output' which is used by the
features mentioned above temporarily changes the `process-filter' to
redirect the output.  This causes `comint-output-filter' to not be
called and `comint-last-prompt' to remain nil.

I think `comint-snapshot-last-prompt' should not be called as long as 
`comint-output-filter' is not called and the Inferior Python Shell
buffer is not changed.  Attached is a patch to fix this issue.

Best Regards,

--

In GNU Emacs 29.0.50 (build 5, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.16.0, Xaw scroll bars) of 2022-10-09 built on ubuntu
Repository revision: 9d47364634f96b2f2651a7f3942f8f87b920f02d
Repository branch: master
System Description: Ubuntu 22.04.1 LTS

Configured using:
 'configure --without-libgmp'

Configured features:
ACL CAIRO FREETYPE GIF GLIB GNUTLS GSETTINGS HARFBUZZ JPEG LIBSELINUX
LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG SECCOMP SOUND SQLITE3 THREADS
TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM LUCID ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils term/screen term/xterm xterm byte-opt gv bytecomp
byte-compile cconv rmc iso-transl tooltip eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads inotify
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 46148 9345)
 (symbols 48 5790 0)
 (strings 32 15049 1660)
 (string-bytes 1 427012)
 (vectors 16 8356)
 (vector-slots 8 105418 10463)
 (floats 8 24 349)
 (intervals 56 216 0)
 (buffers 1000 11))
[0001-Fix-Python-completion-failure-under-certain-conditio.patch (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#58389; Package emacs. (Sun, 09 Oct 2022 11:24:02 GMT) Full text and rfc822 format available.

Message #8 received at 58389 <at> debbugs.gnu.org (full text, mbox):

From: kobarity <kobarity <at> gmail.com>
To: 58389 <at> debbugs.gnu.org
Subject: Re: 29.0.50; Python completion fails under certain conditions
Date: Sun, 09 Oct 2022 20:23:47 +0900
I wrote:
> I think `comint-snapshot-last-prompt' should not be called as long as 
> `comint-output-filter' is not called and the Inferior Python Shell
> buffer is not changed.  Attached is a patch to fix this issue.

Sorry, I was not aware of other processes using comint.  It might
affect other processes.  I will reconsider the patch.

Best Regards,




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#58389; Package emacs. (Mon, 10 Oct 2022 13:30:02 GMT) Full text and rfc822 format available.

Message #11 received at 58389 <at> debbugs.gnu.org (full text, mbox):

From: kobarity <kobarity <at> gmail.com>
To: 58389 <at> debbugs.gnu.org
Subject: Re: 29.0.50; Python completion fails under certain conditions
Date: Mon, 10 Oct 2022 22:29:16 +0900
[Message part 1 (text/plain, inline)]
I wrote:
> 
> I wrote:
> > I think `comint-snapshot-last-prompt' should not be called as long as 
> > `comint-output-filter' is not called and the Inferior Python Shell
> > buffer is not changed.  Attached is a patch to fix this issue.
> 
> Sorry, I was not aware of other processes using comint.  It might
> affect other processes.  I will reconsider the patch.

Attached is the revised patch to fix this issue.  Instead of
invalidating `comint-snapshot-last-prompt', I added codes to save and
restore the buffer local variable `comint-last-prompt-overlay' or
`comint-last-prompt'.

Best Regards,
[0001-Fix-Python-completion-failure-under-certain-conditio.patch (application/octet-stream, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#58389; Package emacs. (Tue, 11 Oct 2022 00:31:01 GMT) Full text and rfc822 format available.

Message #14 received at 58389 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: kobarity <kobarity <at> gmail.com>
Cc: 58389 <at> debbugs.gnu.org
Subject: Re: bug#58389: 29.0.50; Python completion fails under certain
 conditions
Date: Tue, 11 Oct 2022 02:29:59 +0200
kobarity <kobarity <at> gmail.com> writes:

> Attached is the revised patch to fix this issue.  Instead of
> invalidating `comint-snapshot-last-prompt', I added codes to save and
> restore the buffer local variable `comint-last-prompt-overlay' or
> `comint-last-prompt'.

Thanks; pushed to Emacs 29.




bug marked as fixed in version 29.1, send any further explanations to 58389 <at> debbugs.gnu.org and kobarity <kobarity <at> gmail.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Tue, 11 Oct 2022 00:31:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 08 Nov 2022 12:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 280 days ago.

Previous Next


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