I have to say that I am finding SmartIdent pretty dumb at times

If I have typed this:
then decide that I want to multiply var1 and var2 by a, so I move my cursor back to the start and type "b*(", I get
b*(|)var1 + var2 + c*var3
Now I go and complete the brace and I have
so I get that extra closing brace in there that shouldn't be there. (Same thing happens with quotes).
Maybe the "smart" thing to do is to automatically remove the added brace if the user moves without typing anything inside the braces? (That has problems with brace autocompletions for functions without args though)