Re: [Rd] Wishlist: Sweave: allow line breaks after forward slashes (PR#9444)

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Tue 16 Jan 2007 - 11:46:51 GMT

On 1/16/2007 5:26 AM, Arne Henningsen wrote:
> On Tuesday 16 January 2007 05:22, Duncan Murdoch wrote:

>> On 1/15/2007 5:43 PM, Arne Henningsen wrote:
>>> On Monday, 15. January 2007 18:44, Duncan Murdoch wrote:
>>>> On 1/15/2007 11:23 AM, Arne Henningsen wrote:
>>>>> [...]
>>>>> I prefer to use "keep.source=FALSE", because I generally like that
>>>>> Sweave takes the job to format the code chunks. Therefore, it would be
>>>>> great if Sweave is allowed to introduce line breaks after forward
>>>>> slashes, e.g. if deparse() adds a blank after a forward slash.
>>>>> Please move this wish from "wishlst-fulfilled" to "wishlst".
>>>> I don't think so.  If I thought it was a reasonable request, I'd do
>>>> that, but it's not.  You have a perfectly general solution to your
>>>> problem.
>>> However, setting "keep.source = FALSE" has (IMHO) one major advantage:
>>> I can easily (and globally) change the width of the code chunks by
>>> "options( width = XXX )", e.g. if I change the paper size, the margins or
>>> the font size. With "keep.source = TRUE", I would have to reformat all
>>> code chunks by hand and I generally prefer that my software (LaTeX,
>>> Sweave) does this task for me. Hence,  "keep.source = TRUE" is not a
>>> "perfectly general solution" (at least) for me.
>> No, you would only have to reformat the one code chunk where you set
>> keep.source = TRUE.  It doesn't need to be a global option.

>
> Okay, that's true, but I have more than one code chunk that is not nicely
> formatted because of "/" signs. (And I generally don't like manual
> formatting ;-)).
>
> Is there any reason for deparse() to add spaces around "+", "-", and "*"
> operators but not around "/" operators?
> R> deparse(parse( text = "a+b-c*d/e" ))
> [1] "expression(a + b - c * d/e)"

I don't know, but it has been like that for the complete history of the source code in the repository (almost 10 years). I suppose someone thought

  a + b - c * d /
  e

would look ugly (even though they were happy to put one of the other operators at the end of the line). This makes me quite reluctant to change it: people get upset about changes to the look of their old scripts, because they trigger spurious check errors.

Duncan Murdoch

>

>>>> The fact that it isn't the one you want doesn't mean it needs
>>>> to be listed as an outstanding issue in the bug reporting system.
>>> Okay. Where can I list "minor" wishes?
>> On your to-do list?

>
> Yes, that's a good idea!
> This is my patch of /src/main/names.c:
>
> --- names.c.orig 2007-01-16 11:03:24.000000000 +0100
> +++ names.c 2007-01-16 10:30:43.000000000 +0100
> @@ -149,7 +149,7 @@
> {"+", do_arith, PLUSOP, 1, 2, {PP_BINARY, PREC_SUM, 0}},
> {"-", do_arith, MINUSOP,1, 2, {PP_BINARY, PREC_SUM, 0}},
> {"*", do_arith, TIMESOP,1, 2, {PP_BINARY, PREC_PROD, 0}},
> -{"/", do_arith, DIVOP, 1, 2, {PP_BINARY2, PREC_PROD, 0}},
> +{"/", do_arith, DIVOP, 1, 2, {PP_BINARY, PREC_PROD, 0}},
> {"^", do_arith, POWOP, 1, 2, {PP_BINARY2, PREC_POWER, 1}},
> {"%%", do_arith, MODOP, 1, 2, {PP_BINARY2, PREC_PERCENT,0}},
> {"%/%", do_arith, IDIVOP, 1, 2, {PP_BINARY2, PREC_PERCENT,0}},
>
> (I have removed some blanks so that each line fits in a single line)
>
> Now I get:
> R> deparse(parse( text = "a+b-c*d/e" ))
> [1] "expression(a + b - c * d / e)"
>
> Does this patch has any negative side effects?
>
> "make check" fails, but AFAIK this is just because of different positions of
> line breaks:
> [...]
> running code in 'reg-tests-2.R' ... OK
> comparing 'reg-tests-2.Rout'
> to './reg-tests-2.Rout.save' ...3639,3640c3639,3640
> < aov(formula = dep.variable ~ f1 * f2 + Error(subject / (f1 +
> < f2)), data = sample.df)
> ---
>> aov(formula = dep.variable ~ f1 * f2 + Error(subject/(f1 + f2)),
>>     data = sample.df)

> 3693,3694c3693,3694
> < aov(formula = dep.variable ~ f1 * f2 + Error(subject / (f2 +
> < f1)), data = sample.df)
> ---
>> aov(formula = dep.variable ~ f1 * f2 + Error(subject/(f2 + f1)),
>>     data = sample.df)

> make[3]: *** [reg-tests-2.Rout] Fehler 1
> [...]
>
>> Duncan Murdoch

>
> Thank you for all your hints,
> Arne
>

R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Jan 16 22:51:46 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 17 Jan 2007 - 23:32:47 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.