On Mon, 16 Nov 2015 04:46:28 -0800 (PST)
john lunzer <[email protected]> wrote:

> I think one way to make Leo more powerful and easier to learn is to
> further expose Leo to itself.
> 
> I recently was messing around with Terry's introspection script which
> lays outs the guts of an opject in a tree format. I did an
> introspection on g. Think of it as a dir(g) on steroids. What if the
> g subtree was alive? What if a Leo tree could represent live python
> object in a running python program, in this case specifically g in
> Leo itself. You could fully interact and modify these live subtrees.

Sort of related, I use vs-eval / vs-last / vs-last-pretty from the
valuespace plugin, described below.

These three commands are things I added to the valuespace plugin in what
I think was a misguided attempt to avoid creating yet another plugin,
thye're really unrelated to valuespace, except that they execute in the
namespace created by the valuespace plugin, c.vs.  Misguided, because I
think they're very useful and more generally understandable than the
rest of the valuespace plugin, which is clever, but complicated.

Having executed some code with vs-eval, I've used the introspection
script to introspect the results by answering "c.vs" to it's
"Introspect what" question.

>From the docs:

vs-eval

Execute the selected text, if any. Select next line of text.
Tries hard to capture the result of from the last expression in the
selected text:

  import datetime
  today = datetime.date.today()

will capture the value of today even though the last line is a
statement, not an expression. Stores results in c.vs['_last'] for
insertion into body by vs-last or vs-last-pretty. Removes common
indentation (textwrap.dedent()) before executing, allowing execution of
indented code. g, c, and p are available to executing code, assignments
are made in the c.vs namespace and persist for the life of c.

vs-last

Insert the last result from vs-eval. Inserted as a string, so
"1\n2\n3\n4" will cover four lines and insert no quotes, for repr()
style insertion use vs-last-pretty.

vs-last-pretty

Insert the last result from vs-eval. Formatted by pprint.pformat(), so
"1\n2\n3\n4" will appear as '"1\n2\n3\n4"', see all vs-last. 

Evaluating expressions 

All expression are evaluated in a context that predefines
Leo's c, g and p vars.



Cheers -Terry

> I do this manually through the IPython plugin (ILeo). It is a little 
> painful because executing scripts has known issues with output and
> pdb doesn't work right when Leo is in ILeo mode. 
> 
> If this concept could be extended to creating a live tree for any
> running python program it could turn Leo into one of the most
> powerful debugging tools available. 
> 
> I give Smalltalk (Pharo) some credit. The entire environement is
> alive and you can mess with any running object you want assuming you
> know what you're looking for.
> 
> Anyway, just a thought. Maybe it can lead to some exciting ideas for 
> Edward. Gotta get this guy Leo motivated again ;)
> 
> 

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.

Reply via email to