<div dir="ltr">Editra, an extensible programmer's editor written in wxPython, contain a cool IPython plugin. This mail is a follow up for a discussion with <cite>Laurent</cite> , The author of the plugin, in his blog, continue here according to his request. The Orginal discassion can be found in <a href="http://ipython0.wordpress.com/2008/04/25/editra-ipython-plugin-under-work/">http://ipython0.wordpress.com/2008/04/25/editra-ipython-plugin-under-work/</a> or at the end of this mail.<br>
<br><br>Using papi to set\redefine IPython's magic word partly do the job, The other part is to execute some arbitrary python code inside The ipython shell. Invoking papis "ex" method (Using papi from <i>ipython_panel.IP._IP.getapi() </i>) let the Code run in IPython's context, but the output is printed to Editra's stdout (The console in wich I invoked editra's from) and not in the IPython in the shelf.  My attempts to set sys.stdout to an handler from, let say, _term.cout or others, cused IPython to stack. futher more, the Exeption throws while I call ip.ex, is cought within Editra and withn IPython.<br>
<br>Further more - I wish to change, If I can, Only IPyShell/__init__.py and not the stuff in "IPython" dir, as it seems as a "pure" copy of IPython's orginal source (is it?)<br><br><br>Thanks,<br>
Ronen.<br><br><br>--------------------------------------<br>The orginal discassion:<br><ol class="commentlist snap_preview"><li class="comment even thread-even depth-1" id="comment-25"><cite>Ronen</cite> Says:                                           <br>

                        <small class="commentmetadata"><a href="http://ipython0.wordpress.com/2008/04/25/editra-ipython-plugin-under-work/#comment-25" title="">February 21, 2009 at 8:18 pm</a> </small>

                        <p>That’s a one cool Plugin.</p>
<p>What will make it ideal, is better integration with Editra’s Editor:<br>
Make ipython’s %edit Open the edit-buffer in Editra’s current Windows,
and Enable poeple to run The code they edit in Editra inside the open
IPython windows…<br>
Any hint where should I try to hack in order to achieve those?  </p>
<p>Thanks,<br>
Ronen.</p>

                </li><li class="comment odd alt thread-odd thread-alt depth-1" id="comment-26">
                        <img alt="" src="http://1.gravatar.com/avatar/7d4c274b8ecba154d3ee55838145bb23?s=32&d=identicon" class="avatar avatar-32" width="32" height="32">                   <cite>Laurent</cite> Says:                                          <br>

                        <small class="commentmetadata"><a href="http://ipython0.wordpress.com/2008/04/25/editra-ipython-plugin-under-work/#comment-26" title="">February 22, 2009 at 10:45 am</a> </small>

                        <p>Hello,<br>
You can have access to the plugin repos:</p>
<p> # Non-members may check out a read-only working copy anonymously over HTTP.<br>
svn checkout <a href="http://editra-plugins.googlecode.com/svn/trunk/" rel="nofollow">http://editra-plugins.googlecode.com/svn/trunk/</a> editra-plugins-read-only </p>
<p>The plugin name is ipyshell, in it’s directory you’ve got the whole ipython source + the plugin source.</p>
<p>It need a little refresh for sure <img src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> .</p>
<p>If you want to try to hack it take a look @Ipython/gui/wx the whole code is in ipython_view and ipshellnonblocking.</p>
<p>ipython_view -> gui interface<br>
ipshellnonblocking -> the interface with ipython</p>
<p>You can add:<br>
        ip = IPython.ipapi.get()<br>
        def myEdit(self, arg):<br>
            print ‘do what you want’<br>
        ip.expose_magic(’edit’, myEdit)</p>
<p>to WxNonBlockingIPShell inside ipython_view.py</p>
<p>Please note that if ipython is ever installed on your system you’ll
have to make a eggsetup.py develop to make sure to use your new local
copy.</p>
<p>We can discuss about all of this in ipython-dev mailing list <img src="http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> </p>
<p>Cheers,<br>
Laurent</p>

                </li></ol><br><br></div>