bufferの一括削除 (kill-buffers-with)
現在の環境で Emacs のバッファを開きすぎてメモリが足りなくなることはそんれほどありませんが、switch-buffer
するときや、 Buffer List から選択するときなどは、バッファの数が多すぎると手間取ります。また、なにか調査するのために以下のようなコードから大量にバッファを作ってしまうこともあります。
そこで、ag-kill-buffers
や tramp-cleanup-all-buffers
のように、一括で削除するコマンドを作りました。削除のルールは、buffer-name
、mode-name
(major-mode
ではない)、もしくは buffer-file-name
と list-buffers-directory
に対して、シェルスクリプトのファイルパターン (*
, ?
, []
, {}
) でマッチしたバッファを削除します。まずはパターンの正規表現化、
正規表現には rx マクロを使っています。S式によって構造化できるので、複雑な表現をわかりやすく書けます。Emacs 拡張でテストを書くことはこれまでなかったのですが、今回は書いています。(test.el) あとは buffer-list
をループ処理します。
Ag モードや Dired の様にファイルリストを表示するバッファは buffer-file-name
を持っていませんが、list-buffers-directory
にディレクトリ名を持っていることがあります。(Ag と Dired は持っています)
(Project Repository)