Hi all,<br><br>Robert found that calling macros caused problems with my new history system, and suggested that they be expanded by prefiltering, so that the translated history stores the macro content each time it&#39;s called. My attempt to do that is here:<br>

<a href="https://github.com/takluyver/ipython/tree/expand-macro">https://github.com/takluyver/ipython/tree/expand-macro</a><br><br>However, I ran into trouble with the execution model - it seems to compile the macro in &quot;single&quot; mode, so only the first line gets executed. So I peered into the execution code, and ended up somewhat confused. I&#39;m hoping someone can clarify:<br>

- How much preprocessing is (and should be) done by IPython.core.prefilter versus IPython.core.inputsplitter?<br>- As far as I can see in the code, only a single line statement actually gets passed to prefilter. Yet prefiltering still seems to be going on if I enter a multiline block - and I&#39;m not quite sure how<br>

- Should prefiltering be in the frontend or the core? I&#39;m guessing the core, but there&#39;s some prefiltering code in the terminal frontend, although I think it&#39;s dead, because:<br>- Why does TerminalInteractiveShell have two raw_input methods defined? I&#39;m guessing the first one is older code: can I delete it to simplify matters? It&#39;s still there in version control if we need to refer to it.<br>

<br>Thanks,<br>Thomas<br><br><br>