[IPython-dev] IPython and Eclipse

Fernando Perez Fernando.Perez at colorado.edu
Fri Jan 28 21:44:15 EST 2005

Hi Fabio,

this discussion is best had on the ipython-dev list, for various reasons: I 
don't have win32 experience, there are some Eclipse users there, and there's 
also a chance someone might pick it up and help via gmane.

I'm cc-ing the list in my reply, so I encourage you to subscribe (or use it 
via gmane).  It's very low traffic.  Having said  that...

Fabio Zadrozny wrote:
> Hy Fernando,
> I'm trying to integrate IPython in the PyDev plugin (python eclipse plugin),
> but I'm having some problem understanding its behaviour (I must say I didn't
> look at its code yet).

This sounds great!  I know many people like eclipse very much, so this would 
be an excellent addition to ipython's bag of tricks.


> Now, trying a simple statement gives me an error
> ---------------------
> In [1]: a = []
> In [2]: ------------------------------------------------------------
>    File "<console>", line 1
>      a = []
>            ^
> SyntaxError: invalid syntax
> ---------------------
> But if I go for the help it works:
> ---------------------
> %magic


> Well, this is my first attempt to do it, so, I thought you might have some
> better ideas on why is this happening (I think it is because of the way the
> eclipse console treats things, but I also didn't give a better look at it
> because I think a better understanding on how ipython works would be
> essential to it).
> Any ideas?

I don't really know, but something looks fishy about your example.  In 
particular, why is the exception printed on top of the next input line? 
Here's what a SyntaxError should look like:

In [1]: a b
    File "<console>", line 1
      a b
SyntaxError: invalid syntax

In [2]:

That makes me wonder if Eclipse is mucking around with standard in/out, and 
perhaps putting funky characters at the end of the line?  Or maybe ipython's 
sources are doinng that, I honestly don't know.

I'm afraid this effort  may take a bit of digging under the hood on your part, 
though.  I'll be happy to help where I can, obviously.  You might want to 
stuff the ipython core input handling functions with print statements, getting 
the repr() of the input printed to see control chars.  Go into 
IPython/iplib.py, and look at the _prefilter() routine.  That's the input 
handler, you might want to play there a bit.  Most of the core ipython code is 
in iplib (be warned, it's quite messy).  Let me know if you get really 
confused, and I'll give you a hand.



More information about the IPython-dev mailing list