[R] cat(), Rgui, and support for carriage return \r...
Philippe Grosjean
phgrosjean at sciviews.org
Wed Mar 29 11:16:03 CEST 2006
Prof Brian Ripley wrote:
> On Tue, 28 Mar 2006, Duncan Murdoch wrote:
>
>
>>On 3/28/2006 11:00 AM, Prof Brian Ripley wrote:
>>
>>>Rgui now supports \r in the same way as rterm.
>>
>>I notice that there's a slight change to the colour scheme: now the prompt
>>">" is in foreground colour, rather than user colour. This might make sense
>>(it's printed by the system, after all), but it looks a little strange at
>>first.
>
>
> Yes, it was intentional. The problem is that you can now do
>
>
>>cat("abcde\rf")
>
>
> and then the next line will be
>
> f> de
Actually, there is an interest to do so with GUIs, like R Commander or
SciViews-R (although R commander uses its own in/out window by default).
The idea is to work with commands constructed by the GUI, and report the
corresponding command to the console, but to flag them with a "special"
prompt, telling it is different from what the user actually entered.
Something like:
> cat("\rGUI") # Tcl-triggered instruction
would give the following prompt:
GUI>
which is nice if there is a way to append a command in user color just
after it, for instance:
> cat("ls()\n") # Also triggered by Tcl code
giving:
GUI> ls()
with GUI> in foreground colour and ls() in user color.
Perhaps is it not possible, or even, not desirable to get this result
for other situations.
Best,
philippe Grosjean
> with the cursor on the 'd'. There is no longer a left-right divide
> between system output and user input, as you can have output to the right
> of user input. The previous behaviour was to mark as system output all
> the columns up to the 'e' here, so when you started entering new input it
> looked very odd indeed, changing colour in mid-word.
>
> I can change to making the prompt be explicitly regarded as user input,
> which would be backwards compatible and less odd in cases like this.
>
>
>>Duncan Murdoch
>>
>>
>>
>>>On Sun, 19 Mar 2006, Duncan Murdoch wrote:
>>>
>>>
>>>>On 3/18/2006 2:39 PM, Duncan Murdoch wrote:
>>>>
>>>>>On 3/17/2006 9:44 AM, Jeffrey Racine wrote:
>>>>>
>>>>>>Hi, and thanks in advance for your time.
>>>>>>
>>>>>>Background - I am working on a package and wish to have a routine's
>>>>>>progress reported. The routine can take some time, and I would like to
>>>>>>inform the user about the routine's progress. I have scoured the
>>>>>>archives but to no avail, so would like to solicit input from this list.
>>>>>>
>>>>>>I am successfully using
>>>>>>
>>>>>>cat("\rBootstrap replication ", i, " of ", boot.num,)
>>>>>>flush.console() # To flush stdout on windows systems
>>>>>>
>>>>>>which works as expected on *NIX systems and using Rterm under windows.
>>>>>>However, under Rgui the carriage return \r is ignored, and I certainly
>>>>>>don't want to use the newline escape sequence \n. Under Rgui it appears
>>>>>>as
>>>>>>
>>>>>>Bootstrap replication 1 of 399Bootstrap replication 2 of 399Bootstrap...
>>>>>>
>>>>>>but I want it to function properly if at all possible.
>>>>>>
>>>>>>My question is simply whether there is a portable way to implement this
>>>>>>so that it works regardless of the R platform the user may be working
>>>>>>on?
>>>>>>
>>>>>>Many thanks for any/all suggestions.
>>>>>
>>>>>I've just been looking at the source code for this. I think it will be
>>>>>relatively easy to make \r in Rgui do a destructive CR (i.e. it will
>>>>>return to the start of the line, but clear any existing characters).
>>>>>I'll play around a bit and then do that for R-devel.
>>>>
>>>>Oops, this was a bad idea. I did commit the change for a while, but
>>>>have reverted it now.
>>>>
>>>>It seems that the help system displays help pages by writing CR LF at
>>>>the end of each line; the CR is \r, and my change above caused it to
>>>>wipe out the line it had just written. The help pages ended up
>>>>completely blank.
>>>>
>>>>I may look into supporting \r as a non-destructive CR, but that's
>>>>harder, because it means low-level changes to the console display.
>>>>Right now it only writes to the end of the text buffer; this would mean
>>>>it would sometimes write to a spot before the end. I don't think it
>>>>would be impossible to do, but it will take more time than I have right
>>>>now.
>>>>
>>>>Duncan Murdoch
>>>>
>>>>______________________________________________
>>>>R-help at stat.math.ethz.ch mailing list
>>>>https://stat.ethz.ch/mailman/listinfo/r-help
>>>>PLEASE do read the posting guide!
>>>>http://www.R-project.org/posting-guide.html
>>>>
>>>
>>
>
More information about the R-help
mailing list