[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: does customizing a hook "add-to" the hook?
From: |
Michael Heerdegen |
Subject: |
Re: does customizing a hook "add-to" the hook? |
Date: |
Tue, 16 Jul 2013 00:49:16 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
gottlieb@nyu.edu writes:
> > All relevant hooks I know are empty when declared in the sources. So if
> > you load your `custom-file' early enough when starting up Emacs (i.e.,
> > before modifying hooks or loading packages), you don't need to worry
> > about your or third party code adding stuff to the hook, that works
> > normally.
>
> Thank you for the response.
> That was exactly my concern. Namely that I (in this order)
>
> 1. set a hook via customize
> 2. upgrade emacs
> 3. run the new emacs (with my same startup files)
>
> and then some new default would be overridden since my customization
> overwrites the hook instead of adding to it.
>
> Is it guaranteed or suggested that hook are by default empty?
No, it's not a convention AFAICT. And there are examples in the sources
where this is not the case, although they are a minority.
There are probably also cases where a user indeed wants to replace an
element of a hook variable with another one or "delete" elements, so it
makes some sense that hooks are not always declared empty.
You have to be a bit careful. There is no absolute guarantee
that your customization will work in future Emacsen. If you want a more
finegrained control, use Lisp. But also what you do in Lisp can be
wrong in future Emacsen.
I agree that there is a bit a disparity between the manual
((emacs) Hooks):
| You can set a hook variable with ‘setq’ like any other Lisp
| variable, but the recommended way to add a function to a hook (either
| normal or abnormal) is to use ‘add-hook’, as shown by the following
| examples. *Note (elisp)Hooks::, for details.
and how Customize works (setting the hook variable instead of adding).
Regards,
Michael.