Недавно у меня был пользователь Sublime Text, который некоторое время пробовал Emacs, и он был заинтересован в том, чтобы получить такое же поведение самосохранения в Emacs.
По сути, он хотел, чтобы все буферы были сохранены всякий раз, когда кадр терял фокус (действительно сохраненный, а не просто резервный файл). Это включает в себя переключение окон на совершенно другое приложение.
Я не смог найти ни одного события, которое было вызвано при переключении на другое приложение. Есть ли такое событие или есть другой способ добиться того же поведения?
Обратите внимание, что решение, основанное на времени, не было удовлетворительным, и ни одно из них не было режимом автоматического резервного копирования по умолчанию. Он специально хотел, чтобы буферы были сохранены (как в save-buffer
) для всех файлов.
defadvice
версии на случай, если сообщение в блоге выйдет из строя или что-то еще? Благодарность!(add-hook 'focus-out-hook (lambda () (flet ((message (format &rest args) nil)) (save-some-buffers t))))
Есть
focus-autosave-mode
сейчас. Это доступно через MELPA. Почему бы не дать ему возможность взломать за тебя?источник
Это сохранит все несохраненные буферы, посещающие файл, на emacs 24.4
источник
add-to-list
на крючке, используйтеadd-hook
. Ответ Шости уже содержит правильную форму этого фрагмента.Для странников, которые натыкаются на это, я использую эту форму:
Использование
cl-letf
предотвращает раздражающие(No files need saving)
сообщения от засорения вашей эхо-области.источник