<div>Hi Thomas,<br></div><div>These definitely solved all my problems. Thanks for your help.</div><div> </div><div>Tom<br></div><div class="gmail_quote">On Thu, Nov 24, 2011 at 4:18 AM, Thomas Kluyver <span dir="ltr">&lt;<a href="mailto:takowl@gmail.com">takowl@gmail.com</a>&gt;</span> wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote"><div class="gmail_quote"><div class="im">On 24 November 2011 03:17, Tom Bennett <span dir="ltr">&lt;<a href="mailto:tom.bennett@mail.zyzhu.net" target="_blank">tom.bennett@mail.zyzhu.net</a>&gt;</span> wrote:<br>
<blockquote style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">

<p>1) In 0.11 and 0.12 we have lost the ability to save  macros.</p></blockquote></div><div>It&#39;s back for 0.12, in the &#39;storemagic&#39; extension. Add that to c.InteractiveShellApp.extensions in your ipython_config.py file to have it always enabled.<br>


 </div><div class="im"><blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote"><p>2) Some of my macros are pretty complicated.  I would like to be able create macros by using an editor insteas of typing them under the command prompt</p>


</blockquote></div><div>&quot;%macro mymacro thefile.py&quot; should define a macro from a file. Or I&#39;m sure it&#39;s possible to use %edit and %macro somehow if you prefer.<br></div><div class="im"><blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">



<p>An alternative I am thinking about is to use %run file args. The problems with that are: 1) the args parameter is quite limited. I cannot pass variables to it;</p></blockquote></div><div>If you call %run -i file, it will be run in your namespace (like a macro), so it can refer to variables you&#39;ve already defined.<br>


</div><div class="im"><blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote"><p>2) it is a lot to type &quot;run file args&quot; every single time</p>
</blockquote>

</div><div>Try %r &lt;up arrow&gt;.<br> </div><div class="im"><blockquote style="margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid;" class="gmail_quote">
<p> </p>
<p>A third way is just to define a python function.  For example:</p><p> </p><div>def my_command(param1):<br>    s = Object(param1)<br>    vw = View(s)<br>    vw.show()</div><p> </p><div>The problem with this is that I want s and vw to be in the global namespace, so that after my_command finishes, I can still play with s and vw.  So this does not work either.</div>


</blockquote></div><div><br>If you put &quot;global s, vw&quot; at the top of the function, they are put into the global namespace. That&#39;s not IPython magic - it&#39;s standard Python.<br><br>Hope that helps ;-)<br><font color="#888888">Thomas<br>


</font></div></div><br>
</blockquote></div><br>