読者です 読者をやめる 読者になる 読者になる

emacs の auto-save ファイルの処分

hoge~ ファイルを一箇所に集めて定期的に処分したい.

hoge~ ファイルを一箇所に集める設定
場所は "~/.emacs.d/Trash" とする.

(defvar *trash-dir* (expand-file-name "~/.emacs.d/Trash"))

(setf backup-directory-alist
      (cons (cons ".*" *trash-dir*) backup-directory-alist))

これだけだと Trash ディレクトリが肥大化していくので定期的に削除するスクリプトが要る.
ずっとパソコンを立ち上げっぱなしなら cron でやる人もいるだろうし, ログイン時にやるなら .bashrc あたりにスクリプトを書いておいてもいいと思う. 自分は emacs 起動時にやっている.

(defvar *trash-cleaning-interval* 7)

(let ((files (directory-files *trash-dir* t "~$"))
      (counter 0))
  (dolist (f files)
    (when (>= (- (time-to-days (current-time)) 
                 (time-to-days (nth 5 (file-attributes f)))) ;; last-modified-time
             *trash-cleaning-interval*)
      (delete-file f)
      (setf counter (1+ counter))))
  (message "Cleaning up %s ... done (%d removed)" *trash-dir* counter))

変数 *trash-cleaning-interval* は 7 としている. ファイルの最終修正時から 7日以上経ったものは削除する.