emacsでdiredバッファだけを消去

emacsを使ってると1時間程度でdiredのバッファでバッファリストが埋まる事がある.

そんなわけでこんなのを書いた.

(defun filtercar (func lst)
  (let ((result '())
	(rest lst))
    (while rest
      (let ((func-result (funcall func (car rest))))
	(if func-result
	    (progn
	      (push (car rest) result))))
      (setq rest(cdr rest)))
    result))

(defun get-buffers-by-mode (buffer-list mode-name)
  (filtercar (lambda (buf) 
	       (string= (symbol-name (cdr (assq 'major-mode (buffer-local-variables buf))))
			mode-name))
	     buffer-list))


(defun delete-dired-buffers ()
  (interactive)
  (mapcar #'(lambda (buf) (kill-buffer buf))
	  (get-buffers-by-mode (buffer-list) "dired-mode"))
  nil)

(run-with-idle-timer (* 10 60) 
		     1 
		     (lambda () (delete-dired-buffers)))

ははは,バッファがゴミのようだ.