如何在emacs中自动关闭自动加密模式缓冲区?
问题描述:
我保存了一些文件'XXX.gpg',我用emacs自动加密模式读取和编辑。如何在emacs中自动关闭自动加密模式缓冲区?
在某些情况下,我忘记关闭缓冲区很长一段时间,这是一种风险。
我想让缓冲区在一段时间(不活动)后自动保存并关闭。
答
您可以使用run-with-idle-timer
构建一个完全按照您的需要进行的功能。
答
现在我在〜/的.emacs使用:
(run-with-idle-timer 60 t (lambda()
(let ((victim (get-buffer "XXX.gpg")))
(when victim (message "Killing buffer %s" (buffer-name victim)
(kill-buffer victim))))))
答
这是我使用:
(defun dwim-kill-gpg-buffers()
(interactive)
(let ((buffers-killed 0))
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(when (string-match ".*\.gpg$" (buffer-name buffer))
(let ((current-time (second (current-time)))
(last-displayed-time (second buffer-display-time)))
(when (> (- current-time last-displayed-time)
60)
(message "Auto killing .gpg buffer '%s'" (buffer-name buffer))
(when (buffer-modified-p buffer)
(save-buffer))
(kill-buffer buffer)
(incf buffers-killed))))))
(unless (zerop buffers-killed)
(message "%s .gpg buffers have been autosaved and killed" buffers-killed))))
(run-with-idle-timer 60 t 'dwim-kill-gpg-buffers)
它尽量不关闭最近已经显示缓冲区,从而只要有视图切换活动,缓冲区的查杀就会延迟。
感谢您的提示! – jogeba 2013-03-10 18:43:20
jogeba:如果你不打算将其标记为答案,我可以建议你至少投票给出对你有帮助的答案吗? – phils 2013-03-10 20:51:18
OK ...完成。我以前不知道这个功能。 – jogeba 2013-03-11 20:18:15