[R] cat(), Rgui, and support for carriage return \r...

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Mar 29 09:49:55 CEST 2006

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

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

Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

More information about the R-help mailing list