2013-03-06 97 views

回答

2

您可以使用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

0

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

這是我使用:

(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) 

它儘量不關閉最近已經顯示緩衝區,從而只要有視圖切換活動,緩衝區的查殺就會延遲。