2014-01-14 6 views
3

От C-H F надстройки крюка:Почему add-hook позволяет «hook» быть недействительным?

HOOK should be a symbol, and FUNCTION may be any valid function. If 
HOOK is void, it is first set to nil. If HOOK's value is a single 
function, it is changed to a list of functions. 

и из кода:

(defun add-hook (hook function &optional append local) 
    ... 
    (or (boundp hook) (set hook nil)) 
    (or (default-boundp hook) (set-default hook nil)) 
    ... 

Что такое хорошо? Я предполагаю, что это как-то полезно, иначе оно не будет ... Я просто не могу придумать для этого хорошее использование ...

ответ

5

Это позволяет вам устанавливать переменные перехвата прежде, чем пакеты, которые их определяют, были загружен.

+1

mgalgs: Обратите внимание, что это значение * значения переменной hook, которое устанавливается равным 'nil' (т. Е. Пустой список). Поэтому он просто инициализирует эту переменную, когда она недействительна. – phils

+0

Имеет смысл. В противном случае мы будем иметь «eval-after-load» повсюду, или должны быть очень осторожны при заказе в наших файлах init. – mgalgs

Смежные вопросы