From maechler at stat.math.ethz.ch  Tue Nov 30 12:51:12 2004
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Tue Nov 30 12:51:15 2004
Subject: [Rd] a better "source(echo=TRUE)"  {was "....how to pause...."}
In-Reply-To: <2kpjq0p9bq1i8b2258rl71bds4k9bg83fq@4ax.com>
References: <b68812e704112708422b5228a4@mail.gmail.com>
	<1101582479.13352.37.camel@horizons.localdomain>
	<b68812e704112718032d3cf7d8@mail.gmail.com>
	<vuhiq095lke0trblge8161b3dakaubg776@4ax.com>
	<2kpjq0p9bq1i8b2258rl71bds4k9bg83fq@4ax.com>
Message-ID: <16812.24240.754731.879678@gargle.gargle.HOWL>

>>>>> "Duncan" == Duncan Murdoch <murdoch@stats.uwo.ca>
>>>>>     on Sun, 28 Nov 2004 10:25:24 -0500 writes:

    Duncan> <........>
    Duncan> <........>

    Duncan> We already have code to source() from the clipboard, and it could
    Duncan> address the problems above, but:

    Duncan> - Source with echo=T doesn't echo, it deparses, so some comments are
    Duncan> lost, formatting is changed, etc.

yes, and we would have liked to have an alternative "source()"
for a *very* long time...
Examples where I "hate" the non-echo (i.e. the loss of all
comments and own-intended formatting) is when you use it for
demos, etc, notably in R's own  demo() and example() functions.

But to do this might be more tricky than at first thought:
Of course you can readLines() the source file and writeLines()
them to whatever your console is. The slightly difficult thing
is to "see" which junks to ``send to R'' , i.e. to parse() and eval().
The basic problem seems to see when expressions are complete.

Maybe we should / could think about enhancing parse() {or a new
function with extended behavior} such that it would not only
return the parse()d expressions, but also indices (byte or even
line counters) to the source text, indicating where each of the
expression started and ended.

That way I could see a way to proceed.

Martin

    Duncan> <........>
    Duncan> <........>


[Rd] a better "source(echo=TRUE)" {was "....how to pause...."}
Martin Maechler