[ESS] Yet another indentation question: indentation after parenthese
Mathieu Basille
basille at ase-research.org
Fri Dec 16 18:03:48 CET 2011
Until now, I did it interactively for a given buffer (M-x ess-set-style
RET RRR) or globally by adding in my .emacs (I always start with an
empty emacs) as recommended in the R manual:
(add-hook 'ess-mode-hook
(lambda ()
(ess-set-style 'RRR 'quiet)
(add-hook 'local-write-file-hooks
(lambda ()
(ess-nuke-trailing-whitespace)))))
(setq ess-nuke-trailing-whitespace-p t)
I thus tried, again with an empty .emacs, the sequence you just
described. It added in the custom variables:
(custom-set-variables
'(ess-default-style (quote RRR)))
But still, nothing changed for the open-parenthesis behaviour: I still
have indentation after the open-parenthesis. And I can confirm that, in
all cases, 'ess-style' is set to 'RRR' for the buffer (I checked with
'C-h v ess-style').
Once again, thanks for your efforts. I'm still feeling like I'm doing
something wrong, but can't see what...
Mathieu.
Le 16/12/2011 11:49, Richard M. Heiberger a écrit :
> How did you change the variable?
>
> The correct way is to use customize.
>
> C-h v ess-default-style <RET>
>
> middle-click on the word customize
> click on the button Value menu
> Click Common R
> click Save for future sessions
> click Exit
> close emacs
> start a new emacs session
>
>
>
> On Fri, Dec 16, 2011 at 11:39 AM, Mathieu Basille
> <basille at ase-research.org <mailto:basille at ase-research.org>> wrote:
>
> Dear Richard,
>
> Thanks for your answer! I didn't know about the RRR style, which was not
> described in the R manual at
> http://cran.r-project.org/doc/manuals/R-ints.html#R-coding-standards
> (!). It seems that RRR does what I want to do. And my problem seemed to
> lie in 'ess-arg-function-offset', which indents the statements at
> open-parenthesis if it is not set to a number.
>
> However, to my surprise, using RRR style did not change anything to my
> problem. I then tried with an empty .emacs (which should thus use the
> default style, with 'ess-arg-function-offset' set to 2), and my problem
> was still not solved. I also tried to manually set every indentation
> variable ('ess-indent-level', 'ess-continued-statement-offset',
> 'ess-brace-offset', 'ess-arg-function-offset', 'ess-expression-offset',
> 'ess-else-offset', 'ess-close-brace-offset') to 4, and it did not change
> anything either to this problem... Of course, I checked the value of the
> style and each variable with 'C-h v', and they are set up as expected.
> All the time, the indentation (with C-M-q or TAB) ends up at the
> open-parenthesis.
>
> I'm more lost than ever... Is there any reason that the indentation to
> the open-parenthesis of 'ess-arg-function-offset' (if this is the
> correct variable) would prevail against any user setting? Or am I
> missing something again?
>
> I deeply thank you for your efforts. I wanted to achieve what I thought
> to be a simple task, i.e. using R formatting style as used by the R
> parser, and I realise it is not so easy.
>
> All the best,
> Mathieu.
>
>
> PS: If it is of any relevance, I have the same behaviour with ESS 5.14-1
> (Debian Testing) and 5.11-1 (Debian Stable).
>
>
>
> Le 16/12/2011 10:38, Richard M. Heiberger a écrit :
> > Mathieu,
> >
> > ESS has several options on indenting code.
> > Please look at ess-style-alist in file ess-custom.el and then try the
> > styles out.
> > My guess is that style RRR is the one you are looking for.
> > If you need something else, then you can probably figure out how
> to set
> > the parameters
> > for your needs. When you have what you want, give it a name and
> send it
> > to us for
> > inclusion in the next release.
> >
> > Rich
> >
> > On Fri, Dec 16, 2011 at 9:01 AM, Mathieu Basille
> > <basille at ase-research.org <mailto:basille at ase-research.org>
> <mailto:basille at ase-research.org <mailto:basille at ase-research.org>>>
> wrote:
> >
> > Le 16/12/2011 08:49, Vitalie Spinu a écrit :
> > > Mathieu Basille <basille at ase-research.org
> <mailto:basille at ase-research.org>
> > <mailto:basille at ase-research.org
> <mailto:basille at ase-research.org>>> writes:
> > >
> > >> Dear Vitalie,
> > >>
> > >> Thanks for you comment. My first message was not perfectly
> > clear... Your
> > >> example with 'foo' is misleading, since foo is exactly 3
> > character long.
> > >> Take this silly example instead:
> > >>
> > >> foo <- function(aaaaaaaaaa = 1, bbbbbbbbbb = 2, cccccccccc = 3,
> > >> dddddddddd = 4, eeeeeeeeee = 5)
> > >> {
> > >> return(data.frame(aaaaaaaaaa, bbbbbbbbbb, cccccccccc,
> dddddddddd,
> > >> eeeeeeeeee))
> > >> }
> > >>
> > >> The new line formatted by ESS starts just after the opening
> > parenthesis.
> > >> If I save the file in bla.R and source it with 'keep.source =
> > FALSE' to
> > >> use the R parser, here is what I get:
> > >>
> > >>> options(keep.source = FALSE)
> > >>> source("bla.R")
> > >>> foo
> > >> function (aaaaaaaaaa = 1, bbbbbbbbbb = 2, cccccccccc = 3,
> > dddddddddd = 4,
> > >> eeeeeeeeee = 5)
> > >> {
> > >> return(data.frame(aaaaaaaaaa, bbbbbbbbbb, cccccccccc,
> dddddddddd,
> > >> eeeeeeeeee))
> > >> }
> > >
> > > Ok, I got it. Check the keep.source option:
> > >
> > > options("keep.source")
> > >
> > > If it's FALSE I am getting your output and this is the
> problem of
> > R, ESS
> > > cannot easily help you here. In my setup keep.source is T,
> so I am
> > > getting everything ok.
> >
> > It is OK from an ESS perspective only. From a R perspective,
> it is not.
> > The main problem is that R and ESS do not format code the same
> way, and
> > I'd like to use R formatting, not ESS. The 'keep.source' option is
> > usually set to TRUE, but is generally set to FALSE for
> packages (which
> > makes formatting of R code consistent). Using 'keep.source =
> TRUE' does
> > not format at all the code; what the user wrote is totally
> kept as-is.
> > Basically, I'd like to write code which follows the rules of R
> itself.
> > In my opinion, this is a problem of ESS, not R!
> >
> > Is there really no possibility to get the R behaviour here? What I
> > normally do is 1) write my functions, 2) source them using
> 'keep.source
> > = FALSE' to use the R parser, and 3) paste them back in my
> .R/Rnw file.
> > But this is messy since it then conflicts with ESS style (e.g.
> every
> > time I add a new line, or hit C-M-q, the formatting gets
> changed back to
> > ESS rules)...
> >
> > Thanks for your answer,
> > Mathieu.
> >
> >
> > > HTH,
> > > Vitalie.
> > >
> > >>
> > >> That is, the new line simply adds 4 spaces from the left
> margin (not
> > >> from the opening parenthesis, which, I agree, would make no
> > sense) and
> > >> do not start after the opening parenthesis. There is two
> reasons
> > I would
> > >> like to have this behaviour with ESS: 1) first, it would not
> > change the
> > >> formatting of my functions if I source them with the R parser,
> > and 2) it
> > >> can be a real source of nightmares when there are many nested
> > >> parentheses, and everything gets pushed to the right.
> > >>
> > >> All the best,
> > >> Mathieu.
> > >>
> > >> Le 16/12/2011 06:32, Vitalie Spinu a écrit :
> > >>> Mathieu Basille <basille at ase-research.org
> <mailto:basille at ase-research.org>
> > <mailto:basille at ase-research.org
> <mailto:basille at ase-research.org>>> writes:
> > >>>
> > >>>> Dear ESS gurus,
> > >>>>
> > >>>> I feel like I'm really missing something... I searched
> heavily
> > on the net, in
> > >>>> the ESS manual, on this list, without finding what I'm
> looking
> > >> for. Basically,
> > >>>> when I try to indent some code (with M-C-q), if a line break
> > occurs in the
> > >>>> middle of parentheses or brackets, the next line will be
> > indented to the
> > >> first
> > >>>> character after the parenthesis. How can I get rid of
> this, and
> > get a
> > >> normal' 4
> > >>>> spaces indentation? (this is, I think, the behaviour of the R
> > parser)
> > >>>>
> > >>>
> > >>> I am not really understanding that. You mean that
> > >>>
> > >>>
> > >>> foo(arg1 = 1, arg2 = 2,
> > >>> arg3 = 3)
> > >>>
> > >>> Is not what you want? and you would like:
> > >>>
> > >>>
> > >>> foo(arg1 = 1, arg2 = 2,
> > >>> arg3 = 3)
> > >>>
> > >>> instead?
> > >>>
> > >>> Doesn't make sense to me.
> > >>>
> > >>> Vitalie.
> >
> > --
> >
> > ~$ whoami
> > Mathieu Basille, Post-Doc
> >
> > ~$ locate
> > Laboratoire d'Écologie Comportementale et de Conservation de
> la Faune
> > + Centre d'Étude de la Forêt
> > Département de Biologie
> > Université Laval, Québec
> >
> > ~$ info
> > http://ase-research.org/basille
> >
> > ~$ fortune
> > ``If you can't win by reason, go for volume.''
> > Calvin, by Bill Watterson.
> >
> > ______________________________________________
> > ESS-help at r-project.org <mailto:ESS-help at r-project.org>
> <mailto:ESS-help at r-project.org <mailto:ESS-help at r-project.org>>
> mailing list
> > https://stat.ethz.ch/mailman/listinfo/ess-help
> >
> >
>
> --
>
> ~$ whoami
> Mathieu Basille, Post-Doc
>
> ~$ locate
> Laboratoire d'Écologie Comportementale et de Conservation de la Faune
> + Centre d'Étude de la Forêt
> Département de Biologie
> Université Laval, Québec
>
> ~$ info
> http://ase-research.org/basille
>
> ~$ fortune
> ``If you can't win by reason, go for volume.''
> Calvin, by Bill Watterson.
>
>
--
~$ whoami
Mathieu Basille, Post-Doc
~$ locate
Laboratoire d'Écologie Comportementale et de Conservation de la Faune
+ Centre d'Étude de la Forêt
Département de Biologie
Université Laval, Québec
~$ info
http://ase-research.org/basille
~$ fortune
``If you can't win by reason, go for volume.''
Calvin, by Bill Watterson.
More information about the ESS-help
mailing list