古いバッファを自動で消したい!!

気がつくとemacsのバッファがすごい数になっていて補完などが重くなるのである程度たまったら自動で古い物(しばらくvisitしてない物)を自動的に削除するようなものが欲しい。

とりあえずぼくのelisp力ではあんまり難しいことはできないので

(defun kill-old-buffers ()
  (interactive)
  (let ((count 0))
    (dolist (b (buffer-list))
      (incf count)
      (if (> count 100)
          (or (buffer-modified-p b)
              (kill-buffer b))))))

とかいうのを書いてとりあえずはしのぐことにした。これは最後に使ったバッファ100個のこし、それ以前のバッファで修正フラグがたってないものを全部殺すというもの。

(buffer-list) でとれるリストは anything などのように故意に最後に自分を突っ込んでる物以外はだいたい最後に訪問した順にくるようになってると思うのでまぁだいたいこれでやりたいことはできている感じ。

100個より古いバッファとかもうほとんど参照しないよね。必要になったら開き直せば全然かまわない。

by typester / at 2009-04-07T11:58:00 / emacs / Comments(0)