this issue is qtconsole specific. ipdb is working fine in a "normal" ipython session.
i'm using ipython 0.11 (stable release) on opensuse 11.4
Yup, currently ipdb in the qtconsole has two major and related limitations: no history (see #682) and no tab completion. We'd love some manpower on this...
I tried playing around a bit with rlcompleter within pdb, alas without success. Any suggestion on how this problem should be approached? I understand that pdb basically uses raw_input to get commands, so one should probably replace that with a more advanced shell?
It's not something that can be solved purely within pdb. The IPython kernel would need a way to delegate finding tab completions at a raw_input prompt to the package that produced the prompt. AFAIK, the kernel also blocks while waiting for input, so we'd need some way to work around that. That will probably take quite some thought.
Agreed, this is not an easy one: in the terminal, I'm pretty sure readline runs in a thread and calls the completion code in that thread, but it does all that automatically, so user code only has to provide custom completers, without worrying about thread management. I'm really not sure how to get the completion code to fire on a kernel that's blocking while it waits for stdin: we can certainly capture the event on the client easily, but the question is how to send the completion request to the kernel whose main thread is blocking (the zmq code listens on the main thread). Tricky one indeed.
If pdb uses raw_input, which is a function in ipython/zmq, would it be possible to create a second, thread-aware version of raw_input, and then get pdb to use that?
Sorry if I sound like a fool, I certainly do not know about the iPython code.
Is it possible to pipe stdin/stdout of the pdb and never actually give it access to the console, instead the same thread as iPython will get the console, interpret it (maybe Tab complete), then write to pdb stdin.