[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#24401: python-shell-completion-native-try returns incorrect results
From: |
Clément Pit--Claudel |
Subject: |
bug#24401: python-shell-completion-native-try returns incorrect results with python 3.5.2 |
Date: |
Fri, 9 Sep 2016 19:07:54 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
Hi all,
Calling ‘run-python’ in ‘emacs -Q’ with ‘python-shell-interpreter’ set to
"python3", I get the following warning:
Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support
readline, yet ‘python-shell-completion-native’ was t and "python3" is not
part of the ‘python-shell-completion-native-disabled-interpreters’ list.
Native completions have been disabled locally.
This warning is specific to Python 3 (it doesn't happen with Python 2.7).
Additionally, the warning is spurious; native completion works fine. This
whole feature is new in Emacs 25.
The problem seems to be in
(defun python-shell-completion-native-try ()
"Return non-nil if can trigger native completion."
(let ((python-shell-completion-native-enable t)
(python-shell-completion-native-output-timeout
python-shell-completion-native-try-output-timeout))
(python-shell-completion-native-get-completions
(get-buffer-process (current-buffer))
nil "")))
The last call returns nil, apparently because ‘…-get-completions’ doesn't work
with an empty input string in Python 3.5.2 with Emacs 25; however, if I change
that last call as follows:
(python-shell-completion-native-get-completions
(get-buffer-process (current-buffer))
nil "_")
^ add an underscore here, or another character that has completions
Then the warning message doesn't appear any more. Put more succinctly:
Emacs 25, Python 2.7 (no warnings):
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> python.el: native completion setup loaded
(python-shell-completion-native-get-completions (get-buffer-process
(current-buffer)) nil "")
⇒ ("and" "as" "assert" "break" "class" "continue" "def" "del" "elif"
"else" "except" "exec" "finally" "for" "from" …)
(python-shell-completion-native-get-completions (get-buffer-process
(current-buffer)) nil "_")
⇒ ("__package__" "__PYTHON_EL_native_completion_setup" "__pyfile"
"__name__" "__code" "__doc__" "__import__" "__debug__")
Emacs 25, Python 3.5 (shows a warning):
Python 3.5.2 (default, Jul 5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> python.el: native completion setup loaded
(python-shell-completion-native-get-completions (get-buffer-process
(current-buffer)) nil "")
⇒ nil ;; ← This is the bug
(python-shell-completion-native-get-completions (get-buffer-process
(current-buffer)) nil "_")
⇒ ("__name__" "__package__" "__spec__"
"__PYTHON_EL_native_completion_setup" "__doc__" "__loader__" "__code"
"__pyfile" "__build_class__" "__import__" "__debug__")
Can we add the suggested underscore?
Cheers,
Clément.
signature.asc
Description: OpenPGP digital signature
- bug#24401: python-shell-completion-native-try returns incorrect results with python 3.5.2,
Clément Pit--Claudel <=