*の付いたbufferを消す(その2)

前に書いた
himadatenodeの日記 - *の付いたbufferを消す
http://d.hatena.ne.jp/himadatanode/20060906/p2
をもう少し変えてみた。

■具体的に何を変えたか
 *が付いたバッファを削除するのは前と同じなんだけど。ネットインストーラを使った後で押すとフレームが残ってしまって、再度ネットインストーラを使う場合にフレームを消さないとネットインストーラが動いてくれないようだったので、ネットインストーラのフレームがあるときはついでにそれも削除するようにした。

;兎に角全部の「*」が付いたbufferを削除するようなの
(defun clear-temp-buffers()
  "*の付いたバッファーを削除"
  (interactive)
  (let ((fn))
	(dolist (bf (buffer-list))
	  (setq fn (buffer-name bf))
	  (when (and fn
				 (equal (schar fn 0) #\*)
				 (not (equal "*scratch*" fn)))
		;(msgbox(format nil "<~A>" fn))
		(delete-buffer bf);否応なしに
		;(erase-buffer bf);尋ねてくる
		(if (> (count-windows) 1)
			(delete-window))))
	;ついでにネットインストーラ使ったときに残るフレームがあればそれも削除
	(if (find-pseudo-frame "NetInst")
		(delete-pseudo-frame (find-pseudo-frame "NetInst")))
	))

;;いらないWindowとBufferを削除のキー設定
(global-set-key #\S-F11 'clear-temp-buffers)
(set-function-bar-label #\S-F11 "[F11]*hoge*削除")

キー設定はS-F11を押すと動く感じ。
これはもとのパクリもとがS-F11だったので、何となくそのまま。

■前に書いた関連してるの
himadatenodeの日記 - 選択中のBufferが「*」つきの名前のbufferなら消す
http://d.hatena.ne.jp/himadatanode/20060910/p1
himadatenodeの日記 - *の付いたbufferを消す
http://d.hatena.ne.jp/himadatanode/20060906/p2