helmのbufferをVisualStudioの自動的に隠すウィンドウっぽくする


2画面分割とhelm

私のEmacsの使い方は、フルスクリーンでC-x 3で左右に分割した2画面固定スタイルです。
このとき、helmを使うとhelmの候補選択bufferが、既存のbufferを使いまわしたり、上下分割状態になったりと悲しい動きをします。(私の環境だけ?)
こんなかんじ:

私の理想とする動きは、VisualStudioの自動的に隠すウィンドウのように、左右分割したbufferに乗っかって画面下からニョキっと出てくれると嬉しいのです。
こんなかんじ:

実現手段 : popwin.elを使う

popwin.elはEmacsのbuffer管理上でpopup windowのようなbufferを実現するパッケージです。
melpa-stableからpackage install popwinできると思います。
こいつを使うと指定のbuffer名のbufferがdisplay-bufferされたとき、他のbufferに乗っかる形のbufferを作ってくれます。
詳しくは作者様のページへ[Emacs] ヘルプバッファや補完バッファをポップアップで表示してくれるpopwin.elをリリースしました

これで万事OKなのですが、もう1点。
helmのdisplay-bufferは独自のものみたいで、popwinのフックに乗りません(詳しいことはわかりませんが)
なのでhelm独自のdisplay-bufferを標準のに上書きします。
(setq helm-display-function #'display-buffer)

設定例

helm-pop.el
;; helm bufferをpopupする
(setq helm-display-function #'display-buffer)
(when (require 'popwin)
  (setq display-buffer-function 'popwin:display-buffer)
  (setq popwin:special-display-config
    '(("*complitation*" :noselect t)
      ("helm" :regexp t :height 0.4))))
;; helmをbuffer名に含んでたら良いので、これだけでhelm-M-x,helm-find-files等に対応できます

おわりに

もしかしたらhelm使ってる皆様に於かれましては常識ですかね?