bug-gnu-emacs
[Top][All Lists]
Advanced

[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.

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]