[ESS] Indentation questions

Vitalie Spinu spinuvit at gmail.com
Tue Nov 4 23:20:01 CET 2014


That makes sense. Could you please open a quick issue so that we don't
forget about it.

 Vitalie


 >>> Ista Zahn on Tue, 4 Nov 2014 10:04:51 -0500 wrote:

 > Hi again,
 > In the light of day I see my post from last night was rambling and
 > probably not clear or easy to answer. Sorry about that.

 > After sleeping on it I've got most of what I want with the following settings:

 > (setq ess-first-continued-statement-offset 2)
 > (setq ess-continued-statement-offset 0)
 > (setq ess-arg-function-offset-new-line 0)
 > (setq ess-arg-function-offset nil)

 > The final thing that I can't seem to nail down is this: I would really
 > like both "2's" in the following to be indented to the same level:

 > 1 +
 >   mean(rnorm(100), na.rm=TRUE) +
 >   2 +
 >   mean(rnorm(100),
 >        na.rm=TRUE) +
 >          2

 > I really don't see what relevance putting the second argument to
 > "mean" on a separate line has for the way the subsequent continuation
 > line should be indented. Please, if you know how to get this to indent
 > as

 > 1 +
 >   mean(rnorm(100), na.rm=TRUE) +
 >   2 +
 >   mean(rnorm(100),
 >        na.rm=TRUE) +
 >   2

 > I would be very grateful.

 > Thanks,
 > Ista

 > On Mon, Nov 3, 2014 at 10:36 PM, Ista Zahn <istazahn at gmail.com> wrote:
 >> Hi all,
 >> 
 >> I've been unhappy with ESS indention for some time, and finally got
 >> around to trying to adjust it to my taste. It didn't go well, and so
 >> I'm turning to the collective wisdom of this list for help. NOTE: this is
 >> a long post, due mostly to my inability to state my issue clearly. A shorter
 >> version is at https://github.com/emacs-ess/ESS/issues/120>
 >> OK, here goes; basically I like how Rstudio
 >> indents things, which mostly means lining up things up by reference to
 >> the calling function. Here are some examples (these examples also
 >> available at http://pastebin.com/y7UERhv6 in case your email client
 >> doesn't like to use a fixed-width font):
 >> 
 >> #Rstudio:
 >> mean(rnorm(100,
 >> mean = runif(1,
 >> 1,
 >> 10)),
 >> na.rm=TRUE
 >> )
 >> 
 >> # ESS
 >> mean(rnorm(100,
 >> mean = runif(1,
 >> 1,
 >> 10)),
 >> na.rm=TRUE
 >> )
 >> 
 >> The Rstudio version makes it easy to see which lines are arguments to
 >> which functions, and I'd like to set ESS to use a similar indentation
 >> style. I've fiddled with all the ess.*offset variables I can find, but
 >> I can't seem to find a satisfactory setting.
 >> 
 >> The biggest annoyance is the indentation of continuation lines. There
 >> have been several posts about this including
 >> http://emacs.1067599.n5.nabble.com/indentation-of-ggplot-code-and-ess-13-09-02-td322315.html> which suggests the following setting:
 >> 
 >> (add-to-list 'ess-style-alist
 >> '(my-style
 >> (ess-indent-level . 4)
 >> (ess-first-continued-statement-offset . 2)
 >> (ess-continued-statement-offset . 0)
 >> (ess-brace-offset . -4)
 >> (ess-expression-offset . 4)
 >> (ess-else-offset . 0)
 >> (ess-close-brace-offset . 0)
 >> (ess-brace-imaginary-offset . 0)
 >> (ess-continued-brace-offset . 0)
 >> (ess-arg-function-offset . 4)
 >> (ess-arg-function-offset-new-line . '(4))
 >> ))
 >> 
 >> 
 >> This does improve simple examples such as turning this:
 >> 
 >> 1 +
 >> 2 +
 >> 3 +
 >> 4
 >> 
 >> into
 >> 
 >> 1 +
 >> 2 +
 >> 3 +
 >> 4
 >> 
 >> though I would really like
 >> 
 >> 1 +
 >> 2 +
 >> 3 +
 >> 4
 >> 
 >> But it still leave more complicated things like
 >> 
 >> mean(rnorm(100)) +
 >> 2 +
 >> mean(rnorm(100,
 >> mean = runif(1, 1, 10)), na.rm=TRUE) +
 >> 2 +
 >> 2
 >> 
 >> I really don't understand why it makes sense to indent the "2's"
 >> differently depending on whether they come before or after the second
 >> "mean(rnorm(...". Compare this to the Rstudio indentation:
 >> 
 >> mean(rnorm(100)) +
 >> 2 +
 >> mean(rnorm(100,
 >> mean = runif(1, 1, 10)), na.rm=TRUE) +
 >> 2 +
 >> 2
 >> 
 >> Right. So I hate to be that guy, but seriously, how can I make ESS
 >> indentation behave more like Rstudio?
 >> 
 >> Thanks,
 >> Ista

 > ______________________________________________
 > ESS-help at r-project.org mailing list
 > https://stat.ethz.ch/mailman/listinfo/ess-help



More information about the ESS-help mailing list