次: , 前: Truncation, 上: Display


38.3 エコー領域

エコー領域(echo area)は、 基本関数messageでメッセージを表示したり、 打鍵を表示するために使われます。 (活性な)ミニバッファはエコー領域と 同じスクリーン上の位置に現れますが、 エコー領域とミニバッファは同じものではありません。 GNU Emacs マニュアルには、 エコー領域とミニバッファがスクリーンの同じ箇所を使う際の 衝突を回避する規則が述べてあります (see ミニバッファ)。 エラーメッセージもエコー領域に現れます。 See Errors

エコー領域に表示するには、 ストリーム(see Output Functions)として tを指定したLisp表示関数を使うか、あるいはつぎのようにします。

— 機能: message string &rest arguments

この関数は、エコー領域に1行のメッセージを表示する。 引数stringは、言語Cのprintfの制御文字列と同様である。 書式指定について詳しくは、String Conversionformatを参照。 messageは構築した文字列を返す。

バッチモードでは、messageはメッセージテキストと改行を 標準エラーストリームへ出力する。

stringnilであると、 messageはエコー領域をクリアする。 ミニバッファが活性であると、 これによりミニバッファの内容がスクリーンにただちに表示される。

          (message "Minibuffer depth is %d."
                   (minibuffer-depth))
           -| Minibuffer depth is 0.
          => "Minibuffer depth is 0."
          
          ---------- Echo Area ----------
          Minibuffer depth is 0.
          ---------- Echo Area ----------
     
— 機能: message-or-box string &rest arguments

この関数はmessageと同様にメッセージを表示するが、 エコー領域のかわりに対話ボックスを使うこともある。 この関数がマウスを用いて起動されたコマンドから呼ばれたとき、 より正確には、last-nonmenu-event(see Command Loop Info)が nilかリストのいずれかであると、 メッセージを表示するために対話ボックスかポップアップメニューを用いる。 さもなければエコー領域を用いる。 (これは、同様な決定をくだすy-or-n-pの判定条件と同じである。 see Yes-or-No Queries。)

呼び出しの周りでlast-nonmenu-eventに適切な値を束縛することで、 マウスを使うかエコー領域を使うか強制できる。

— 機能: message-box string &rest arguments

この関数はmessageと同様にメッセージを表示するが、 可能な限り対話ボックス(やポップアップメニュー)を使う。 対話ボックスやポップアップメニューを扱えない端末などで これらを使用できない場合には、 message-boxmessageと同様にエコー領域を使う。

— 機能: current-message

この関数は、エコー領域に現在表示されているメッセージを返す。 なければnilを返す。

— 変数: cursor-in-echo-area

この変数は、エコー領域にメッセージを表示しているときに カーソルをどこに表示するかを制御する。 nil以外であると、メッセージの末尾にカーソルを表示する。 さもなければ、エコー領域にではなく、ポイント位置にカーソルを表示する。

この値は普通はnilである。 Lispプログラムはこれにtを短い期間だけ束縛する。

— 変数: echo-area-clear-hook

このノーマルフックは、(message nil)や他の理由で エコー領域をクリアするたびに実行される。

エコー領域に表示したほとんどすべてのメッセージは バッファ`*Messages*'にも記録されます。

— ユーザオプション: message-log-max

この変数は、バッファ`*Messages*'に保持する行数を指定する。 値tは、保持する行数を制限しないことを意味する。 値nilは、メッセージをまったく記録しないことを意味する。 メッセージを表示しつつそれを記録しないようにするには つぎのようにする。

          (let (message-log-max)
            (message ...))
     
— 変数: echo-keystrokes

この変数は、コマンド文字を表示するまでの経過時間を決定する。 この値は整数であり、表示し始めるまでに待つ秒数を指定する。 ユーザーが(C-xなどの)プレフィックスキーを打ってから つぎを打つまでにこの秒数だけ遅れがあると、 プレフィックスキーをエコー領域に表示する。 (いったんキー列の表示を始めると、 同じキー列の以降の文字すべてを表示する。)

値がゼロであると、コマンド入力を表示しない。