[ESS] ESS for code tidying

Martin Maechler maechler at stat.math.ethz.ch
Fri Feb 2 23:09:59 CET 2007

>>>>> "Vaidotas" == Vaidotas Zemlys <mpiktas at gmail.com>
>>>>>     on Fri, 2 Feb 2007 17:39:18 +0200 writes:

    Vaidotas> On 2/2/07, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:

    >> On Fri, 2 Feb 2007, Vaidotas Zemlys wrote:
    >> > Hm, I copied this code directly from Emacs+ESS, maybe the mailer
    >> > mangled something. What I want to do with this piece of code (I will
    >> > repaste it here)
    >> >
    >> > testf<- function(formula) {
    >> >   mainform <- formula
    >> >   if(deparse(mainform[[3]][[1]])!="|") stop("invalid conditioning")
    >> >   mmodel <- substitute(y~x,list(y=mainform[[2]],x=mainform[[3]][[2]]))
    >> >   mmodel <- as.formula(mmodel)
    >> >   list(formula=list(main=mmodel))
    >> > }
    BDR> You use no spaces around your operators or after commas.  R does when
    BDR> deparsing:
    >> > testf
    >> function (formula)
    >> {
    >> mainform <- formula
    >> if (deparse(mainform[[3]][[1]]) != "|")
    >> stop("invalid conditioning")
    >> mmodel <- substitute(y ~ x, list(y = mainform[[2]], x = mainform[[3]][[2]]))
    >> mmodel <- as.formula(mmodel)
    >> list(formula = list(main = mmodel))
    >> }
    BDR> because it is (at least to old hands) much easier to read.
    BDR> IcanreadEnglishtextwithoutanyspacesbutIchoosenotto.Similarly,Rcode.Occasional
    BDR> spacesare evenharderto parse.

    Vaidotas> Sorry for that, it is an old bad habit of
    Vaidotas> mine. I'll try to get rid of it. Does anybody
    Vaidotas> know, if ESS can do this automatically, besides
    Vaidotas> automatical identing?

Yes, partly, though not very officially - partly I think because
the functionality is not 100% water proof:
There are - hidden, partly on purpose - utility features in ESS such
     M-x ess-fix-miscellaneous
and (even more purposedly "hidden")
     M-x ess-MM-fix-source

The first of those two does a big part of what Brian likes.
It does not yet add a space after "," -- something I seem to
have needed rarely, probably since most people do add a
space there themselves.  

If you look at the ESS source, for these e.g. available online
you can see that these two functions are built of several
individual tasks and the MM-fix-source one e.g. calls 
ess-fix-EQ-assign something I have found useful but other will

I'm open for suggested improvements, notably to the
"fix-misceallaneous" function, but not in the next 10 days (nor
in the 4 subsequent weeks where I'll be at the DSC workshop and
mostly vacationing). 
But then there's the full ESS-core team who can add the
improvements to the sources.

Martin Maechler (MM), ETH Zurich

More information about the ESS-help mailing list