That seems like the right thing to me. If the user set the variable, he probably wanted to control the mode.
In the text you quoted, I was talking about defcustoms with a :set function that are _not_ minor modes. I don't think this changes anything, but let's call it "behavior" rather than "mode". So what? One can't please everybody. I thought that we decided that use of Custom was optional, that people should be able to customize everything in their .emacs and completely ignore Custom, if that is what they wanted to do. That is just a goal, not an unbreakable rule. It seems irrelevant to this issue anyway. We're not talking about running Custom here. We're talking about what happens when you load a defcustom and the variable has already been set. If you try to customize things manually in your .emacs you subject yourself to Custom overriding you at random moments, without notice, when some file is loaded (for instance by Custom). It's not Custom that's doing this, it is loading the defcustom. Let's not complicate the issue unnecessarily. Prior cases that were known to give problems have been solved already in various ways, but people just keep writing new very intrusive :set functions. We just have to fix them to be less intrusive. Perhaps we could develop a list of guidelines they should follow. For instance, suppose that setting a variable only takes effect if a timer is set. People using Custom have come to expect that just setting a variable through Custom is sufficient. So you have to provide a :set function that calls the timer. Do you mean, that sets up the timer? Now somebody who wants the feature sometimes enabled and sometimes not might set a very complex value for the variable in his .emacs and then enable and disable the feature for that complex value by repeatedly setting and unsetting the (autoloadable) timer. Do you mean activating and canceling the timer? It seems like asking for trouble. But every so often the feature will be mysteriously silently enabled, when some file is silently loaded, for instance by Custom. The variable could have three states: an active timer, an inactive timer, and nil meaning no timer has been set. The set function could create the timer only if the variable is nil. _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel