検索エンジンから来た人に注意このマニュアルは、Emacs ver. 19.x 向けのマニュアルを Mule 2.x の開発にあたり邦訳したものを、 電脳外道学会がミラーリングしているものであり、旧版製品パラノイアであるところの椅子人の趣味によるものです。しかしながら、現在の Emacs の主流は ver. 20 以降であり、ver 19.x と ver 20.x とでは、仕様の違いが少なからずあります。 したがって、一般的な Emacs ユーザーにとっては、
このマニュアルと実機の動作とが符合しない場合があります。
|
この章ではEmacsのユーザに対する表示機能に関連した機能について説明します。
関数redraw-frame は指定されたフレーム全体の内容を再表示します。
See section フレーム。
さらに強力なのはredraw-display です。
ユーザからの入力の処理は再表示よりも絶対に優先されます。入力がある場合に これらの関数を呼んでも、すぐには何もしませんが、すべての入力を処理した後 で、全体の再表示がいつか必ず起こります。
通常Emacsをサスペンドしたりリジュームしたりしたときも画面が再表示 されます。端末エミュレータによってはEmacsのような画面指向のプログラムの ために、普通の逐次的な表示とは別の表示内容を保持するものがあ りますが、このような端末を使っているときには再開時の再表示を禁止した いと思うかもしれません。
nilの場合は再表示を行ない、
nilの場合は再表示を行ないません。
画面サイズ関数は端末の高さ・幅にアクセスしたり、設定したりします。 複数のフレームを使っている場合には、選択されているフレームに対して働きま す (see section フレーム)。
(screen-height)
=> 50
(screen-width)
=> 80
not-actual-sizeがnilでない場合、Emacsは
lines行を出力しますが、実際の画面の高さの値を変更しません。
(カーソルを正しく位置づけるためには実際のサイズが正しいことが必要なので
すが)。端末が実際に持っている高さよりも小さい値を使うと、小さい画面で
何が起こるかを再現するためとか、画面全体を使うと端末の動作がおかしくなる
場合に便利でしょう。
linesが以前の値と違う場合には、画面全体が消去されてから新しいサイ ズで再表示されます。
この関数はnilを返します.
set-screen-heightを参照。
テキストの行がウィンドウの右端を超えた場合には、その行は画面の次の行に続 きが表示されるか、右端を切捨てて一行に表示されるか、の選択肢があります。 長いテキスト行を表示するために使われる行のことを継続(continuation) 行といいます。普通、右端の桁にある`$'は行の切捨てを示します。また右端 の`\'は行が次の行に"wrap"、つまり続いていることを示しています。 (表示テーブルを使えばほかの表示をすることもできます。 section 表示テーブルを参照。)
継続は行詰め込み(filling)とは違うことに注意してください。継続は画面の上 だけで起こり、バッファの内容に対しては起こらないし、また継続はちょうど画 面の左端で行を分割するのであって、単語の境界ではありません。 See section 行詰め。
nilで、継続表示を指定します。その値が
nilでない場合は、はみだす行は切り捨て表示されます。
変数truncate-partial-width-windowsがnilでない場合は、
truncate-linesの値に関わらず(一つのフレームの中で)横に並んだウィ
ンドウではいつも切捨て表示が採用されます。
truncate-linesに対してローカル値がないバッファに対して
使われる既定値です。
nilの場合は、そのような行は切捨て表示されます。それ以外は
truncate-linesの指示にしたがいます。
表示テーブルを使えば行の継続や行の切捨てを示す表示を変えること ができます。section 表示テーブルを参照してください。
バッファに非常に長い行があるときに継続表示をさせると、それに対
する計算のためにEmacsの再表示が遅くなることがあります。また桁位置の計
算や字下げ関数も遅くなります。この場合には
cache-long-line-scansをtに設定するとよいかもしれません。
nilにすると、字下げやカーソル移動関数、Emacsの再
表示がバッファのスキャンの結果をキャッシュして、バッファが変更されないかぎりそれ
を参照することによって再スキャンを避けるようになります。
このキャッシュを使うようにすると短い行の処理はいくぶん遅くなります。
この変数は各バッファで自動的にローカルになります。
エコー領域(echo area)はmessageプリミティブによって作られる
メッセージを表示するために、またキーストロークをエコーするために使われます。
このエコー領域と画面の同じ場所にミニバッファが(アクティブなとき
には)表示されてはいますが、ミニバッファと同じものではありません。
GNU Emacs Manualにエコー領域とミニバッファが画面スペースの使
用で衝突した場合にそれをどう解決するかのルールが規定されています
(see section `The Minibuffer' in The GNU Emacs Manual)。
エラー・メッセージはエコー領域に表示されます。section エラーを参照してく
ださい。
エコー領域に出力するにはLispの表示関数(printing functions)でストリー
ムをtにすればできますが、次の方法でもできます。
printfの制御文字列と同様です。
その変換の仕様についてはsection 文字と文字列間の変換の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*'バッ ファにも記録されています。
tの場合は、制限なしになります。nilの場合はメッセージの
記録(logging)はまったく行なわれません。次の例はメッセージを表示するだけで
記録されないようにする方法です。
(let (message-log-max) (message ...))
値が0の場合には、コマンド入力はエコーされません。
nilの場合は、カーソルはメッセージの最
後に現れます。それ以外は、カーソルはポイントに現れ、エコー領域にはまっ
たく現れません。
値は通常nilで、Lispプログラムが短時間だけtに束縛します。
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ならば文字が不可視になります。これが既
定値です。
atom
invisible属性値がatomであるか、atomをメンバにもつリス
トである場合に、文字が不可視になります。
(atom . t)
invisible属性値がatomであるか、atomをメンバにもつリス
トである場合に、文字が不可視になります。さらに、この文字が行末にあって、
直後に可視の改行が続いているならば、省略記号が表示されます。
通常、テキストに働くコマンドやポイントを動かすコマンドはテキストが不可視 かどうかには関知しません。しかし、ユーザレベルの行移動コマンドは不可視な 改行をないものとして扱います。
選択表示(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 表示テーブル。
オーバレイ矢印(overlay arrow)は、バッファ中のある行にユーザに編集 させるというより読ませる目的でユーザの注意を向けたいときに便利です。たとえば、 デバッガのインタフェースとして使われるモードでは、オーバレイ矢印がこれか ら実行されようとしている行を示します。
nilです。
オーバレイ文字列はマーカが指しているバッファでだけ表示されます。したがっ てある時点にオーバレイ矢印を持ちうるバッファは一つだけです。
これと同じことはbefore-string属性をもつオーバレイを作ることでもで
きます。See section オーバレイの属性。
一時表示(temporary displays)は、コマンドがユーザに編集させるのではなく読 ませる目的でバッファに出力するために使われます。ヘルプ・コマンドがよくこの 機能を使います。
文字列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という名前でした。
一時的な表示は次の入力イベントまで表示されています。次の入力イベントが
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 ----------
オーバレイ(overlays)を使って、表現形としてバッファのテキストの見え 方を変えることができます。 オーバレイは特定のバッファに属するオブジェクトで、決まった始めと終りの 点を持っています。また、ユーザが設定したり、読みとったりできる属性もあり、 オーバレイ中のテキストの表示方法に影響します。
オーバレイの属性はある面ではテキスト属性に似ていますが、似ている点よりも 違っている点の方が重要です。テキスト属性はテキストの一部とみなされますが、 オーバレイは特にテキストの一部とはみなされません。ですから、テキストをバッ ファ間でコピーしてもテキスト属性は保存されますが、オーバレイを保存するよ うなことはしていません。バッファのテキスト属性を変更すると、バッファは変 更されたとマークされますが、オーバレイを移動したりその属性値を変更したり しても変更されたとマークはされません。またテキスト属性の変更と違って、オー バレイの変更はバッファのundoリストにも記録されません。
priority
priorityの値が大きいものが優先され、そのフェース属性が優先度の低いオー
バレイのフェース属性に優先して使われます。
現在は、すべてのオーバレイはテキスト属性よりも高い優先度を持ちます。負の
優先度についてはその意味をまだ決めていないので、使わないようにしてくださ
い。
window
window属性が非nilならば、オーバレイはそのウィンドウだけに
適用されます。
category
category属性があれば、それをオーバレイの
カテゴリ(category)といいます。これはシンボルでなければなりません。その
シンボルの属性がオーバレイの属性の既定値として働きます。
face
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
after-string
evaporate
nilならば、オーバレイは空になったとき(つまりまったく
文字を覆わなくなったとき)に自動的に削除されます。
以下はオーバレイの属性を読み書きするための関数です。
category属性があってそれがシンボルならば、そのシンボルの
prop属性が使われます。それもなければ値はnilです。
get-char-propertyというある文字に対してオーバレイ属性とテキスト属
性の両方を調べる関数もありますので参照してください。
See section テキスト属性の調査。
この節ではオーバレイの生成、削除、移動、内容検査のための関数を説明します。
返り値はoverlayです.
オーバレイの終点を変更する正当な手段はこの関数だけです。オーバレイの中の マーカを直接変更してしまうと、ほかの重要なデータ構造の更新が行なわれず失われ るオーバレイが出ることになりかねないので、やめてください。
フェース(face)とはグラフィカル属性の集まりに名前をつけたものです。 グラフィカ ル属性にはフォント、文字色、背景色、下線を引くかどうか、があります。フェース は画面上のテキストの表示方法を制御します。
フェースにはそれぞれのフェースid番号(face id number)があり、Emacs の内部ではそれによっ てフェースを互いに区別しています。しかしほとんどの目的にはLispプログラ ム中でフェースを名前で参照することができます。
tを返します。
そうでない場合はnilを返します。
フェース名はすべてのフレームで意味を持ち、特に変更しなければすべてのフレーム で同じ意味を持ちます。望むならあるフェース名が特定のフレームで別個の意味をもつようにすることも可能です。
次の表は標準のフェースすべてとその使用法のリストです。
default
modeline
region
secondary-selection
highlight
underline
bold
italic
bold-italic
ここで表示にどのフェースを使うかを指定する方法をすべて示します。
face属性をつけることができ、
その文字はそのフェースで表示されます。See section 特殊な意味をもつ属性。
文字にmouse-face属性がある場合は、マウスがその文字の「十分近くに」
あるときにface属性の代わりに使われます。
face属性と
mouse-face属性がつけられて、オーバレイが覆っているテキストすべて
に働きます。
region-faceを参
照)。
もしこれらの諸指定から文字に対して複数のフェースが指定される場合は、 Emacsはそれら指定されたフェースの属性を合併(merge)します。まず特別なグリ フのフェースの属性が1番で、次にリージョンの強調表示(それが適用可能な場 合)、その次にオーバレイからのフェースの属性、さらにテキスト属性からのも の、そして最後が既定値フェースです。
複数のオーバレイがある一つの文字を覆っている場合には、オーバレイの中で優 先度がもっとも高いものがそれより低いものに優先して使われます。 See section オーバレイ。
フォントや色などの属性が上記のどれによっても指定されていない場合は、フレー ム自身のフォントと色が使われます。
フェースが指定できる属性にはフォント、文字色、背景色、下線有無があります。
これらにnilを設定することにより特に指定しないままにしておくことも
できます。
以下フェースを生成・変更するためのプリミティブを示します。
nilになっています。nameという名前のフェースが
すでにある場合にはなにもしません。
オプション引数frameが与えられると、この関数はそのフレームだけに働 きます。与えない場合は、各フレームに対して働き、各フレームの old-faceから同じフレームのnew-faceに属性をコピーします。
オプション引数new-frameが与えられると、copy-faceは
frameのold-faceからnew-frameのnew-nameに属性をコ
ピーします。
以下に示す関数によって既存のフェースの属性を変更することができます。 frameを指定すると、そのフレームだけに働きます。指定しなければすべ てのフレームに働くとともに、新規のフレームに適用される既定値も変更されま す。
白黒画面では網かけパターン(stipple pattern)によって何段階かの濃淡表示が 実装されています。
nilでもよく、網かけを使わないとい
う意味になります。
濃淡表示をするときに自動的に網かけパターンが使われるので、 普通網かけパターンを気にする必要はありません。
nilは下線つきという意味でnilは下線なしです。
以下の関数はフェースの属性を調べるものです。 frameを指定しない場合は、新規のフレームのための既定値を参照します。
nilを返します。
tを返します。
tを返します。あるフェースが既定値のフェースと同じと判断されるのは、
属性値それぞれが既定値のフェースのものとと同じ値であるか、nil(つ
まり既定値を継承している)場合です。
通常これの値はregionという名前のフェースのid番号になっています。
この節ではユーザが閉じ括弧を挿入したときに Emacsが対応する開き括弧を示すメカニズムについて説明します。
blink-paren-functionの値はnilでもよく、この場合なにも行なわ
れません。
注意: この変数はEmacsの古いバージョンでは
blink-paren-hookという名前でしたが、フックの標準的な呼出し方に したがって呼び出されるものではないので、バージョン19ではblink-paren-functionという名前に変更されました。
nilのときはblink-matching-openは何もしません。
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)))
nilの場合は、反転表示をし、nilの場合は反転表示をしません。
既定値はnilです。
nilならモード行は反転表示されます。
それ以外はモード行はテキスト同様に普通に表示されます。既定値は
tです。
Xウィンドウのフレームではモード行の表示にmodelineというフェースが使わ
れます。これは変更しなければ、通常普通のフェースの反転になっています。
普通の表示方法はそれぞれの文字をどう表示するかを定義しています。表示テー ブルを設定してこの表示方法を変えることができます。 (see section 表示テーブル)。以下に普通の表示方法を示します。
tab-widthで決まる位置までの
空白として表示されます。
ctl-arrowの値に
よって2種類に表示されます。これが非nilならば、これらのコードは二つ
のグリフの列に対応し、1番目が`^'のASCIIコードとなります。(表示
テーブルによって`^'以外のものを使うことが指定されているか
もしれません。) それ以外はこれらのコードは128から255のコードと同じように
対応づけられます。
表示テーブルがあるときでも、そのアクティブな表示
テーブル中のエントリがnilであるような文字に対しては
普通の表示方法が適用されますから、表示テーブルを設定するときには、
普通でない動作をさせたい文字だけを指定すればいいのです。
これらの変数はある文字が画面に表示される方法に影響するものですが、 文字が占める桁数も変えるので、字下げ関数にも影響します。
nilならば、キャレットのあとに文字をつけて`^A'のように表示します。
nilならばバックスラッシュのあとに8進3桁で`\001'のように表示し
ます。
ctl-arrowの値がバッファで再定義されていない場合の既
定値です。See section バッファローカルな変数のデフォルト値。
tab-to-tab-stopコマ
ンドで使われるユーザが設定できるタブとは何の関係もないことに注意してくだ
さい。See section 調節可能な「タブ・ストップ」。
表示テーブル(display tale)機能を使うと256種類の文字すべてについて、 それが画面で どう表示されるかを制御できます。この機能はASCII文字セット にない文字を使うヨーロッパの言語を表示するために便利です。
表示テーブルは各文字コードをグリフ(glyphs)の列に対応づけます。グ リフとは画面上で1文字分を占める像(image)です。さらに各グリフが端末でどう 表示されるかもグリフ・テーブル(glyph table)を使って制御できます。
表示テーブルは実は262要素の配列です。
nilになっています。
最初の256要素は文字コードに対応します。つまりn番目の要素は文字コー
ドnをどう表示するかを指定しています。その値はnilか、グリフ値のベ
クタ(see section グリフ)でなければなりません。要素がnilのときは、普通の
表示法にしたがって表示しろ、という意味です(see section 普通の表示方法)。
表示テーブルを使って改行文字の表示方法を変えると、バッファ 全体が一つの長い"行"として表示されてしまいます。
表示テーブルの残りの6要素は特別な目的に使われており、これが
nilの場合は、次に示す既定値を使うという意味になります。
次の例は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 ?^ ??)))
ウィンドウごと、バッファごとに表示テーブルを指定することができ ます。バッファbがウィンドウwに表示されていたとすると、表示部 はウィンドウwの表示テーブルがあればそれを使います。それ がなければ、今度はバッファbの表示テーブルがあればそれを 使います。これもなければ標準の表示テーブルがあればそれを使いま す。ここで選択された表示テーブルはアクティブな(active)表示 テーブルと呼ばれます。
nilを返します。
nilでなければなりま
せん。
nilです。
nilです。
あるウィンドウに使うべき表示テーブルがない場合---つまりウィン
ドウにもなく、バッファにもなく、standard-display-tableにもない場
合---は、Emacsはそのウィンドウの中のすべての文字コードに対して普通の表示方法
(usual display conventions)を使います。See section 普通の表示方法。
グリフ(glyph)とは文字を一般化したもので、画面上の一つの文字位置を 占める像(image)を表します。グリフは文字同様Lispでは整数によって表現さ れます。
それぞれの整数のグリフとしての意味は変数glyph-tableの値であるグリ
フ・テーブルで定義されます。
nilである場合は、すべてのグリフはsimpleであるとされます
(下記参照)。
以下にグリフ・テーブルの要素として可能なものを示します:
nil
グリフ・コードがグリフ・テーブルの長さと同じか、それより大きい場合は、コー ドは自動的にsimpleになります。
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ファイルを書いておけば、あなたの端末のため の適切な表示テーブルを自動的にロードすることもできます。
Emacsにベル音を鳴らさせて(または画面を点滅させて)、ユーザの注意を引くこ とができます。ただしやりすぎは禁物です。あまり頻繁にベ ルがなるといらいらしかねません。またエラーを通知すべきときにベルを鳴らす だけ、ということのないようによく考えてください。(See section エラー。)
visible-bellを参照)。同時にdont-terminateが非nilであ
ればそのとき実行中のキーボード・マクロを終了させます。
dingと同じものです。
nilでない場合には点滅させ、nilの場合には点滅させ
ません。これが有効なのは、Xウィンドウ下か、現在使っている端末のTermcapエ
ントリに、ビジブル・ベル機能(`vb')が定義されている場合だけです。
Emacsはいくつかのウィンドウ・システムのもとで動作します。中でも有名なの はXウィンドウ・システムでしょう。EmacsもXも「ウィンドウ」という用語を使 いますが、意味が違います。EmacsのフレームがXでいえば一つのウィンドウです。 Emacsのウィンドウ一つ一つに対してはXはまったく関知しません。
x(EmacsがXの下で動作して
いる場合)のようなシンボルか、nil(Emacsが普通の端末で動作している
場合)です。
term-setup-hookを実行したそのあとに実行されます。
このフックは内部処理で使用するもので、ウィンドウ・システムとの通信を確立し、 最初のウィンドウを作成します。ユーザはそれに干渉すべきではありません。
Go to the first, previous, next, last section, table of contents.