Нет, переменная before-save-hook
не является локальным буфером. В документации к переменной не сказано, что она локальная по отношению к буферу, и не сказано, что она автоматически станет локальной по отношению к буферу при установке.
Если вы хотите добавить ловушку локального буфера, правильный способ сделать это - просто использовать необязательный параметр LOCAL стандартной функции add-hook
:
(add-hook 'before-save-hook 'foo nil t)
Документация add-hook гласит:
Необязательный четвертый аргумент, LOCAL, если не ноль, говорит об изменении
локальное значение буфера, а не его глобальное значение.
Это делает хук буферным локальным и делает его членом
локальное значение буфера. Это действует как флаг, чтобы запустить крючок
функции глобального значения, а также локального значения.
Выбранный ответ, чтобы добавить его к local-write-file-hooks
, я считаю неправильным. Если вы посмотрите документацию по этой функции в emacs 24.3, она говорит, что переменная устарела с 22.1, и вы должны использовать write-file-functions
. И если вы посмотрите документацию write-file-functions
, она описывает более сложное поведение и в конце говорит, что «Для выполнения различных проверок или обновлений перед сохранением буфера используйте« before-save-hook »».