[ESS] proposal re: underscore

Martin Maechler maechler at stat.math.ethz.ch
Sat Apr 7 11:15:35 CEST 2012

On Sat, Apr 7, 2012 at 05:22, Tim Hesterberg <timhesterberg at gmail.com> wrote:
> I like the current behavior.
> Anything that encourages people to use <- for assignment instead of =
> is a good thing, because it makes for more readable code, and I have
> tools that require it, in particular for creating an emacs TAGS file.

Indeed!  ESS should help novices and others as much as possible to
*not* start doing "the wrong thing" and use "=" for assignment in
their R code.

Below we learn that StatET uses  C-x =   and we have Rstudio  using
"<Alt> -" which is
 "M--" in Emacs notation.
The problem with both of these is that are already in "basic use" as
global emacs keys,
and the first one even uses 3 keypresses ... too much for most users
to prevent them from doing "the wrong thing".

What we *should* try is to help novices (and others) detect the fact,
that you can get a "_" if you need by simply pressing it twice.
Should we display a message (in the mini buffer) whenever "_" is
producing a " <- "
?  {it's not quite trivial to implement strictly: the message should
only be produced in the case where the (ess-smart-underscore) was
produced by "_", not by other means (or keys).


>>Premise: the smart-underscore behavior in ESS is problematic because
>>1) it's inconsistent across modes, as described in my post a couple of weeks ago
>>and repeated below for convenience
>>2) it's confusing to novices, as evidenced by the fact that it's a FAQ
>>3) it will be even more confusing to novices over time, because underscore as
>>assignment operator was phased out in R a long time ago
>>4) it requires two keystrokes of underscore to get an actual underscore
>>Proposal: ESS should emulate another R editor on this point, namely StatET. The
>>behavior is as follows:
>>1) typing = gets you =
>>2) typing _ gets you _
>>3) typing <- gets you <-
>>4) (this is the magic one) typing Ctrl+= gets you <-
>>The main argument 'pro' is that 1-3 are not at all confusing to novices, and 4
>>is a discoverable feature, i.e., a reward for advanced users. Additionally, this
>>would be consistent across S, R, BUGS, and JAGS, and would not violate their
>>syntax, unlike the current behavior (explained in my older note, below).
>>The current smart-underscore could be retained as-is for those who want it but
>>turned off by default in future versions.
>>-- my older email, repeated for reference --
>>1. In ESS[BUGS] mode, underscore is bound to ess-bugs-hot-arrow, which is
>>definitely wrong, because it doesn't let me create variables like foo_bar.
>>2. I'd like it if I could use smart-underscore as in ESS[S] mode, but if I do
>>(define-key ess-bugs-mode-map (kbd "_") 'ess-smart-underscore)
>>then there's no smart-underscore behavior, just a plain underscore.
> ______________________________________________
> ESS-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help

More information about the ESS-help mailing list