[IPython-dev] %edit magic in new frontends

Fernando Perez fperez.net at gmail.com
Thu May 26 17:04:39 EDT 2011


On Thu, May 26, 2011 at 5:56 AM, Thomas Kluyver <takowl at gmail.com> wrote:
> In the Qt console, calling %edit will normally open the target in a GUI
> editor.* Editors that can open multiple documents may not block the call,
> although apparently some of them have command-line flags for that behaviour.
> So as it stands, %edit in the Qt console will show you a file you can change
> and save, but won't take any further action on it. Then again, since the Qt
> console has decent editing capabilities itself, you can use the %recall and
> %loadpy macros to bring code to the next prompt, and edit it there before
> running it.

It seems to me that %edit should, in the gui console, by default use
the -x flag always.  This way it's useful as a mechanism to quickly
load the thing you want to work on, but you're still responsible for
saving and doing %run yourself.

That doesn't bother me too much, because I think that with the
multiline capabilities of the Qt console, many of the use cases of
%edit are now subsumed by simply recalling a previous cell with
up-arrow and editing it right there.  And once the amount of code in
the cell becomes large, it's probably best to just keep a persistent
editor open using the classic 'save, alt-tab, run' cycle.

> We should also consider how we will want %edit to work in other situations,
> including the HTML notebook which is being prepared, and IPython as an
> embedded widget in other software.

Applications that embed the console can always override %edit to
synchronize with their own mechanisms; Evan, does that sound
reasonable for your use cases?

As for the html notebook, it would be really cool if edit would open
the file in-browser, either using a full-tab Codemirror cell or
something like ymacs (http://www.ymacs.org/).  But the architectural
decisions for magics with client-specific behavior are a bit tricky,
since all code is actually executed in-kernel, and the same kernel can
be simultaneously serving more than one client...

Cheers,

f



More information about the IPython-dev mailing list