On 2006-04-30, Yakov Lerner <[EMAIL PROTECTED]> wrote:
> On 4/30/06, Gerald Lai <[EMAIL PROTECTED]> wrote:

> > The 'compatible' option is one that clobbers settings, but for a good
> > reason. It determines whether Vim should work like Vi, or take on the
> > modern Vim capabilities. It's a big switch.
> 
> It's only a switch  if 'nocp' was off and becomes on. If option
> X has value Y and I do 'set X=Y'  I expect it to be noop, except maybe
> screen refresh. When option had different value, and I change it's
> value, then I agree it's a switch.

If setting an option has a side-effect, I generally expect that 
side-effect to occur whenever I set the option.  If an option X has 
a value Y, and I know this, I have no reason to "set X=Y" unless I 
want the side-effect to happen.  If I don't know the current value 
of X, I expect "set X=Y" to to behave consistently and not in a 
manner dependent on its current value.  That's following the 
principle of least surprise.

Further, if I don't like that behavior and want "set X=Y" to be a 
no-op if X already equals Y, I can work around that with something 
like

    if X != Y
        set X=Y
    endif

I can't work around the other behavior without setting X to some 
value not equal Y, which may have side-effects I want to avoid.

Gary

-- 
Gary Johnson                 | Agilent Technologies
[EMAIL PROTECTED]     | Wireless Division
                             | Spokane, Washington, USA

Reply via email to