For the moment, I just replaced the incorrect keyword :initial-value in the example with :init-value. Thanks.
> There is more. You can not specify a non-nil :init-value, unless > either the minor mode is enabled by just setting the variable or > unless you do something extra. In what way is this a limitation? I.e. if you don't use define-minor-mode, how would you do it differently? [ I don't mean to say that "manual" code can't do it differently, but that if it does it differently, it'll most likely break the convention that just loading a file shouldn't make any visible changes. ] I don't know how you'll decide to handle this, but I agree with Luc that it is confusing to set the :init-value to, say, `t' and then not see that initial value be effective. I did this recently, in fact. I saw the mode name appear in the mode-line after loading the file, saw that the mode variable was indeed `t', and was confused that the mode was not actually turned on, in spite of the mode-line indication and the variable value. Not good, in terms of user interface. This is not very clear to me, I admit, so ignore my comments if they are off-base. IIUC, users creating a library with a define-minor-mode that has a non-nil :init-value will need to do something like the following at the end of the library (otherwise, the lighter and mode variable will indicate that the mode is on after loading, but it is not really on): (if foo-mode (foo-mode 1)) If this is correct, couldn't this be made part of the define-minor-mode macro - say, to execute this code automatically after loading the library? If my understanding is correct, but such automatic treatment is not a good idea, shouldn't this `(if foo-mode (foo-mode 1))' cliche be documented as a guideline? I found it after 1) reading Luc's email and 2) grepping the Lisp directory to see how other libraries dealt with this issue. At the least, if nothing special is done to treat non-nil :init-value, and users need to do something additional themselves, then shouldn't the Info doc show an example with non-nil :init-value, instead of the current example using nil? WRT the guideline of "loading must not change anything" - I agree, but I think that turning on a minor mode is usually relatively benign, because it can be turned off easily. Users loading a library that defines a minor mode will not be shocked if the mode is turned on by default, if the logical initial value to use is something other than nil. Otherwise, if we're going to be rigid about this guideline (perhaps there are good reasons to do that, even in this case), then maybe we should just get rid of :init-value and have the initial value always be nil - that is, make users of a library turn on the minor mode explicitly. That would not be my preference, but it would at least avoid confusion. _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel