Emacsのiswitchbで、普段は*...*を完全無視して必要なときだけ出す設定

普段は*...*を完全無視する↓

(add-to-list 'iswitchb-buffer-ignore "\\`\\*")

iswitchbのミニバッファの先頭に*が入力されている時だけ↑の無視設定を解除する。

(setq iswitchb-buffer-ignore-asterisk-orig nil)
(defadvice iswitchb-exhibit (before iswitchb-exhibit-asterisk activate)
  "*が入力されている時は*で始まるものだけを出す"
  (if (equal (char-after (minibuffer-prompt-end)) ?*)
      (when (not iswitchb-buffer-ignore-asterisk-orig)
        (setq iswitchb-buffer-ignore-asterisk-orig iswitchb-buffer-ignore)
        (setq iswitchb-buffer-ignore '("^ "))
        (iswitchb-make-buflist iswitchb-default)
        (setq iswitchb-rescan t))
    (when iswitchb-buffer-ignore-asterisk-orig
      (setq iswitchb-buffer-ignore iswitchb-buffer-ignore-asterisk-orig)
      (setq iswitchb-buffer-ignore-asterisk-orig nil)
      (iswitchb-make-buflist iswitchb-default)
      (setq iswitchb-rescan t))))

ちょー見易くなった。
もっとロジック簡単になるかもしれないけど、やっつけ仕事なので。