Thanks,

I thought about adding a smart = operator, but haven't got around to it.
I'm unsure if unmodified code would work ideally with =

Is bugs/jags an S variant language?  There is a line that checks to see
what variant of language is used.  If its close enough with the assignment
operators, maybe this should be added as an option that can be enabled.

Matt
On Apr 11, 2012 9:35 AM, "Rodney Sparapani" <rsparapa@mcw.edu> wrote:

> Matthew Fidler wrote:
>
>> Francois,
>>
>> 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
>> defined.
>>     (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.
>>
>> Matt.
>>
>
> Hi Matt:
>
> 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
> in ESS[BUGS]:
>
> (require 'ess-smart-underscore)
> (require 'ess-bugs-d)
> (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)
>
> Rodney
>

	[[alternative HTML version deleted]]

