Variable: python-shell-pdb-setup-code

python-shell-pdb-setup-code is a variable defined in python.el.gz.

Value

"def __PYTHON_EL_Pdb_setup():\n    import pdb\n\n    class _PYTHON_EL_Pdb(pdb.Pdb, object):\n        def __init__(self, *args, **kw):\n            super(_PYTHON_EL_Pdb, self).__init__(*args, **kw)\n            import re\n            self._python_el_def_pattern = re.compile('__(PYTHON_EL|FFAP|PYDOC)_')\n            self._python_el_defs = {}\n            for k, v in globals().items():\n                if self._python_el_def_pattern.match(k):\n                    self._python_el_defs[k] = v\n\n        def _python_el_setup(self):\n            if not hasattr(self, 'curframe') or self.curframe is None:\n                return\n            frame_globals = self.curframe.f_globals\n            if '__PYTHON_EL_eval' not in frame_globals:\n                for k, v in self._python_el_defs.items():\n                    frame_globals[k] = v\n            try:\n                frame_globals['__PYTHON_EL_wrap_completer']()\n            except Exception as e:\n                print('failed to setup completer: {}'.format(str(e)))\n\n        def preloop(self):\n            super(_PYTHON_EL_Pdb, self).preloop()\n            # Trigger precmd/postcmd when entering pdb.\n            self.cmdqueue.append('pass  # __PYTHON_EL_')\n\n        def precmd(self, line):\n            if self._python_el_def_pattern.search(line):\n                self._real_lastcmd = self.lastcmd\n            return super(_PYTHON_EL_Pdb, self).precmd(line)\n\n        def postcmd(self, stop, line):\n            self._python_el_setup()\n            if self._python_el_def_pattern.search(line):\n                self.lastcmd = self._real_lastcmd\n            return super(_PYTHON_EL_Pdb, self).postcmd(stop, line)\n\n    pdb.Pdb = _PYTHON_EL_Pdb\n\n__PYTHON_EL_Pdb_setup()\ndel __PYTHON_EL_Pdb_setup"

Documentation

Code used to setup the debugger in inferior Python processes.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/python.el.gz
;;; PDB Track integration

(defconst python-shell-pdb-setup-code
  "\
def __PYTHON_EL_Pdb_setup():
    import pdb

    class _PYTHON_EL_Pdb(pdb.Pdb, object):
        def __init__(self, *args, **kw):
            super(_PYTHON_EL_Pdb, self).__init__(*args, **kw)
            import re
            self._python_el_def_pattern = re.compile('__(PYTHON_EL|FFAP|PYDOC)_')
            self._python_el_defs = {}
            for k, v in globals().items():
                if self._python_el_def_pattern.match(k):
                    self._python_el_defs[k] = v

        def _python_el_setup(self):
            if not hasattr(self, 'curframe') or self.curframe is None:
                return
            frame_globals = self.curframe.f_globals
            if '__PYTHON_EL_eval' not in frame_globals:
                for k, v in self._python_el_defs.items():
                    frame_globals[k] = v
            try:
                frame_globals['__PYTHON_EL_wrap_completer']()
            except Exception as e:
                print('failed to setup completer: {}'.format(str(e)))

        def preloop(self):
            super(_PYTHON_EL_Pdb, self).preloop()
            # Trigger precmd/postcmd when entering pdb.
            self.cmdqueue.append('pass  # __PYTHON_EL_')

        def precmd(self, line):
            if self._python_el_def_pattern.search(line):
                self._real_lastcmd = self.lastcmd
            return super(_PYTHON_EL_Pdb, self).precmd(line)

        def postcmd(self, stop, line):
            self._python_el_setup()
            if self._python_el_def_pattern.search(line):
                self.lastcmd = self._real_lastcmd
            return super(_PYTHON_EL_Pdb, self).postcmd(stop, line)

    pdb.Pdb = _PYTHON_EL_Pdb

__PYTHON_EL_Pdb_setup()
del __PYTHON_EL_Pdb_setup"
  "Code used to setup the debugger in inferior Python processes.")