Просто чтобы уточнить ... Например, в этом документе :
Хук - это переменная Лиспа, которая содержит список функций, которые должны вызываться по какому-то определенному случаю. (Это называется выполнением ловушки.) Отдельные функции в списке называются функциями ловушки. Например, ловушка
kill-emacs-hook
запускается непосредственно перед выходом из Emacs ...
Я думаю, что это говорит, что есть именованная переменная (символ), kill-emacs-hook
которая представляет список набора «функций-ловушек», которые будут выполняться при kill-emacs-hook
оценке, выполняя, таким образом, эти функции. Правильный? затем
(add-hook 'text-mode-hook 'auto-fill-mode)
добавляет auto-fill-mode
в этот список, идентифицированный text-mode-hook
в дополнение к тому, что уже там. Хорошо. Теперь это
(defcustom text-mode-hook nil
"Normal hook run when entering Text mode and many related modes."
:type 'hook
:options '(turn-on-auto-fill flyspell-mode)
:group 'wp)
где, кажется, мы либо создаем, либо изменяем text-mode-hook
. Теперь я смущен относительно природы крючков и их отношений с defcustom
. Мой логический выбор заключается в том, что этот код создает переменную, text-mode-hook
которая имеет «тип» (не знаю, что подразумевается под типами в elisp) hook
. Это, действительно, должно быть начальным созданием крючка text-mode-hook
? Если так, что случилось с "вариантами"? Это предполагаемые функции хуков или что-то еще?