Show More
@@ -985,10 +985,7 b' class HistoryMagics(Magics):' | |||
|
985 | 985 | |
|
986 | 986 | |
|
987 | 987 | def init_ipython(ip): |
|
988 |
ip. |
|
|
989 | #ip.define_magic('hist', HistoryMagics.history) | |
|
990 | #ip.define_magic('recall', HistoryMagics.rep) | |
|
991 | ||
|
988 | ip.register_magics(HistoryMagics) | |
|
992 | 989 | # XXX - ipy_completers are in quarantine, need to be updated to new apis |
|
993 | 990 | #import ipy_completers |
|
994 | 991 | #ipy_completers.quick_completer('%hist' ,'-g -t -r -n') |
@@ -1999,7 +1999,11 b' class InteractiveShell(SingletonConfigurable):' | |||
|
1999 | 1999 | user_magics=mf.UserMagics(self)) |
|
2000 | 2000 | self.configurables.append(self.magics_manager) |
|
2001 | 2001 | |
|
2002 | self.magics_manager.register(mf.BasicMagics, mf.CodeMagics, | |
|
2002 | # Expose as public API new_magic and registere_magics | |
|
2003 | self.new_magic = self.magics_manager.new_magic | |
|
2004 | self.register_magics = self.magics_manager.register | |
|
2005 | ||
|
2006 | self.register_magics(mf.BasicMagics, mf.CodeMagics, | |
|
2003 | 2007 | mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics, |
|
2004 | 2008 | mf.AutoMagics, mf.OSMagics, mf.LoggingMagics, mf.ExtensionsMagics, |
|
2005 | 2009 | mf.PylabMagics, mf.DeprecatedMagics) |
@@ -2053,22 +2057,13 b' class InteractiveShell(SingletonConfigurable):' | |||
|
2053 | 2057 | |
|
2054 | 2058 | def define_magic(self, magic_name, func): |
|
2055 | 2059 | """Expose own function as magic function for ipython |
|
2056 | ||
|
2057 | Example:: | |
|
2058 | ||
|
2059 | def foo_impl(self, parameter_s=''): | |
|
2060 | 'My very own magic!. (Use docstrings, IPython reads them).' | |
|
2061 | print 'Magic function. Passed parameter is between < >:' | |
|
2062 | print '<%s>' % parameter_s | |
|
2063 | print 'The self object is:', self | |
|
2064 | 2060 | |
|
2065 | ip.define_magic('foo', foo_impl) | |
|
2061 | Note: this API is now deprecated. Instead, you should use | |
|
2062 | `get_ipython().new_magic`. | |
|
2066 | 2063 | """ |
|
2067 | return self.magics_manager | |
|
2068 | im = types.MethodType(func, self._magic) | |
|
2069 |
|
|
|
2070 | setattr(self._magic, 'magic_' + magic_name, im) | |
|
2071 | return old | |
|
2064 | warn('Deprecated API, use get_ipython().new_magic: %s\n' % | |
|
2065 | magic_name) | |
|
2066 | return self.new_magic(func, magic_name) | |
|
2072 | 2067 | |
|
2073 | 2068 | def find_line_magic(self, magic_name): |
|
2074 | 2069 | """Find and return a line magic by name.""" |
@@ -89,6 +89,11 b' def register_magics(cls):' | |||
|
89 | 89 | magics['cell'] = {} |
|
90 | 90 | return cls |
|
91 | 91 | |
|
92 | def _record_magic(dct, mtype, mname, func): | |
|
93 | if mtype == 'line_cell': | |
|
94 | dct['line'][mname] = dct['cell'][mname] = func | |
|
95 | else: | |
|
96 | dct[mtype][mname] = func | |
|
92 | 97 | |
|
93 | 98 | def validate_type(magic_type): |
|
94 | 99 | if magic_type not in magic_types: |
@@ -185,7 +190,7 b' class MagicsManager(Configurable):' | |||
|
185 | 190 | for mtype in magic_types: |
|
186 | 191 | self.magics[mtype].update(m.magics[mtype]) |
|
187 | 192 | |
|
188 |
def |
|
|
193 | def new_magic(self, func, magic_name=None, magic_type='line'): | |
|
189 | 194 | """Expose own function as magic function for ipython |
|
190 | 195 | |
|
191 | 196 | Example:: |
@@ -198,11 +203,11 b' class MagicsManager(Configurable):' | |||
|
198 | 203 | |
|
199 | 204 | ip.define_magic('foo', foo_impl) |
|
200 | 205 | """ |
|
206 | ||
|
201 | 207 | # Create the new method in the user_magics and register it in the |
|
202 | 208 | # global table |
|
203 |
self.user_magics.new_magic( |
|
|
204 |
self.magics |
|
|
205 | self.user_magics.magics[magic_type][magic_name] | |
|
209 | newm, name = self.user_magics.new_magic(func, magic_type, magic_name) | |
|
210 | _record_magic(self.magics, magic_type, name, newm) | |
|
206 | 211 | |
|
207 | 212 | # Key base class that provides the central functionality for magics. |
|
208 | 213 | |
@@ -362,10 +367,12 b' class Magics(object):' | |||
|
362 | 367 | error("%s is not a magic function" % fn) |
|
363 | 368 | self.options_table[fn] = optstr |
|
364 | 369 | |
|
365 |
def new_magic(self |
|
|
370 | def new_magic(self, func, magic_type='line', magic_name=None): | |
|
366 | 371 | """TODO |
|
367 | 372 | """ |
|
373 | magic_name = func.func_name if magic_name is None else magic_name | |
|
368 | 374 | validate_type(magic_type) |
|
369 | 375 | meth = types.MethodType(func, self) |
|
370 | 376 | setattr(self, magic_name, meth) |
|
371 |
self.magics |
|
|
377 | _record_magic(self.magics, magic_type, magic_name, meth) | |
|
378 | return meth, magic_name |
General Comments 0
You need to be logged in to leave comments.
Login now