Я определил ловушку после сохранения, и она отлично работает, если я сохраняю, нажимая Ctrl-x Ctrl-s. Тем не менее, я заметил, что сохранения, запускаемые практически любым другим способом, не срабатывают, как ожидалось. Сначала я заметил, что код с вызовом save-some-buffers не вызывает его, поэтому я сделал следующее:
(defadvice save-some-buffers (after after-save-some-buffers activate)
(run-hooks 'after-save-hook))
И это почти сработало, за исключением того, что ловушка запускалась, даже если файл не изменился, так что это все еще не было идеальным. Но потом я заметил, что автосохранение тоже не срабатывает. Поэтому я проконсультировался с документами, нашел функцию автоматического сохранения и попробовал тот же трюк:
(defadvice do-auto-save (after after-auto-save activate)
(run-hooks 'after-save-hook))
И там хук вообще не выполняется. do-auto-save - это исходная функция C, поэтому, по-видимому, она не вызывает какой-либо elisp, который обычно вызывает хук.
Короче говоря, как мне сделать так, чтобы всякий раз, когда emacs сохраняет мои измененные буферы, действительно запускался after-save-hook?