[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この章ではEmacsのユーザに対する表示機能に関連した機能について説明します。
35.1 画面の再表示 | ||
35.2 画面サイズ | Emacsの画面の大きさ。 | |
35.3 切捨て表示 | ||
35.4 エコー領域 | ||
35.5 不可視テキスト(invisible text) | バッファ・テキストの部分的非表示。 | |
35.6 選択表示 | ||
35.7 オーバレイ矢印 | ||
35.8 一時表示 | ||
35.9 オーバレイ | ||
35.10 フェース | ||
35.11 対応括弧の点滅表示 | ||
35.12 反転表示(Inverse Video) | 画面の見かけ。 | |
35.13 普通の表示方法 | ||
35.14 表示テーブル | ||
35.15 ベルを鳴らす | ||
35.16 ウィンドウ・システム |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
関数redraw-frame
は指定されたフレーム全体の内容を再表示します。
See section フレーム。
この関数はフレームframeの内容を消去し再表示します。
さらに強力なのはredraw-display
です。
この関数は表示されているフレームすべての内容を消去し再表示します。
ユーザからの入力の処理は再表示よりも絶対に優先されます。入力がある場合に これらの関数を呼んでも、すぐには何もしませんが、すべての入力を処理した後 で、全体の再表示がいつか必ず起こります。
通常Emacsをサスペンドしたりリジュームしたりしたときも画面が再表示 されます。端末エミュレータによってはEmacsのような画面指向のプログラムの ために、普通の逐次的な表示とは別の表示内容を保持するものがあ りますが、このような端末を使っているときには再開時の再表示を禁止した いと思うかもしれません。
この変数はEmacsがサスペンドされてそれからリジュームされたときに画面全体を
再表示すべきかどうかを制御します。非nil
の場合は再表示を行ない、
nil
の場合は再表示を行ないません。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
画面サイズ関数は端末の高さ・幅にアクセスしたり、設定したりします。 複数のフレームを使っている場合には、選択されているフレームに対して働きま す (see section フレーム)。
この関数は画面上で表示に使用可能な行数を返します。
(screen-height) ⇒ 50 |
この関数は画面上で表示に使用可能な桁数を返します。
(screen-width) ⇒ 80 |
この関数は端末がlines行を表示可能であることを宣言します。 既存のウィンドウのサイズはこれに合うように同じ比率で変更されます。
not-actual-sizeがnil
でない場合、Emacsは
lines行を出力しますが、実際の画面の高さの値を変更しません。
(カーソルを正しく位置づけるためには実際のサイズが正しいことが必要なので
すが)。端末が実際に持っている高さよりも小さい値を使うと、小さい画面で
何が起こるかを再現するためとか、画面全体を使うと端末の動作がおかしくなる
場合に便利でしょう。
linesが以前の値と違う場合には、画面全体が消去されてから新しいサイ ズで再表示されます。
この関数はnil
を返します.
この関数は端末がcolumns桁を表示可能であることを宣言します。
詳細はset-screen-height
を参照。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
テキストの行がウィンドウの右端を超えた場合には、その行は画面の次の行に続 きが表示されるか、右端を切捨てて一行に表示されるか、の選択肢があります。 長いテキスト行を表示するために使われる行のことを継続(continuation) 行といいます。普通、右端の桁にある`$'は行の切捨てを示します。また右端 の`\'は行が次の行に"wrap"、つまり続いていることを示しています。 (表示テーブルを使えばほかの表示をすることもできます。 表示テーブルを参照。)
継続は行詰め込み(filling)とは違うことに注意してください。継続は画面の上 だけで起こり、バッファの内容に対しては起こらないし、また継続はちょうど画 面の左端で行を分割するのであって、単語の境界ではありません。 See section 行詰め。
このバッファ・ローカル変数はウィンドウの右端にはみだす行をEmacsがどう表示
するかを制御します。既定値はnil
で、継続表示を指定します。その値が
nil
でない場合は、はみだす行は切り捨て表示されます。
変数truncate-partial-width-windows
がnil
でない場合は、
truncate-lines
の値に関わらず(一つのフレームの中で)横に並んだウィ
ンドウではいつも切捨て表示が採用されます。
この変数はtruncate-lines
に対してローカル値がないバッファに対して
使われる既定値です。
この変数は横に並んだウィンドウで、ウィンドウの右端を越えて伸びる行の表示
の仕方を制御します(see section ウィンドウの分割)。
非nil
の場合は、そのような行は切捨て表示されます。それ以外は
truncate-lines
の指示にしたがいます。
表示テーブルを使えば行の継続や行の切捨てを示す表示を変えること ができます。表示テーブルを参照してください。
バッファに非常に長い行があるときに継続表示をさせると、それに対
する計算のためにEmacsの再表示が遅くなることがあります。また桁位置の計
算や字下げ関数も遅くなります。この場合には
cache-long-line-scans
をt
に設定するとよいかもしれません。
この変数を非nil
にすると、字下げやカーソル移動関数、Emacsの再
表示がバッファのスキャンの結果をキャッシュして、バッファが変更されないかぎりそれ
を参照することによって再スキャンを避けるようになります。
このキャッシュを使うようにすると短い行の処理はいくぶん遅くなります。
この変数は各バッファで自動的にローカルになります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
エコー領域(echo area)はmessage
プリミティブによって作られる
メッセージを表示するために、またキーストロークをエコーするために使われます。
このエコー領域と画面の同じ場所にミニバッファが(アクティブなとき
には)表示されてはいますが、ミニバッファと同じものではありません。
GNU Emacs Manualにエコー領域とミニバッファが画面スペースの使
用で衝突した場合にそれをどう解決するかのルールが規定されています
(see (emacs)Minibuffer section `The Minibuffer' in The GNU Emacs Manual)。
エラー・メッセージはエコー領域に表示されます。エラーを参照してく
ださい。
エコー領域に出力するにはLispの表示関数(printing functions)でストリー
ムをt
にすればできますが、次の方法でもできます。
この関数は1行のメッセージをエコー領域に表示します。
引数のstringはC言語のprintf
の制御文字列と同様です。
その変換の仕様については文字と文字列間の変換のformat
を参照して
ください。message
はそれによって作られた文字列を返します。
バッチ・モードではmessage
はメッセージのテキストを標準エラー・ストリー
ムに表示して改行します。
stringをnil
にすると
message
はエコー領域の表示を消去します。そのときミニバッファが
アクティブであれば、これと同時にミニバッファの内容が画面上に見える
ようになります。
(message "Minibuffer depth is %d." (minibuffer-depth)) -| Minibuffer depth is 0. ⇒ "Minibuffer depth is 0." ---------- Echo Area ---------- Minibuffer depth is 0. ---------- Echo Area ---------- |
エコー領域に表示されたメッセージのほとんどは、`*Messages*'バッ ファにも記録されています。
この変数は`*Messages*'バッファに何行まで保持するかを指定します。
値がt
の場合は、制限なしになります。nil
の場合はメッセージの
記録(logging)はまったく行なわれません。次の例はメッセージを表示するだけで
記録されないようにする方法です。
(let (message-log-max) (message …)) |
この変数はコマンド文字をエコーするまでどのぐらいの時間をあけるかを決めま す。値は整数で、エコーするまでに待つ秒数を指定します。ユーザがプレ フィックス・キー(C-xなど)をタイプしたあと、この変数の値の秒数のあい だ次のキーをタイプせずにいると、そのプレフィックス・キーがエコー領域にエコーされ ます。それに続く同じコマンドの中の文字もエコーされます。
値が0の場合には、コマンド入力はエコーされません。
この変数はメッセージがエコー領域に表示されたときに、カーソルがどこに現
れるかを制御します。これが非nil
の場合は、カーソルはメッセージの最
後に現れます。それ以外は、カーソルはポイントに現れ、エコー領域にはまっ
たく現れません。
値は通常nil
で、Lispプログラムが短時間だけt
に束縛します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
invisible
属性によって文字を不可視(invisible)にして、画面上
に現れないようにすることができます。これはテキストの属性でもよいし、オー
バレイの属性でもかまいません。
一番簡単な場合として、invisible
属性が非nil
なら文字が不可視
になります。これはデフォルトの場合で、変数
buffer-invisibility-spec
の既定値を変えなければinvisibility
属性(訳注: invisible
属性の誤りか)はこのように働きます。この機能は
選択的表示(selective display) (see section 選択表示)によく似ていま
すが、より一般的ですっきりしています。
より一般的には、変数buffer-invisibility-spec
を使って
invisible
属性のどの値がテキストを非表示にするのかを制御できます。
これによってテキストをあらかじめサブセットに分類してそれぞれ
に異なったinvisible
値を与えておき、あとで
buffer-invisibility-spec
の値を変えることでそのいろいろなサブセッ
トの可視、不可視を切替えるということができます。
buffer-invisibility-spec
による可視性の制御は、特にデータベースの
エントリの一覧を表示するプログラムで便利でしょう。これを使うとデータベー
スのエントリの一部だけを見せるという方法で、便利なフィルタリング・コマンド
を実装することができます。この変数を設定する方法は非常に高速であり、バッ
ファのテキストをすべてスキャンして変更すべき属性を探すのに比べてずっと速くな
ります。
この変数はどのinvisible
属性が実際に文字を不可視にするかを指定しま
す。
t
invisible
属性が非nil
ならば文字が不可視になります。これが既
定値です。
リストの各要素が文字を不可視にします。 つまりこのリストの要素の中のあるものが文字に適用されるものならば、そ の文字は不可視になるということです。このリストの要素としては次の2種類の ものが許されます。
atom
invisible
属性値がatomであるか、atomをメンバにもつリス
トである場合に、文字が不可視になります。
(atom . t)
invisible
属性値がatomであるか、atomをメンバにもつリス
トである場合に、文字が不可視になります。さらに、この文字が行末にあって、
直後に可視の改行が続いているならば、省略記号が表示されます。
通常、テキストに働くコマンドやポイントを動かすコマンドはテキストが不可視 かどうかには関知しません。しかし、ユーザレベルの行移動コマンドは不可視な 改行をないものとして扱います。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
選択表示(selective display)とは画面上で行を隠す機能で、2種類あります。
第1の方法は明示的な選択表示で、Lispプログラムの中で使うために設計さ れています。プログラムがテキストを変更することでどの行を隠すかを制御しま す。Outlineモードは伝統的にこの方法を使っていました。この方法は一部 不可視テキスト機能(see section 不可視テキスト(invisible text))で置き換えられており、これを使っ た新しいOutlineモードがあります。
第2の方法は隠す行の選択が字下げの仕方に基づいて自動的に行なわれる ものです。この方法はユーザレベルの機能として設計されています。
明示的な選択表示を制御する方法は改行(control-j)をキャリッジ・リターン (control-m)に置き換えるというものです。するとそれまでその改行に続く行で あったものが見えなくなります。厳密には行を分けるのは改行だけなので、一時 的にですがもはや行があるとはいえず、前の行の一部になっています。
選択表示は編集コマンドには直接影響を与えません。たとえばC-f
(forward-char
)は何のためらいもなくポイントを見えないテキストの中
に移動します。しかし、改行文字をキャリッジ・リターン文字で置き換えたこと
に影響されるコマンドがあります。たとえばnext-line
は見えない行を飛び
越えます。これはこのコマンドが改行文字だけを探すからです。選択表示を使う
モードが、改行を考慮するコマンドや、テキストの一部を見えるようにしたり、
見えなくしたりするコマンドを定義することもあるでしょう。
選択表示されているバッファをファイルに書き出す時には、すべての control-mは改行として出力されます。つまり次にファイルを読み込んだときに は、普通どおりに見え、隠されたテキストは全くありません。 選択表示はEmacsの中だけで効果があるのです。
このバッファ・ローカル変数は選択表示を作動させます。つまり行や行の一部が見 えなくされる可能性があるということです。
selective-display
の値がt
ならば、 control-mの後ろの行は表示
されません。
selective-display
の値が正の整数なら、その桁数よりも深く字下げ
された行は表示されません。
バッファの一部が見えなくなっている場合には、垂直方向の移動コマンドはその
部分が存在しないかのように動作し、next-line
コマンドは1回で見えな
い行をいくつも飛び越えることができます。
しかし文字単位の移動コマンド(forward-char
など)は見えない部分を飛
び越えないので、見えない部分にテキストを挿入・削除することが(わかりにく
くはありますが)可能です。
次の例に、バッファfoo
の表示の様子が
selective-display
の値によってどのように変化するかを示します。
バッファの内容は変化しません。
(setq selective-display nil) ⇒ nil ---------- Buffer: foo ---------- 1 on this column 2on this column 3n this column 3n this column 2on this column 1 on this column ---------- Buffer: foo ---------- (setq selective-display 2) ⇒ 2 ---------- Buffer: foo ---------- 1 on this column 2on this column 2on this column 1 on this column ---------- Buffer: foo ---------- |
このバッファ・ローカル変数が非nil
ならば、Emacsは見
えないテキストが続いている行の最後に`…'を表示します。
次の例は前の例の続きです。
(setq selective-display-ellipses t) ⇒ t ---------- Buffer: foo ---------- 1 on this column 2on this column ... 2on this column 1 on this column ---------- Buffer: foo ---------- |
表示テーブルを使ってこの省略記号(`…')をほかのテキスト に変えることもできます。See section 表示テーブル。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
オーバレイ矢印(overlay arrow)は、バッファ中のある行にユーザに編集 させるというより読ませる目的でユーザの注意を向けたいときに便利です。たとえば、 デバッガのインタフェースとして使われるモードでは、オーバレイ矢印がこれか ら実行されようとしている行を示します。
この変数はある行に注意を惹くために表示される文字列を保持します。
矢印機能が使われていない場合はnil
です。
この変数はオーバレイ矢印をどこに表示するかを示すマーカを保持します。この マーカは行頭を指していなければなりません。その行の頭に矢印テキストが表示 され、本来ならそこに表示されているはずのテキストは下に隠されます。 もっとも、一般に矢印は短く、行は字下げで始まるので、普通は重要なものが隠 されてしまうことはありません。
オーバレイ文字列はマーカが指しているバッファでだけ表示されます。したがっ てある時点にオーバレイ矢印を持ちうるバッファは一つだけです。
これと同じことはbefore-string
属性をもつオーバレイを作ることでもで
きます。See section オーバレイの属性。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
一時表示(temporary displays)は、コマンドがユーザに編集させるのではなく読 ませる目的でバッファに出力するために使われます。ヘルプ・コマンドがよくこの 機能を使います。
この関数はformsをその出力がすべてbuffer-nameで名前を指定され るバッファに入れられるようにして実行します。その後そのバッファはいずれか のウィンドウに表示しますが、選択はされません。
文字列buffer-nameは一時バッファを指定しますが、これは既存のもので
ある必要はありません。この引数はバッファでなく文字列でなければなりません。
そのバッファはまず内容が消され(確認なし)、
with-output-to-temp-buffer
が終了したあとには、変更なしと印がつけ
られます。
with-output-to-temp-buffer
はstandard-output
を一時バッファ
に束縛して、formsを評価しています。このforms中の、Lisp出力関
数を使った出力はとくに指定しなければこのバッファに向けられます
(画面表示やエコー領域のメッセージも一般的には「出力」といえますが、この
関数には影響されません)。
See section 出力関数。
formsの最後の形式の値が返されます。
---------- Buffer: foo ---------- This is the contents of foo. ---------- Buffer: foo ---------- (with-output-to-temp-buffer "foo" (print 20) (print standard-output)) ⇒ #<buffer foo> ---------- Buffer: foo ---------- 20 #<buffer foo> ---------- Buffer: foo ---------- |
この変数が非nil
であれば、with-output-to-temp-buffer
がそれ
を関数として呼び出し、ヘルプ・バッファの表示をさせます。その関数は引数を
一つ受けますが、これは関数が表示を行うべきバッファです。
バージョン18以前のEmacsではこの変数は
temp-buffer-show-hook
という名前でした。
この関数は現在のバッファのpositionにstringを一時的に表示しま す。undoリストの状態やバッファの変更ステータスには影響を与えません。
一時的な表示は次の入力イベントまで表示されています。次の入力イベントが
charならば、momentary-string-display
はそれを無視して戻りま
すが、それ以外のイベントはバッファされたままになり、その後入力として使わ
れます。つまりcharをタイプすると文字列の表示が消えるだけですが、
(たとえば)C-fをタイプすると文字列の表示が消えたあと、(多分)ポイン
トが前方に移動します。引数charの既定値はスペースです。
momentary-string-display
の返り値には特に意味はありません。
文字列stringが制御文字を含んでいなければ、
before-string
属性をもつオーバレイを作ることで、
同じことをより一般的な方法ですることができます。
messageが非nil
ならば、stringがバッファに表示されるの
と同時に、それがエコー領域に表示されます。これがnil
のときは、
既定値の「作業を続けるにはcharを押してください」という意味のメッセー
ジが表示されます。
次の例では、ポイントは最初二行目の行頭にあるとします。
---------- Buffer: foo ---------- This is the contents of foo. ∗Second line. ---------- Buffer: foo ---------- (momentary-string-display "**** Important Message! ****" (point) ?\r "Type RET when done reading") ⇒ t ---------- Buffer: foo ---------- This is the contents of foo. **** Important Message! ****Second line. ---------- Buffer: foo ---------- ---------- Echo Area ---------- Type RET when done reading ---------- Echo Area ---------- |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
オーバレイ(overlays)を使って、表現形としてバッファのテキストの見え 方を変えることができます。 オーバレイは特定のバッファに属するオブジェクトで、決まった始めと終りの 点を持っています。また、ユーザが設定したり、読みとったりできる属性もあり、 オーバレイ中のテキストの表示方法に影響します。
35.9.1 オーバレイの属性 | ||
35.9.2 オーバレイの管理 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
オーバレイの属性はある面ではテキスト属性に似ていますが、似ている点よりも 違っている点の方が重要です。テキスト属性はテキストの一部とみなされますが、 オーバレイは特にテキストの一部とはみなされません。ですから、テキストをバッ ファ間でコピーしてもテキスト属性は保存されますが、オーバレイを保存するよ うなことはしていません。バッファのテキスト属性を変更すると、バッファは変 更されたとマークされますが、オーバレイを移動したりその属性値を変更したり しても変更されたとマークはされません。またテキスト属性の変更と違って、オー バレイの変更はバッファのundoリストにも記録されません。
priority
この属性の値(非負の数値でなければなりません)は、そのオーバレイの優先度を
決めます。優先度が問題になるのは二つ以上のオーバレイが同じ文字の上に重なっ
ており、しかも両方が表示するフェースを指定している場合です。この場合、
priority
の値が大きいものが優先され、そのフェース属性が優先度の低いオー
バレイのフェース属性に優先して使われます。
現在は、すべてのオーバレイはテキスト属性よりも高い優先度を持ちます。負の 優先度についてはその意味をまだ決めていないので、使わないようにしてくださ い。
window
window
属性が非nil
ならば、オーバレイはそのウィンドウだけに
適用されます。
category
オーバレイにcategory
属性があれば、それをオーバレイの
カテゴリ(category)といいます。これはシンボルでなければなりません。その
シンボルの属性がオーバレイの属性の既定値として働きます。
face
この属性はテキストのフォントと色を制御するものです。値はフェースの名前か、 フェースの名前のリストです。詳細はSee section フェース。 この機能は一時的なものになるかもしれません。将来テキストの表示方法を指定 するためのほかの方法で置き換える可能性があります。
mouse-face
この属性はマウスがオーバレイの範囲内にあるとき、face
の代わりに使
われます。この機能もface
同様一時的なものである可能性があります。
modification-hooks
この属性の値は、オーバレイ内の文字が変更されたり、その厳密な意味での 内部に文字が挿入されたときに呼び出される関数のリストです。
フック関数はこの変化の前後両方に呼び出されます。その関数が受けとった情報 を保存して、呼出しの間の情報を比較すれば、バッファのテキストにどうい う変化が起こったのかを正確に知ることができます。
変化の前に呼ばれるときには、各関数は四つの引数を受けとります。これらは
オーバレイ、nil
、変更されようとしているテキスト範囲の始点と終点、
です。
変化の後に呼ばれるときには、各関数は五つの引数を受けとります。すなわちオー
バレイ、t
、今変更されたテキスト範囲の始点と終点、その範囲で置き換
えられたテキストの変更前の長さ、です。
(挿入に対しては変更前の長さは0、削除に対してはその削除された文字の数で変
更後の範囲の始点と終点が同じになっています)。
insert-in-front-hooks
この属性の値は、オーバレイの始点のすぐ右側にテキストが挿入される直前と直
後に呼び出されるべき関数のリストです。関数の呼出し方は
modification-hooks
の関数と同じです。
insert-behind-hooks
この属性の値はオーバレイの終点のすぐ右側にテキストが挿入される直前と直後
に呼び出されるべき関数のリストです。関数の呼出し方は
modification-hooks
の関数と同じです。
invisible
invisible
属性はオーバレイ中のテキストを不可視にすることができます。
不可視というのはつまり画面には表示されないということです。
詳しくはSee section 不可視テキスト(invisible text)。
intangible
intangible
属性をオーバレイにつけると、ちょうどintangible
テ
キスト属性と同じように働きます。詳しくはSee section 特殊な意味をもつ属性。
before-string
この属性の値はオーバレイの始点に加えて表示する文字列です。その文字列はどんな 意味でもバッファの中には存在せず画面上にあるだけです。文字列には1桁で表示される文字以外は含めない方がいいでしょう。タブや改行などの制御 文字を含めるとおかしな結果になります。
after-string
この属性の値は、オーバレイの終点に加えて表示する文字列です。その文字列はどんな 意味でもバッファの中には存在せず画面上にあるだけです。文字列には1桁で表示される文字以外は含めない方がいいでしょう。タブや改行などの制御 文字を含めるとおかしな結果になります。
evaporate
この属性が非nil
ならば、オーバレイは空になったとき(つまりまったく
文字を覆わなくなったとき)に自動的に削除されます。
以下はオーバレイの属性を読み書きするための関数です。
この関数はoverlayに記録されている属性propがあれば、その値を
返します。overlayがその属性には値を記録していない場合でも、
category
属性があってそれがシンボルならば、そのシンボルの
prop属性が使われます。それもなければ値はnil
です。
この関数はoverlayに記録されている属性propの値をvalueに 設定します。valueを返します。
get-char-property
というある文字に対してオーバレイ属性とテキスト属
性の両方を調べる関数もありますので参照してください。
See section テキスト属性の調査。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この節ではオーバレイの生成、削除、移動、内容検査のための関数を説明します。
この関数はbufferに属し、startからendの範囲の オーバレイを生成して返します。startもendもバッファ中の位置を 指定するもの、つまり整数か、マーカーでなければなりません。bufferを 省略すると、オーバレイは現在のバッファに作られます。
この関数はoverlayが始まる位置を返します。
この関数はoverlayが終る位置を返します。
この関数はoverlayが属するバッファを返します。
この関数はoverlayを削除します。オーバレイはLispオブジェクトとして は存在し続けますが、それが属していたバッファの一部ではなくなり、表示には なんの影響も与えなくなります。
この関数はoverlayをbufferの範囲startからendに移 動します。startもendもバッファ中の位置を 指定するもの、つまり整数か、マーカーでなければなりません。 bufferを省略すると、オーバレイのバッファは変わりません。
返り値はoverlayです.
オーバレイの終点を変更する正当な手段はこの関数だけです。オーバレイの中の マーカを直接変更してしまうと、ほかの重要なデータ構造の更新が行なわれず失われ るオーバレイが出ることになりかねないので、やめてください。
この関数は位置posを含むオーバレイすべてのリストを返します。リスト 中の順番は特に規定されていません。posを含むオーバレイとは、 posかそれよりも前に始まり、posよりも後ろで終るオーバレイです。
この関数はオーバレイの始点・終点の中でposよりも後ろにある次のもの を返します。
この関数はオーバレイの始点・終点の中でposよりも前にある次のもの を返します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フェース(face)とはグラフィカル属性の集まりに名前をつけたものです。 グラフィカ ル属性にはフォント、文字色、背景色、下線を引くかどうか、があります。フェース は画面上のテキストの表示方法を制御します。
フェースにはそれぞれのフェースid番号(face id number)があり、Emacs の内部ではそれによっ てフェースを互いに区別しています。しかしほとんどの目的にはLispプログラ ム中でフェースを名前で参照することができます。
この関数はobjectがフェースの名前シンボルであるとき(または内部でフェースの
情報を記憶するのに使われているベクタの一種であるとき)にt
を返します。
そうでない場合はnil
を返します。
フェース名はすべてのフレームで意味を持ち、特に変更しなければすべてのフレーム で同じ意味を持ちます。望むならあるフェース名が特定のフレームで別個の意味をもつようにすることも可能です。
35.10.1 標準フェース | Emacsに普通についてくるフェース。 | |
35.10.2 表示の際のフェースの合併 | ||
35.10.3 フェースに働く関数 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
次の表は標準のフェースすべてとその使用法のリストです。
default
このフェースは普通のテキストに使われます。
modeline
このフェースはモード行とメニュー・バーに使われます。
region
このフェースはTransient Markモードでリージョンを強調表示するとき に使われます。
secondary-selection
このフェースはユーザの選択した第2セレクションを示すために使われます。
highlight
このフェースはいろいろな強調表示に使うことを意図したものです。
underline
これはテキストに下線を引くフェースです。
bold
このフェースは使用可能ならボールド(太字体)フォントを使います。フレームのフォ ントのボールド版があればそれを使います。使いたいのであればユーザが自分で ボールド版のあるフォントを既定フォントにしなければなりません。
italic
このフェースはフレームのフォントのイタリック(斜体)版があればそれを使いま す。
bold-italic
このフェースはフレームのフォントのボールド・イタリック(太斜体)版があればそ れを使います。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ここで表示にどのフェースを使うかを指定する方法をすべて示します。
face
属性をつけることができ、
その文字はそのフェースで表示されます。See section 特殊な意味をもつ属性。
文字にmouse-face
属性がある場合は、マウスがその文字の「十分近くに」
あるときにface
属性の代わりに使われます。
face
属性と
mouse-face
属性がつけられて、オーバレイが覆っているテキストすべて
に働きます。
region-face
を参
照)。
もしこれらの諸指定から文字に対して複数のフェースが指定される場合は、 Emacsはそれら指定されたフェースの属性を合併(merge)します。まず特別なグリ フのフェースの属性が1番で、次にリージョンの強調表示(それが適用可能な場 合)、その次にオーバレイからのフェースの属性、さらにテキスト属性からのも の、そして最後が既定値フェースです。
複数のオーバレイがある一つの文字を覆っている場合には、オーバレイの中で優 先度がもっとも高いものがそれより低いものに優先して使われます。 See section オーバレイ。
フォントや色などの属性が上記のどれによっても指定されていない場合は、フレー ム自身のフォントと色が使われます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フェースが指定できる属性にはフォント、文字色、背景色、下線有無があります。
これらにnil
を設定することにより特に指定しないままにしておくことも
できます。
以下フェースを生成・変更するためのプリミティブを示します。
この関数はnameという名前の新しいフェースを定義します。初期値として
すべての属性はnil
になっています。nameという名前のフェースが
すでにある場合にはなにもしません。
この関数は定義されているフェース名全部のリストを返します。
この関数はnew-nameというフェースを、old-faceという既存のフェ イスのコピーとして定義します。new-nameというフェースがまだなければ 生成します。
オプション引数frameが与えられると、この関数はそのフレームだけに働 きます。与えない場合は、各フレームに対して働き、各フレームの old-faceから同じフレームのnew-faceに属性をコピーします。
オプション引数new-frameが与えられると、copy-face
は
frameのold-faceからnew-frameのnew-nameに属性をコ
ピーします。
以下に示す関数によって既存のフェースの属性を変更することができます。 frameを指定すると、そのフレームだけに働きます。指定しなければすべ てのフレームに働くとともに、新規のフレームに適用される既定値も変更されま す。
これらの関数はフェースfaceの文字色(背景色)をcolorに設定しま す。引数colorは色の名前を表す文字列でなければなりません。
白黒画面では網かけパターン(stipple pattern)によって何段階かの濃淡表示が 実装されています。
この関数はフェースfaceの背景網かけパターンを
patternに設定します。引数
patternはXサーバによって定義されている網かけパターンの名前でなけれ
ばなりません。あるいはnil
でもよく、網かけを使わないとい
う意味になります。
濃淡表示をするときに自動的に網かけパターンが使われるので、 普通網かけパターンを気にする必要はありません。
この関数はフェースfaceのフォントを設定します 引数fontは文字列でなければなりません。
この関数はフェースfaceの下線属性を設定します。
非nil
は下線つきという意味でnil
は下線なしです。
フェースfaceの文字色と背景色を交換します。フェースが文字色・背景色 両方を指定していない場合は、その文字色・背景色にはそれぞれ既定値の背景色・ 文字色が設定されます。
以下の関数はフェースの属性を調べるものです。 frameを指定しない場合は、新規のフレームのための既定値を参照します。
これらの関数はフェースfaceの文字色(背景色)を文字列で返します。
この関数はフェースfaceの背景網かけパターンの名前を返します。背景網
かけパターンがなければnil
を返します。
この関数はフェースfaceのフォント名を返します。
この関数はフェースfaceの下線属性を返します。
この関数はフェースfaceのフェースid番号を返します。
これはフェースface1とface2が同じ表示属性を持っていれば
t
を返します。
これはfaceが既定値のフェースと異なった表示をするフェースならば
t
を返します。あるフェースが既定値のフェースと同じと判断されるのは、
属性値それぞれが既定値のフェースのものとと同じ値であるか、nil
(つ
まり既定値を継承している)場合です。
この変数の値はリージョンがアクティブになった場合にその中の文字を表示する ために使うフェースidを指定します(Transient Markモードのみ)。これで指定された フェースはそのリージョンのテキストに対するテキスト属性やオーバレイに由来 する一切のフェースに優先されます。Transient Markモードの詳細については See section マーク。
通常これの値はregion
という名前のフェースのid番号になっています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この節ではユーザが閉じ括弧を挿入したときに Emacsが対応する開き括弧を示すメカニズムについて説明します。
この変数の値は(無引数の)関数です。この関数は閉じ括弧構文をもつ文
字が挿入されたときに呼び出されます。
blink-paren-function
の値はnil
でもよく、この場合なにも行なわ
れません。
注意: この変数はEmacsの古いバージョンでは
blink-paren-hook
という名前でしたが、フックの標準的な呼出し方に したがって呼び出されるものではないので、バージョン19ではblink-paren-function
という名前に変更されました。
この変数がnil
のときはblink-matching-open
は何もしません。
この変数は対応する括弧をスキャンする際に、これを越えたらあきらめるという 距離の最大値を指定します。
この変数は対応する括弧にカーソルが置かれる時間を秒単位で指定します。 1秒未満がいいようですが、既定値はすべてのシステムで使える1秒になっていま す。
この関数はblink-paren-function
の既定値です。閉じ括弧構文
をもつ文字のあとにポイントがあることを前提にして、
カーソルを一時的に対応する開き括弧構文文字に移動します。
その文字がすでに画面に表示されていなければ、その文字のコンテクストを
エコー領域に表示します。処理に長い時間かかってしまうのを防ぐために、この関数は
blink-matching-paren-distance
文字を越えては検索しません。
次の例はこの関数を明示的に呼び出すものです。
(defun interactive-blink-matching-open () "Indicate momentarily the start of sexp before point." (interactive) (let ((blink-matching-paren-distance (buffer-size)) (blink-matching-paren t)) (blink-matching-open))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この変数はEmacsが画面のテキストすべてを反転表示するかどうかを制御します。
非nil
の場合は、反転表示をし、nil
の場合は反転表示をしません。
既定値はnil
です。
この変数はモード行に反転表示を使うかどうかを制御します。これが非
nil
ならモード行は反転表示されます。
それ以外はモード行はテキスト同様に普通に表示されます。既定値は
t
です。
Xウィンドウのフレームではモード行の表示にmodeline
というフェースが使わ
れます。これは変更しなければ、通常普通のフェースの反転になっています。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
普通の表示方法はそれぞれの文字をどう表示するかを定義しています。表示テー ブルを設定してこの表示方法を変えることができます。 (see section 表示テーブル)。以下に普通の表示方法を示します。
tab-width
で決まる位置までの
空白として表示されます。
ctl-arrow
の値に
よって2種類に表示されます。これが非nil
ならば、これらのコードは二つ
のグリフの列に対応し、1番目が`^'のASCIIコードとなります。(表示
テーブルによって`^'以外のものを使うことが指定されているか
もしれません。) それ以外はこれらのコードは128から255のコードと同じように
対応づけられます。
表示テーブルがあるときでも、そのアクティブな表示
テーブル中のエントリがnil
であるような文字に対しては
普通の表示方法が適用されますから、表示テーブルを設定するときには、
普通でない動作をさせたい文字だけを指定すればいいのです。
これらの変数はある文字が画面に表示される方法に影響するものですが、 文字が占める桁数も変えるので、字下げ関数にも影響します。
このバッファ・ローカル変数は制御文字の表示方法を制御します。
非nil
ならば、キャレットのあとに文字をつけて`^A'のように表示します。
nil
ならばバックスラッシュのあとに8進3桁で`\001'のように表示し
ます。
この変数の値はctl-arrow
の値がバッファで再定義されていない場合の既
定値です。See section バッファローカルな変数のデフォルト値。
この変数の値はタブ・ストップの間隔で、Emacsバッファでタブ文字が表示される
ときに使われます。既定値は8です。この機能はtab-to-tab-stop
コマ
ンドで使われるユーザが設定できるタブとは何の関係もないことに注意してくだ
さい。See section 調節可能な「タブ・ストップ」。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
表示テーブル(display tale)機能を使うと256種類の文字すべてについて、 それが画面で どう表示されるかを制御できます。この機能はASCII文字セット にない文字を使うヨーロッパの言語を表示するために便利です。
表示テーブルは各文字コードをグリフ(glyphs)の列に対応づけます。グ リフとは画面上で1文字分を占める像(image)です。さらに各グリフが端末でどう 表示されるかもグリフ・テーブル(glyph table)を使って制御できます。
35.14.1 表示テーブルの形式 | ||
35.14.2 アクティブな表示テーブル | Emacsが使用する表示テーブルを選択する方法。 | |
35.14.3 グリフ | ||
35.14.4 ISO Latin 1 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
表示テーブルは実は262要素の配列です。
表示テーブルを作って返します。テーブルは初期値としてすべての要
素がnil
になっています。
最初の256要素は文字コードに対応します。つまりn番目の要素は文字コー
ドnをどう表示するかを指定しています。その値はnil
か、グリフ値のベ
クタ(see section グリフ)でなければなりません。要素がnil
のときは、普通の
表示法にしたがって表示しろ、という意味です(see section 普通の表示方法)。
表示テーブルを使って改行文字の表示方法を変えると、バッファ 全体が一つの長い"行"として表示されてしまいます。
表示テーブルの残りの6要素は特別な目的に使われており、これが
nil
の場合は、次に示す既定値を使うという意味になります。
切捨て表示された行の末尾に表示されるグリフ(これの既定値は`$')。 See section グリフ。
継続表示された行の末尾用のグリフ(既定値は`\')。
文字が8進コード表示されているということを示すグリフ(既定値は `\')。
制御文字を表すグリフ(既定値は`^')。
見えない行があることを示すグリフのベクタ(既定値は`...')。 See section 選択表示。
横に並んだウィンドウの間に描かれる境界線に使われるグリフ(既定値は `|')。See section ウィンドウの分割。
次の例はctl-arrow
を非nil
に設定した場合の効果を真似る
表示テーブルを作る方法を示しています:
(setq disptab (make-display-table)) (let ((i 0)) (while (< i 32) (or (= i ?\t) (= i ?\n) (aset disptab i (vector ?^ (+ i 64)))) (setq i (1+ i))) (aset disptab 127 (vector ?^ ??))) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ウィンドウごと、バッファごとに表示テーブルを指定することができ ます。バッファbがウィンドウwに表示されていたとすると、表示部 はウィンドウwの表示テーブルがあればそれを使います。それ がなければ、今度はバッファbの表示テーブルがあればそれを 使います。これもなければ標準の表示テーブルがあればそれを使いま す。ここで選択された表示テーブルはアクティブな(active)表示 テーブルと呼ばれます。
この関数はwindowの表示テーブルを返します。windowに
割り当てられた表示テーブルがなければnil
を返します。
この関数はwindowの表示テーブルをtableに設定します。
引数のtableは表示テーブルか、nil
でなければなりま
せん。
この変数はすべてのバッファで自動的にローカルになります。それぞれのバッファ
での値はそのバッファのための表示テーブルです。そのバッファに割り当
てられた表示テーブルが特にない場合は値はnil
です。
この変数の値は既定値の表示テーブルで、ウィンドウにもバッファにも表示テー
ブルがない場合に使われます。この変数の既定値はnil
です。
あるウィンドウに使うべき表示テーブルがない場合--つまりウィン
ドウにもなく、バッファにもなく、standard-display-table
にもない場
合--は、Emacsはそのウィンドウの中のすべての文字コードに対して普通の表示方法
(usual display conventions)を使います。See section 普通の表示方法。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
グリフ(glyph)とは文字を一般化したもので、画面上の一つの文字位置を 占める像(image)を表します。グリフは文字同様Lispでは整数によって表現さ れます。
それぞれの整数のグリフとしての意味は変数glyph-table
の値であるグリ
フ・テーブルで定義されます。
この変数の値は現在のグリフ・テーブルです。これはベクタでなければなりませ
ん。これのg番めの要素がグリフ・コードgを定義します。値がベク
タでなくnil
である場合は、すべてのグリフはsimpleであるとされます
(下記参照)。
以下にグリフ・テーブルの要素として可能なものを示します:
このグリフを表示する場合はstring中の文字を端末に送ります。この方法 は文字端末だけで使用可能で、Xでは使えません。
このグリフをコードintegerの別名と定義します。別名を使ってグリフの フェース・コードを指定できます。下記参照。
nil
グリフはsimpleです。一般的な端末ではグリフ・コードを256で割った余りが出 力する文字になります。Xではグリフ・コードを256で割った余りが出力する文字で、 グリフ・コードを256で割ったものがその文字を出力するのに使われるフェ ースid番号(face id number)を指定します。See section フェース。
グリフ・コードがグリフ・テーブルの長さと同じか、それより大きい場合は、コー ドは自動的にsimpleになります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ISO Latin 1をすべて扱える端末があるなら、次のようにすればその文字集合を 使うことができます。
(require 'disp-table) ;; 文字コード160〜255がそれ自身として表示されるように設定する。 ;; (コード128〜159は制御文字。) (standard-display-8bit 160 255) |
もしISO Latin 1文字集合で書かれたバッファを編集するときに端末が ASCII文字集合以外を扱えないならば、`iso-ascii'をロードすれば、 ほかのISO文字をASCII文字の列でそれらしく表示するように表示テーブ ルを設定することができます。たとえば「ウムラウトつきのo」ならば `{"o}')として表示します。
西欧諸国の端末にはISO Latin 1はサポートせずにその国の言語独自の文字をサポー トしているものがあります。そのような端末を使ってその一言語で作業するため の表示テーブルを定義することもできます。たとえば `lisp/iso-swed.el'はスウェーデンの端末用です。
端末の型に対応してその端末用のLispファイルを書いておけば、あなたの端末のため の適切な表示テーブルを自動的にロードすることもできます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsにベル音を鳴らさせて(または画面を点滅させて)、ユーザの注意を引くこ とができます。ただしやりすぎは禁物です。あまり頻繁にベ ルがなるといらいらしかねません。またエラーを通知すべきときにベルを鳴らす だけ、ということのないようによく考えてください。(See section エラー。)
この関数はベル音を鳴らすか、画面を点滅させるかします(下の
visible-bell
を参照)。同時にdont-terminateが非nil
であ
ればそのとき実行中のキーボード・マクロを終了させます。
これはding
と同じものです。
この変数はベルが鳴ったことを表すためにEmacsが画面を点滅させるかどうかを
決めます。nil
でない場合には点滅させ、nil
の場合には点滅させ
ません。これが有効なのは、Xウィンドウ下か、現在使っている端末のTermcapエ
ントリに、ビジブル・ベル機能(`vb')が定義されている場合だけです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Emacsはいくつかのウィンドウ・システムのもとで動作します。中でも有名なの はXウィンドウ・システムでしょう。EmacsもXも「ウィンドウ」という用語を使 いますが、意味が違います。EmacsのフレームがXでいえば一つのウィンドウです。 Emacsのウィンドウ一つ一つに対してはXはまったく関知しません。
この変数はLispプログラムから、Emacsがどのウィンドウ・システムの下で動作
しているかを知るための変数です。その値はx
(EmacsがXの下で動作して
いる場合)のようなシンボルか、nil
(Emacsが普通の端末で動作している
場合)です。
この変数は正規フックであり、Emacsがあなたの`.emacs'と(もしあれば)
デフォルト初期化ファイルをロードして、さらに端末それぞれのLispコードをロー
ドし、フックterm-setup-hook
を実行したそのあとに実行されます。
このフックは内部処理で使用するもので、ウィンドウ・システムとの通信を確立し、 最初のウィンドウを作成します。ユーザはそれに干渉すべきではありません。
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Yasutaka SHINDOH on September, 29 2006 using texi2html 1.76.