[ESS] proposal re: underscore, part 2
rsparapa at mcw.edu
Wed Apr 11 16:35:42 CEST 2012
Matthew Fidler wrote:
> I agree with your assesment of the extra keystroke. I tried the " _"
> option for awhile and found it to be a little less ideal. Hence this
> option is turned off by default in my ess-smart-underscore.el package.
> However, the underscore is guessed by context. In my redifnition of
> ess-smart-underscore, the following documentation describes the behavior
> Smart "_" key: insert `ess-S-assign', unless:
> 1. in string/comment
> 2. after a $ (like d$one_two) (toggle with `ess-S-underscore-after-$')
> 3. when the underscore is part of a variable definition previously
> (toggle with `ess-S-underscore-after-defined')
> 4. when the underscore is after a \"=\" or \"<-\" on the same line.
> (toggle with `ess-S-underscore-after-<-or-=')
> 5. inside a parenthetical statement () or .
> (toggle with `ess-S-underscore-when-inside-paren')
> 6. At the beginning of a line.
> 7. In a variable that contains underscores already (for example foo_a)
> (toggle with `ess-S-underscore-when-variable-contains-underscores')
> 8. The preceding character is not a tab/space
> (toggle with `ess-S-underscore-when-last-character-is-a-space'. Not
> enabled by default.)
> An exception to #4 is in the following situation:
> a <- b |
> pressing an underscore here would produce
> a <- b <-
> However when in the following situation
> a <- b|
> pressing an underscore would produce
> a <- b_
> This behavior can be toggled by `ess-S-space-underscore-is-assignment'
> If the underscore key is pressed a second time, the assignment
> operator is removed and replaced by the underscore. `ess-S-assign',
> typically \" <- \", can be customized. In ESS modes other than R/S,
> an underscore is always inserted.
> I find this behaviour better than the traditional "_" behavior.
Very nice! I just checked in a sneaky change for ESS[BUGS/JAGS]
to mimic ESS[S/R] for this purpose. So, to get this functionality
(define-key ess-bugs-mode-map "_" 'ess-smart-underscore)
And similar changes will do it for ESS[JAGS].
I've also been experimenting with ...
(define-key ess-bugs-mode-map "=" 'ess-smart-underscore)
More information about the ESS-help