summaryrefslogtreecommitdiff
path: root/lisp/progmodes/python.el
diff options
context:
space:
mode:
authorFabián Ezequiel Gallina <fgallina@gnu.org>2015-07-06 01:59:02 -0300
committerFabián Ezequiel Gallina <fgallina@gnu.org>2015-07-06 01:59:02 -0300
commit02dc8dac7e9a7d3482d63d554bc20b579c74f072 (patch)
treeef10ffb50f340f433db27ca6806012410afe773a /lisp/progmodes/python.el
parenta5e39bfae8fe8950a01e01b1ae1ad864f5f523b4 (diff)
python.el: Fixes for IPython 3.x (Bug#20580)
* lisp/progmodes/python.el: (python-shell-completion-native-setup): Fix IPython 3.x setup. (python-shell-completion-native-get-completions): Fix timeout logic.
Diffstat (limited to 'lisp/progmodes/python.el')
-rw-r--r--lisp/progmodes/python.el9
1 files changed, 6 insertions, 3 deletions
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index fbf944f9c68..0fe1aa97cd0 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -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