[IPython-dev] Re: ipython: patch to implement @bookmark, @cdb magics

Fernando Perez Fernando.Perez at colorado.edu
Tue Jun 29 17:14:19 EDT 2004

Ville Vainio wrote:
> Fernando Perez wrote:
>>I'd actually prefer to implement the 'cd to bookmark' via a -b option 
>>to @cd instead of as a wholesale new magic.  It keeps the 
>>functionality nicely together, and it makes it more likely that people 
>>will actually use it.
> Hmm, I'd kinda like to have it as cdb. It's much faster to type, and I 
> implemented it in anticipation of frequent directory switching back and 
> forth, like cdb foos [foo source], do some stuff there, cdb fooh [foo 
> header], do other stuff there.


I really try to keep the number of builtin magics under control.  Especially 
since it's so trivial to write a one-line magic in your own config file that 
delegates (pseudo code below):

def magic_cdb(foo):
   self.magic_cd('-b %s' % foo)

I actually have a bunch of such 'private' magics to suit my own personal 
taste, but I don't include them in the distribution.  It's better to 
distribute a few flexible functions, and let the hacker/twiddler-minded ones 
(like myself) do the fine-tuning on their own.  The builtin magic list is 
large enough as it is.

But overall I like the patch quite a bit, along with the idea for a persistent 
storage pickle.  This can be extended later to many things.  I'll have to 
think about whether to have that name be tied to a profile or not, you might 
want your bookmarks to be general, or not.  I'm not really sure.

> Well, the new patch I've attached implements it that way anyway ;-). I 
> also removed the persistent file as config option; I just couldn't get 
> the config system working :-/. I guess it could be implemented as config 
> option once the config system is fixed, i.e. python-based configuration 
> files are implemented.

The config option has to be initialized in ipmaker.py.  That stuff is a mess, 
which is why I want to rewrite it.  The reason it's so ugly, is because it 
used to be my $PYTHOSTARTUP file, which eventually became an object initalizer 
routine.  But all of that needs to go into the underlying object itself.

There's no rush, I doubt I'll get to work on these patches before the weekend. 
    So feel free to play with them further.  But I think it's a really nice 
idea, so keep going.



More information about the IPython-dev mailing list