'Repeatedly issue a prompt, accept input, parse an initial prefix
off the received input, and dispatch to action methods, passing them
the remainder of the line as argument.
override the same methods from cmd.Cmd to provide prompt toolkit replacement.'

def cmdloop(self, intro=None):

    if (not self.use_rawinput):
        raise ValueError('Sorry    ipdb    does    not    support    use_rawinput=False')
    self.preloop()
    try:
        if (intro is not None):
            self.intro = intro
        if self.intro:
            self.stdout.write((str(self.intro) + '\n'))
        stop = None
        while (not stop):
            if self.cmdqueue:
                line = self.cmdqueue.pop(0)
            else:
                self._ptcomp.ipy_completer.namespace = self.curframe_locals
                self._ptcomp.ipy_completer.global_namespace = self.curframe.f_globals
                try:
                    line = self.pt_cli.run(reset_current_buffer=True).text
                except EOFError:
                    line = 'EOF'
            line = self.precmd(line)
            stop = self.onecmd(line)
            stop = self.postcmd(stop, line)
        self.postloop()
    except Exception:
        raise
