如何在emacs中自动关闭自动加密模式缓冲区?

问题描述:

我保存了一些文件'XXX.gpg',我用emacs自动加密模式读取和编辑。如何在emacs中自动关闭自动加密模式缓冲区?

在某些情况下,我忘记关闭缓冲区很长一段时间,这是一种风险。

我想让缓冲区在一段时间(不活动)后自动保存并关闭。

您可以使用run-with-idle-timer构建一个完全按照您的需要进行的功能。

+0

感谢您的提示! – jogeba 2013-03-10 18:43:20

+0

jogeba:如果你不打算将其标记为答案,我可以建议你至少投票给出对你有帮助的答案吗? – phils 2013-03-10 20:51:18

+0

OK ...完成。我以前不知道这个功能。 – jogeba 2013-03-11 20:18:15

现在我在〜/的.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) 

它尽量不关闭最近已经显示缓冲区,从而只要有视图切换活动,缓冲区的查杀就会延迟。