3

emacs自動暗号化モードで読み込んで編集するファイル「XXX.gpg」にいくつかのものを保持しています。

場合によっては、ある種のリスクである長時間バッファを閉じるのを忘れることがあります。

バッファが自動的に保存され、(非アクティブな状態で) しばらくすると閉じられるようにしたいと考えています。

4

3 に答える 3

2

run-with-idle-timerあなたが望むことを正確に行う関数を構築するために使用することができます。

于 2013-03-07T20:07:27.940 に答える
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)

最近表示されたバッファを閉じないようにするため、ビュー切り替えアクティビティがある限り、バッファの強制終了は遅れます。

于 2013-04-06T18:13:34.100 に答える
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))))))
于 2013-03-10T18:47:46.223 に答える