Variable: python-shell-completion-setup-code
python-shell-completion-setup-code is a customizable variable defined
in python.el.gz.
Value
"\ndef __PYTHON_EL_get_completions(text):\n completions = []\n completer = None\n\n import json\n try:\n import readline, re\n\n try:\n import __builtin__\n except ImportError:\n # Python 3\n import builtins as __builtin__\n builtins = dir(__builtin__)\n\n is_ipython = ('__IPYTHON__' in builtins or\n '__IPYTHON__active' in builtins)\n\n if is_ipython and 'get_ipython' in builtins:\n def filter_c(prefix, c):\n if re.match('_+(i?[0-9]+)?$', c):\n return False\n elif c[0] == '%' and not re.match('[%a-zA-Z]+$', prefix):\n return False\n return True\n\n import IPython\n try:\n if IPython.version_info[0] >= 6:\n from IPython.core.completer import provisionalcompleter\n with provisionalcompleter():\n completions = [\n [c.text, c.start, c.end, c.type or '?', c.signature or '']\n for c in get_ipython().Completer.completions(text, len(text))\n if filter_c(text, c.text)]\n else:\n part, matches = get_ipython().Completer.complete(line_buffer=text)\n completions = [text + m[len(part):] for m in matches if filter_c(text, m)]\n except:\n pass\n else:\n # Try to reuse current completer.\n completer = readline.get_completer()\n if not completer:\n # importing rlcompleter sets the completer, use it as a\n # last resort to avoid breaking customizations.\n import rlcompleter\n completer = readline.get_completer()\n if getattr(completer, 'PYTHON_EL_WRAPPED', False):\n completer.print_mode = False\n i = 0\n while True:\n completion = completer(text, i)\n if not completion:\n break\n i += 1\n completions.append(completion)\n except:\n pass\n finally:\n if getattr(completer, 'PYTHON_EL_WRAPPED', False):\n completer.print_mode = True\n return json.dumps(completions)"
Documentation
Code used to setup completion in inferior Python processes.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/python.el.gz
;;; Shell completion
(defcustom python-shell-completion-setup-code
"
def __PYTHON_EL_get_completions(text):
completions = []
completer = None
import json
try:
import readline, re
try:
import __builtin__
except ImportError:
# Python 3
import builtins as __builtin__
builtins = dir(__builtin__)
is_ipython = ('__IPYTHON__' in builtins or
'__IPYTHON__active' in builtins)
if is_ipython and 'get_ipython' in builtins:
def filter_c(prefix, c):
if re.match('_+(i?[0-9]+)?$', c):
return False
elif c[0] == '%' and not re.match('[%a-zA-Z]+$', prefix):
return False
return True
import IPython
try:
if IPython.version_info[0] >= 6:
from IPython.core.completer import provisionalcompleter
with provisionalcompleter():
completions = [
[c.text, c.start, c.end, c.type or '?', c.signature or '']
for c in get_ipython().Completer.completions(text, len(text))
if filter_c(text, c.text)]
else:
part, matches = get_ipython().Completer.complete(line_buffer=text)
completions = [text + m[len(part):] for m in matches if filter_c(text, m)]
except:
pass
else:
# Try to reuse current completer.
completer = readline.get_completer()
if not completer:
# importing rlcompleter sets the completer, use it as a
# last resort to avoid breaking customizations.
import rlcompleter
completer = readline.get_completer()
if getattr(completer, 'PYTHON_EL_WRAPPED', False):
completer.print_mode = False
i = 0
while True:
completion = completer(text, i)
if not completion:
break
i += 1
completions.append(completion)
except:
pass
finally:
if getattr(completer, 'PYTHON_EL_WRAPPED', False):
completer.print_mode = True
return json.dumps(completions)"
"Code used to setup completion in inferior Python processes."
:type 'string)