通常、EmacsでTAB補完の時とかに表示されるCompletionsバッファは、フレーム1)下部を分割した一時的なウィンドウ2)として表示される。言葉じゃわかりにくいので、スクショを張っとくと↓こんな感じね。
自分のEmacsの使い方は垂直分割した2つのウィンドウ表示が基本で、Completionsバッファは非アクティブな方のウィンドウに出て欲しい。その方が補完候補の一覧性が圧倒的だし、ウィンドウがパカパカしないのがいい。スクショを張(ry
ここの回答に載ってるelispを参考に、ウィンドウが1つの時はウィンドウ幅に応じて分割方向を変えるようにしてみた。
(defun display-on-side (buffer &optional not-this-window frame) (let* ((window (or (minibuffer-selected-window) (selected-window))) (display-buffer-function nil) (pop-up-windows nil)) (with-selected-window (or window (error "display-on-side")) (when (one-window-p t) (if (> (window-pixel-width) (window-pixel-height)) (split-window-horizontally) (split-window-vertically)) ) (display-buffer buffer not-this-window frame)))) (setq display-buffer-function 'display-on-side)
水平2分割した状態で使うと、非アクティブなウィンドウの方がCompletions表示時に勝手にリサイズされる問題があったりする…。自分は水平分割使わないので放置してます、すいません。えらいひと直して教えてください。