5

エコーエリアとミニバッファを分けられるかどうか気になるので、メッセージの出力とコマンドの入力に2つの異なる場所(行、ペイン、フレーム)が使用されます。

Hide Emacs echo area during inactiveで述べられているように、エコー領域を完全に取り除くことは不可能ですが、いくつかの提案があります:

どのようなオプションがありますか? 理論上、エコー領域とミニバッファを分離することは可能ですか? 理論的には、C ソース コードを書き直し、Emacs を再コンパイルする必要がありますか? 考えやアイデアを投稿してください。

4

1 に答える 1

10

マニュアルとCコードを見て、答えは「いいえ」だと思います。

M-: (info "(elisp) Echo Area Customization") RET言います:

ミニバッファ ウィンドウのサイズを変更するための最大の高さを指定する変数 `max-mini-window-height' は、エコー領域にも適用されます (これは実際にはミニバッファ ウィンドウの特殊な用途です; *ミニバッファのその他のことに注意してください::)。

リンクはその特定の点についてこれMinibuffer Misc以上議論していませんが、エコーエリアが明示的にミニバッファーウィンドウを使用している場合、それらを分離することはできません.

編集:

確認のために、 の C 関数のソースを見ると、選択されたフレームのミニバッファーのフレームを取得message3_nolog()し、それを選択して、現在選択されているフレームのミニバッファー ウィンドウをエコー エリア ウィンドウとして使用する をxdisp.c通過します。echo_area_display()

(Emacs 24.0.95)

そのため、マニュアルに記載されているように、ミニバッファーとエコー領域に使用される「ミニ ウィンドウ」はまったく同じものです。

考えられる唯一の可能性は、エコー エリア メッセージを他のウィンドウに自動的にコピーする方法を見つけることですが、これはすべて C コードで行われており、elisp に公開されていない関数で行われているため、それも不可能だと思います。

編集2:

理論的には、C ソース コードを書き直し、Emacs を再コンパイルする必要がありますか?

本当の分離が必要な場合は、そうです。

コピーのアプローチで十分な場合は、メッセージがエコー領域に書き込まれる可能性があるすべての関数にアドバイスすることで、純粋に elisp でそれを管理できる可能性があります。ここから読み始めて、それが何を伴うかを確認できます。

M-: (info "(elisp) The Echo Area") RET

(しかし、あなたが本当にこれを実装したいのであれば、C で作業し、そのような分離を可能にするパッチを提供することに時間を費やしたほうがよいと思います。長期的には。)

于 2012-04-09T01:17:45.880 に答える