]> code.delx.au - gnu-emacs/commitdiff
python.el: Fixes for IPython 3.x (Bug#20580)
authorFabián Ezequiel Gallina <fgallina@gnu.org>
Mon, 6 Jul 2015 04:59:02 +0000 (01:59 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Mon, 6 Jul 2015 04:59:02 +0000 (01:59 -0300)
* lisp/progmodes/python.el:
(python-shell-completion-native-setup): Fix IPython 3.x setup.
(python-shell-completion-native-get-completions): Fix timeout
logic.

lisp/progmodes/python.el

index fbf944f9c6866f26c1c45b2f93711b625a1626e3..0fe1aa97cd0a4c97e2c55aff9edf59b49f228064 100644 (file)
@@ -3171,9 +3171,12 @@ def __PYTHON_EL_native_completion_setup():
             if not is_ipython:
                 readline.set_completer(new_completer)
             else:
-                # IPython hacks readline such that `readline.set_completer`
+                # Try both initializations to cope with all IPython versions.
+                # This works fine for IPython 3.x but not for earlier:
+                readline.set_completer(new_completer)
+                # IPython<3 hacks readline such that `readline.set_completer`
                 # won't work.  This workaround injects the new completer
-                # function into the existing instance directly.
+                # function into the existing instance directly:
                 instance = getattr(completer, 'im_self', completer.__self__)
                 instance.rlcomplete = new_completer
         if readline.__doc__ and 'libedit' in readline.__doc__:
@@ -3304,7 +3307,7 @@ completion."
                 ;; output end marker is found.  Output is accepted
                 ;; *very* quickly to keep the shell super-responsive.
                 (while (and (not (re-search-backward "~~~~__dummy_completion__" nil t))
-                            (< (- current-time (float-time))
+                            (< (- (float-time) current-time)
                                python-shell-completion-native-output-timeout))
                   (accept-process-output process 0.01))
                 (cl-remove-duplicates