forked from ipython/ipython
-
Notifications
You must be signed in to change notification settings - Fork 1
Cookbook: Macro arguments
Brian Granger edited this page Feb 13, 2013
·
1 revision
It's now (svn rev 2337) possible to call macros with arguments on the command line. This is handy if you have constructed an elaborate macro and want to %edit it to be more generic - specify different target directories to copy files etc.
The arguments to macros are always contained in IPython user namespace, in _margv list variable, created using the normal IPython autocall handling.
Here we create a macro that takes an argument by "simulating" the argument passing on the first run (line #1):
[C:\ipython]|1> _margv = (34,)
[C:\ipython]|2> print "hello",_margv[0]
hello 34
[C:\ipython]|3> macro morjensta 2
Macro `morjensta` created. To execute, type its name (without quotes).
Macro contents:
print "hello",_margv[0]
[C:\ipython]|4> morjensta "jukka"
hello jukka
[C:\ipython]|6> hist
1: _margv = (34,)
2: print "hello",_margv[0]
3: _ip.magic("macro morjensta 2")
4: morjensta("jukka")
5: print "hello",_margv[0]
6: _ip.magic("hist ")
[C:\ipython]|7>
Of course you can't now call the macro without arguments anymore:
[C:\ipython]|9> morjensta C:\ipython\<ipython console> in <module>() <type 'exceptions.IndexError'>: tuple index out of range