mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-05 07:01:11 -08:00
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.
This commit is contained in:
parent
a5e39bfae8
commit
02dc8dac7e
1 changed files with 6 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue