On Sat, 31 Jan 2015 07:37:01 -0600
"Edward K. Ream" <[email protected]> wrote:

> In any case, new code will be required to capture and render the
> output of execute-script, regardless of where the rendering winds up.

Unless you just use vs-eval :-)

It executes the selected text, shows the output in the log pane, then
selects the next line.  So for this code:

    a = 2
    b = 3
    c_ = 4
    print c_
    print c_+2
    d = a+b
    
if you select-all vs-eval the log pane shows

4
6
5

one output for each print and one output for the last assignment.

If instead of select all you just place the cursor at the start of the
first line and repeatedly vs-eval, the output in the log pane is

2, 3, 4, 4, 6, 5 (on separate lines)

vs-eval doesn't understand multi line code one line at a time, you have
to select a valid block (the whole def or for) and execute it all at
once.

And at any point you can insert the last result into the body with
vs-last or vs-last-pretty.  So I can type 52*40*12.5, select it,
ls-eval (bound to a handy key of course) and ls-last to put the answer
in.

Or there's the livecode plugin which is more interactive, and currently
has a dependency on the `meta` module.  I see live code as more of a
toy / teaching aid, although I suppose it could be useful for
developing fiddly things, like:

    import re
    x = re.compile('[123]')
    x.match("543")
    x.match("354")

so as you edit the regexp the match results are updated in real time
allowing you to know when you have the effect you want.  That's how
everyone writes regexp, right, just keep changing it randomly until it
works? :-)

So yes, Leo can have more ways of executing code, but it already has
four:

  - execute-script / @button, which can bind results anywhere it wants,
    including p.insertAsLastChild().b = repr(result)

    Maybe this last would be better as

    def log(self, result):
        nd = self.insertAsLastChild()
        nd.h = time.strftime('%H:%M:%S %b %d %Y, %a')
        nd.b = repr(result)
    ...
    p.log(result)

  - vs-eval

  - the rest of the valuespace plugin machinery, which is quite
    abstract but I suspect quite powerful in terms of its whole-tree
    integration

  - live code

Cheers -Terry

-- 
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