2009-05-22 12 views
7

私はミニバッファ完了リストのための特定のウィンドウを設定したいと思います。現在、私はこの構成で3つのウィンドウを持っています:Emacsでは、どのようにミニバッファ補完リストウィンドウを変更できますか?

______ 
| | | 
|____| | 
|____|_| 

この場合、私はミニバッファの完了リストの左下のウィンドウを使いたいと思います。

現在は無作為にウィンドウに表示されているようですが、ほとんどの場合、横方向にスクロールしなくても完了リストを表示するには薄すぎる非常に右側のウィンドウを使用するのが好きです。

また、私はEmacsをロードすると、ファイル(〜/ .revive.el)から私のウィンドウ構成を復元revive.elと呼ばれるLispのスクリプトを使用しています。

+0

最後に使用されていないウィンドウのようです... –

+0

うーん、わかりません - それは私には予測できないようです...時々、左下を使うのが好きですが、画面の高さの半分にリサイズします。私は左上にコードを編集するためのスペースがたくさんあるので迷惑です。 –

+0

OPが何を望んでいるのかかなり分かりますが、Tomohiro Matsuyamaのpopwin.el:https:// githubを使って補完バッファを専用ウィンドウに表示することができます。com/m2ym/popwin-el –

答えて

9

minibuffer-scroll-windowを使用しようとするパスを開始した後(ユーザーがカスタマイズできないことが判明しました)。私はこのアプローチを試してみました:

示す2つの以上のウィンドウを表示するには左下のウィンドウを使用して、すでに存在している場合、これは、2で唯一のウィンドウを分割し、下のウィンドウに *Completions*を表示することで動作し、または
(add-to-list 'special-display-buffer-names '("*Completions*" my-display-completions)) 

(defun my-display-completions (buf) 
    "put the *completions* buffer in the right spot" 
    (let ((windows (delete (minibuffer-window) (window-list)))) 
    (if (eq 1 (length windows)) 
     (progn 
      (select-window (car windows)) 
      (split-window-vertically))) 
    (let ((target-window (window-at 0 (- (frame-height) 2))) 
      (pop-up-windows t)) 
     (set-window-buffer target-window buf) 
     target-window))) 

*Completions*

+0

setqの代わりにsetq-defaultを使う必要があるかもしれません。 – Svante

+0

minibuffer-completeは、最初に呼び出されたときに変数をnilに設定するようです。私は、その変数をどのようにカスタマイズすることができるのか不明です。 –

+0

ええ、あなたが指定したmy-minibuffer-setup-hook関数は、悲しいことに私にとっては効果がないようです。 –

1

A少し浮気答えあなたがやりたいこと:手動底は、カーソルがそのウィンドウでアクティブなとき

C-x b *Completions* RET 

を使用して*の達成数*バッファのウィンドウを残し作る

。ミニバッファがいくつかの補完を表示しなければならないときはいつも、常にこの特定のウィンドウを使うべきです。しかし、これは、いつもオープンで目に見えるこのバッファーに依存しています。あなたが望むものではないでしょうか?

他の可能性:

  1. "Icicles" が役立ちますかどうかを確認します - 例えばそれは、「* Completions *」の表示と振る舞いを強化する多くの鼓膜の機能があることを示しています。
  2. Minibuffer Commands That Do Completionは役に立ちますか?
+0

私は両方を試しましたが、* Completions *バッファで使用するウィンドウを覚えているように見えません。とにかくありがとう! –

+0

ああ、また、はい、私は、ウィンドウのバッファを変更することは、問題を修正する方法です - しかし、あなたが知っているように、それは一時的です。次回にミニバッファのタブを押すと、最後に使用したウィンドウは使用されません。かなりイライラする。 –

0

Treyの答えほど堅牢ではありませんが、粗雑に機能するようです。

; Go to the 3rd window, and make it dedicated. 
(other-window 2) 
(set-window-dedicated-p (selected-window) 1) 

これは、3番目のウィンドウがロックされても構わない場合にのみ機能します。残念なことに、それはまだ時折第1のウィンドウを試してみることになります(これはあまりイライラしませんが、依然として望ましくありません)。

メモ:私はTreyのソリューションを試してみましたが、今はうまくいきましたので、人々はそれを使用することをお勧めします。

関連する問題