2014-01-14 71 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:请注意,它是被设置为“nil”(即空列表)的挂钩变量的*值*。所以它只是在变量无效时初始化该变量。 – phils

+0

有道理。否则,我们会在整个地方加载“eval-after-load”,或者必须非常小心地在我们的init文件中进行排序。 – mgalgs