[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
本章では, Emacsがユーザーに提示する画面表示に関連する さまざまな機能について述べます.
38.1 スクリーン全体の再表示 | Clearing the screen and redrawing everything on it. | |
38.2 表示の切り詰め | Folding or wrapping long text lines. | |
38.3 エコー領域 | Where messages are displayed. | |
38.4 不可視なテキスト | Hiding part of the buffer text. | |
38.5 選択表示 | Hiding part of the buffer text (the old way). | |
38.6 オーバレイ矢印 | Display of an arrow to indicate position. | |
38.7 一時的な表示 | Displays that go away automatically. | |
38.8 オーバレイ | Use overlays to highlight parts of the buffer. | |
38.9 表示幅 | How wide is a character or string. | |
38.10 フェイス | A face defines a graphics appearance: font, color, etc. | |
38.11 括弧を点滅する | How Emacs shows the matching open parenthesis. | |
38.12 反転表示 | Specifying how the screen looks. | |
38.13 通常の画面表示慣習 | The usual conventions for displaying nonprinting chars. | |
38.14 表示テーブル | How to specify other conventions. | |
38.15 ベルを鳴らす | Audible signal to the user. | |
38.16 ウィンドウシステム | Which window system is being used. |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
関数redraw-frame
は, 指定したフレーム(see section フレーム)の
内容全体を再表示します.
この関数は, フレームframeをクリアしてから再表示する.
より強力なのはredraw-display
です.
この関数は, すべての可視フレームをクリアしてから再表示する.
ユーザー入力の処理のほうが再表示より絶対的に優先します. 入力があるときにこれらの関数を呼び出してもただちにはなにもしませんが, 入力をすべて処理し終えてから再表示します.
通常, Emacsを停止したり再開しても スクリーン全体を再表示します. Emacsのようなディスプレイ向けプログラムと通常の逐次表示向けに, 表示内容を個別に記録できる端末エミュレータもあります. そのような端末を使っているときには, 再開時の再表示を禁止した場合もあります.
この変数は, 停止後に再開したあとで,
スクリーン全体を再表示するかどうかを制御する.
nil
以外であると再描画の必要はないことを意味し,
nil
であると再描画が必要であることを意味する.
デフォルトはnil
である.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
テキスト行がウィンドウの右端を越えていると, その行をつぎのスクリーン行へ継続するか, スクリーン行1行に切り詰めます. 長いテキスト行を表示するために使われる追加のスクリーン行を 継続行と呼びます. 通常, ウィンドウの最右端のコラムに現れる‘$’で切り詰めたことを示し, ‘\’でつぎの行に『折り返した』こと, つまり, 継続している行であることを示します. (表示テーブルで別の文字を指定できる. 表示テーブルを参照. )
継続することと詰め込みは別のことです. 継続はスクリーン上だけのことであり, バッファ内容は変わりません. また, 継続では単語の境界ではなく, 正確にスクリーンの右端で 行を分けます. See section 詰め込み.
このバッファローカルな変数は,
ウィンドウの右端を越える行をどのように表示するかを制御する.
デフォルトはnil
であり継続を意味する.
値がnil
以外であると, そのような行を切り詰める.
変数truncate-partial-width-windows
がnil
以外であると,
(フレーム内で)左右に並んだウィンドウでは,
truncate-lines
の値に関わらずつねに切り詰る.
この変数は, truncate-lines
のバッファローカルな値を持たない
バッファ向けのtruncate-lines
のデフォルト値である.
この変数は, 左右に並んだウィンドウ(see section ウィンドウの分割)において,
ウィンドウの右端を越える行の表示を制御する.
nil
以外であると, そのような行を切り詰める.
さもなければ, truncate-lines
に従って表示する.
ウィンドウで水平方向にスクロールしている(see section 水平スクロール)と, 強制的に切り詰めます.
継続や切り詰めを表す文字は, 表示テーブルを使って変更できます. See section 表示テーブル.
バッファにとても長い行があるときにそれらの表示に継続行を使うと,
それによりEmacsの再表示が遅くなります.
コラム計算や字下げ関数も遅くなります.
そのような場合には, cache-long-line-scans
にt
を
設定するのがよいです.
この変数がnil
以外であると,
字下げ/移動関数とEmacsの再表示において,
バッファを走査した結果をキャッシュし,
バッファが変更されていないときには
キャッシュを調べてバッファの対象領域の再走査を回避する.
キャッシュするようにすると, 短い行の処理が多少遅くなる.
この変数は, すべてのバッファで自動的にバッファローカルである.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
エコー領域(echo area)は,
基本関数message
でメッセージを表示したり,
打鍵を表示するために使われます.
(活性な)ミニバッファはエコー領域と
同じスクリーン上の位置に現れますが,
エコー領域とミニバッファは同じものではありません.
GNU Emacs マニュアルには,
エコー領域とミニバッファがスクリーンの同じ箇所を使う際の
衝突を回避する規則が述べてあります
(see (emacs-ja)Minibuffer section ‘ミニバッファ’ in GNU Emacs マニュアル).
エラーメッセージもエコー領域に現れます.
See section エラー.
エコー領域に表示するには,
ストリーム(see section 出力関数)として
t
を指定したLisp表示関数を使うか, あるいはつぎのようにします.
この関数は, エコー領域に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 ---------- |
この関数はmessage
と同様にメッセージを表示するが,
エコー領域のかわりに対話ボックスを使うこともある.
この関数がマウスを用いて起動されたコマンドから呼ばれたとき,
より正確には, last-nonmenu-event
(see section コマンドループからの情報)が
nil
かリストのいずれかであると,
メッセージを表示するために対話ボックスかポップアップメニューを用いる.
さもなければエコー領域を用いる.
(これは, 同様な決定をくだすy-or-n-p
の判定条件と同じである.
see section Yes/Noの問い合わせ. )
呼び出しの周りでlast-nonmenu-event
に適切な値を束縛することで,
マウスを使うかエコー領域を使うか強制できる.
この関数はmessage
と同様にメッセージを表示するが,
可能な限り対話ボックス(やポップアップメニュー)を使う.
対話ボックスやポップアップメニューを扱えない端末などで
これらを使用できない場合には,
message-box
はmessage
と同様にエコー領域を使う.
この関数は, エコー領域に現在表示されているメッセージを返す.
なければnil
を返す.
この変数は, エコー領域にメッセージを表示しているときに
カーソルをどこに表示するかを制御する.
nil
以外であると, メッセージの末尾にカーソルを表示する.
さもなければ, エコー領域にではなく, ポイント位置にカーソルを表示する.
この値は普通はnil
である.
Lispプログラムはこれにt
を短い期間だけ束縛する.
このノーマルフックは, (message nil)
や他の理由で
エコー領域をクリアするたびに実行される.
エコー領域に表示したほとんどすべてのメッセージは バッファ‘*Messages*’にも記録されます.
この変数は, バッファ‘*Messages*’に保持する行数を指定する.
値t
は, 保持する行数を制限しないことを意味する.
値nil
は, メッセージをまったく記録しないことを意味する.
メッセージを表示しつつそれを記録しないようにするには
つぎのようにする.
(let (message-log-max) (message …)) |
この変数は, コマンド文字を表示するまでの経過時間を決定する. この値は整数であり, 表示し始めるまでに待つ秒数を指定する. ユーザーが(C-xなどの)プレフィックスキーを打ってから つぎを打つまでにこの秒数だけ遅れがあると, プレフィックスキーをエコー領域に表示する. (いったんキー列の表示を始めると, 同じキー列の以降の文字すべてを表示する. )
値がゼロであると, コマンド入力を表示しない.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
属性invisible
で文字群を不可視にできます.
つまり, それらをスクリーンに表示されないようにするのです.
テキスト属性(see section テキスト属性)か
オーバレイの属性(see section オーバレイ)を使います.
もっとも単純な場合,
属性invisible
がnil
以外であると文字は見えなくなります.
これはデフォルトの場合, つまり,
buffer-invisibility-spec
のデフォルト値を変更していない場合であり,
このようにして属性invisible
は動作します.
より一般的には, 変数buffer-invisibility-spec
を使って,
属性invisible
のどの値のものを不可視なテキストにするかを制御できます.
つまり, invisible
の異なる値を与えて
テキストをあらかじめいくつかのグループに分類しておき,
そのあとでbuffer-invisibility-spec
の値を変更して
さまざまなグループを可視/不可視にします.
buffer-invisibility-spec
で可視性を制御することは,
データベースの項目の一覧を表示するようなプログラムで特に有用です.
データベースの特定の項目だけを見るための
便利なフィルタコマンドを実装できます.
この変数に設定するのはとても速くでき,
変更すべき属性を探すためにバッファ内の全テキストを走査するよりも速いのです.
この変数は, 属性invisible
のどの種類を実際に
不可視な文字にするかを指定する.
t
属性invisible
がnil
以外の文字を不可視にする.
これがデフォルト.
リストの各要素で不可視にする条件を指定する.
文字の属性invisible
がこれらの条件の1つを満たすと,
その文字を不可視にする.
リストには2種類の要素がありうる.
atom
文字の属性invisible
の値がatomであるか,
そのリストのメンバにatomがあると,
文字を不可視にする.
(atom . t)
文字の属性invisible
の値がatomであるか,
そのリストのメンバにatomがあると,
文字を不可視にする.
さらに, その文字が行末にあり, 直後に目に見える改行がある場合には,
‘…’を表示する.
buffer-invisibility-spec
に要素を追加したり削除するために
2つの関数が特別にあります.
(リストにelementが既存でなければ)
buffer-invisibility-spec
に要素elementを追加する.
buffer-invisibility-spec
から要素elementを削除する.
buffer-invisibility-spec
の使い方の慣習の1つに,
メジャーモードでは
buffer-invisibility-spec
の1要素と属性invisible
の値に
モード自体の名前を使うべきであるというのがあります.
;; ‘…’を表示したければ (add-to-invisibility-spec '(my-symbol . t)) ;; ‘…’を表示しくなければ (add-to-invisibility-spec 'my-symbol) (overlay-put (make-overlay beginning end) 'invisible 'my-symbol) ;; オーバレイを終了したら (remove-from-invisibility-spec '(my-symbol . t)) ;; 同じように (remove-from-invisibility-spec 'my-symbol) |
普通, テキストを操作したりポイントを移動するコマンドは,
テキストの可視性に注意しません.
ユーザーレベルの移動コマンドは,
line-move-ignore-invisible
がnil
以外であれば
不可視な改行を明示的に無視しますが,
それはそのように明示的にプログラムしてあるからにすぎません.
インクリメンタルサーチでは,
不可視なテキストを含む一致箇所では,
不可視なオーバレイを一時的にあるいは恒久的に可視にできます.
これを可能にするには, オーバレイの属性isearch-open-invisible
が
nil
以外である必要があります.
その属性の値は, オーバレイを引数として呼ばれる関数である必要があります.
その関数がオーバレイを恒久的に可視にします.
その関数は, 探索から抜けるときに一致箇所が
オーバレイにまたがっているときに使われます.
探索中には, そのようなオーバレイは,
それらの属性invisible
とintangible
を一時的に変更することで
一時的に可視にされます.
特定のオーバレイに対して異なる扱いをしたければ,
属性isearch-open-invisible-temporary
に関数を与えておきます.
その関数は2つの引数で呼ばれます.
第1引数はオーバレイ,
第2引数は, オーバレイを可視にするt
, あるいは,
オーバレイを再度不可視にするnil
です.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
選択表示とは, スクリーン上の特定の行を隠すための関連する機能対を指します.
最初の変種は, 明示的な選択表示で, Lispプログラムで使用するために設計されています. テキストを変更することでどの行を隠すかを制御します. テキストを不可視にする機能(see section 不可視なテキスト)は, この機能で部分的に置き換えてあります.
2番目の変種は, 字下げに基づいて自動的に隠す行を選択します. この変種は, ユーザーレベルの機能であるように設計されています.
明示的な選択表示を制御するには, 改行(コントロールJ)を復帰(コントロールM)に置き換えます. 置換前の改行に続いていたそれまでの行は見えなくなります. 厳密にいえば, 改行だけが行を区切るため, 一時的にはもう行ではなくなっているのです. つまり, 先行する行の一部になっているのです.
選択表示は, 編集コマンドに直接には影響しません.
たとえば, C-f(forward-char
)は
躊躇なく不可視なテキストの中へポイントを移動します.
しかし, 改行文字を復帰文字に置換すると
影響を受ける編集コマンドもあります.
たとえば, next-line
は,
改行だけを探すため不可視な行を飛び越してしまいます.
選択表示を使用するモードでは,
改行を考慮するようにコマンドを定義したり,
テキストの一部を可視/不可視にするコマンドを定義できます.
選択表示しているバッファをファイルに書き出すときには, すべてのコントロールM(復帰)は改行として出力されます. つまり, つぎにファイルを読み込むと不可視なものはなく, 普通に見えるのです. 選択表示の効果は, Emacsの内側だけで見えるのです.
このバッファローカルな変数は, 選択表示をオンにする. つまり, 行や行の一部を不可視にできる.
selective-display
の値がt
であると,
行内のコントロールM(復帰)以降の部分を表示しない.
これは明示的な選択表示である.
selective-display
の値が正整数であると,
字下げのコラム幅がその数より大きな行を表示しない.
バッファのある部分が不可視であると,
垂直方向に移動するコマンドは,
その部分が存在しないがごとく動作し,
1つのコマンドnext-line
で任意個数の不可視行を飛び越えられる.
しかし, (forward-char
などの)
文字単位の移動コマンドは不可視な部分を無視せず,
不可視な部分へのテキストの挿入/削除は可能である.
つぎの例では, selective-display
の値を変えて
バッファfoo
の見た目を示す.
バッファの内容に変更はない.
(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
以外であると,
不可視なテキストが続く行末に‘…’を表示する.
つぎの例は, 上の例の続きである.
(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
である.
この変数は, オーバレイ矢印を表示する箇所を表すマーカを保持する. 行頭を指すこと. 矢印のテキストはその行の先頭に現れ, その場所に本来現れるべきテキストを隠す. 矢印は普通は短く, 行には字下げがあるので, 重要なものは普通はなにも上書きされない.
オーバレイ文字列は, マーカが指すバッファでのみ表示される. したがって, ある時点では, 1つのバッファだけにオーバレイ矢印を表示できる.
同様のことは, 属性before-string
のオーバレイを
作成してもできます.
See section オーバレイ属性.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
一時的な表示は, 出力をバッファに置き編集目的にではなく ユーザーに読むように提示するために Lispプログラムが使います.
この関数は, buffer-nameという名前のバッファに formsの任意の出力が挿入されるように準備して formsを実行する. そのバッファは適当なウィンドウに表示されるが, そのバッファは選択されない.
文字列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
がこの値を関数として呼び出す.
関数は1つの引数, つまり, 表示すべきバッファを受け取る.
この関数では,
save-window-excursion
を使いウィンドウとバッファを選択した内側で,
with-output-to-temp-buffer
が普通に行うように
temp-buffer-show-hook
を呼び出すのがよい.
このノーマルフックは, ヘルプバッファを表示後に
with-output-to-temp-buffer
が実行する.
フックを実行するときには,
ヘルプバッファがカレントバッファであり,
それを表示しているウィンドウが選択されているウィンドウである.
この関数は, カレントバッファ内の位置positionに 文字列stringを瞬間的に表示する. アンドゥリストやバッファの変更状態には影響しない.
瞬間的な表示は, つぎの入力イベントまで持続する.
つぎの入力イベントがcharであると,
momentary-string-display
はそれを無視して戻る.
さもなければ, そのイベントは入力として使われるように保存される.
したがって, charを打つと文字列の表示が単に消えるだけであるが,
(たとえば)C-fを打つと文字列の表示が消えるだけでなく
(たぶん)ポイントを進めることになる.
引数charはデフォルトでは空白である.
momentary-string-display
の戻り値に意味はない.
文字列stringにコントロール文字が含まれなければ,
属性before-string
のオーバレイを作成(のちに削除)することで
より一般的な方法で同じことを行える.
see section オーバレイ属性.
messageがnil
以外であると,
stringをバッファに表示中には,
messageをエコー領域に表示する.
nil
であると, デフォルトは
「継続するには文字charを打つこと」
といったメッセージである.
つぎの例では, ポイントは始めは2行目の先頭に位置している.
---------- 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 ---------- |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ユーザーに提示するためにスクリーン上でのバッファのテキストの見た目を 変えるためにオーバレイ(overlay)を使えます. オーバレイは, 特定のバッファに属するオブジェクトであり, 指定された開始位置と終了位置があります. また, 調べたり設定できる属性もあります. これらの属性は, オーバレイの内側のテキストの表示に影響します.
38.8.1 オーバレイ属性 | How to read and set properties. What properties do to the screen display. | |
38.8.2 オーバレイの管理 | Creating, moving, finding overlays. |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
オーバレイ属性はある意味でテキスト属性に似ていて, どちらの属性でも文字の表示方法を変更できます. しかし, 多くの点で異なります. テキスト属性は, テキストの一部であるとみなされますが, オーバレイはテキストの一部とはみなしません. したがって, さまざまなバッファや文字列のあいだでテキストをコピーしても テキスト属性は保存されますが, オーバレイは保存されません. バッファ内のテキスト属性を変更するとバッファを変更済みと印を付けますが, オーバレイを移動したりその属性を変更しても バッファの変更とは考えません. テキスト属性の変更と異なり, オーバレイの変更はバッファのアンドゥリストには記録されません. 比較のためにSee section テキスト属性.
priority
この属性の値(非負の数であること)は,
オーバレイの優先順位を決定する.
優先順位は, 複数のオーバレイが同じ文字を覆い,
いずれも表示用のフェイスを指定している場合に意味を持つ.
priority
の値の大きなものが他に優先し,
そのフェイス属性が他の低い順位の属性のフェイス属性に優先する.
現在, すべてのオーバレイ属性はテキスト属性に優先する. 負の優先順位の意味を決めかねているので, 負の優先順位は避けてほしい.
window
属性window
がnil
以外であると,
オーバレイをそのウィンドウだけに適用する.
category
オーバレイに属性category
があると,
それをオーバレイのカテゴリ(category)と呼ぶ.
これはシンボルであること.
シンボルの属性がオーバレイの属性のデフォルトの役割を果たす.
face
この属性は, テキストの表示方法, たとえば, フォントや表示色を制御する. その値は, フェイス名であるかフェイス名のリストである. 詳しくは, see section フェイス.
属性値がリストであると, その要素は,
(foreground-color . color-name)
か
(background-color . color-name)
の形でもよい.
これらの要素は, 前景色だけや背景色だけを指定する.
したがって, 使用する各色を表すフェイスを作成する必要はない.
mouse-face
この属性は, マウスがオーバレイの範囲に入っているときに
face
のかわりに使われる.
modification-hooks
この属性の値は, オーバレイの内側の文字を変更したり, オーバレイの内側にテキストを挿入したときに 呼び出される関数のリストである.
フック関数は, 各変更の前後に呼び出される. 関数が受け取った情報を保存し呼び出しごとに比較すれば バッファテキストにどのような変更が行われたかを正確に判定できる.
変更前に呼ばれるときには, 各関数は4つの引数を受け取る.
オーバレイ, nil
, 変更対象のテキスト範囲の先頭と末尾である.
変更後に呼ばれるときには, 各関数は5つの引数を受け取る.
オーバレイ, t
, 変更済みのテキスト範囲の先頭と末尾,
その範囲の変更前のテキストの長さである.
(挿入では変更前の長さはゼロである.
削除では変更前の長さは削除された文字数であり,
変更後の先頭位置と末尾位置は同じである. )
insert-in-front-hooks
この属性の値は, オーバレイの開始位置へのテキスト挿入の前後に
呼び出される関数のリストである.
呼び出し方法はmodification-hooks
の関数群と同じである.
insert-behind-hooks
この属性の値は, オーバレイの終了位置へのテキスト挿入の前後に
呼び出される関数のリストである.
呼び出し方法はmodification-hooks
の関数群と同じである.
invisible
属性invisible
は, オーバレイ内のテキストを不可視にする.
つまり, それらはスクリーン上に現れない.
詳しくは, see section 不可視なテキスト.
intangible
属性intangible
は, オーバレイにおいて
テキスト属性intangible
と同様に働く.
詳しくは, see section 特別な意味を持つ属性.
isearch-open-invisible
この属性は, インクリメンタルサーチに対して, 一致箇所がオーバレイに重なったときに 不可視なオーバレイを恒久的に可視にする方法を指示する. see section 不可視なテキスト.
isearch-open-invisible-temporary
この属性は, インクリメンタルサーチに対して, 探索中に不可視なオーバレイを一時的に可視にする方法を指示する. see section 不可視なテキスト.
before-string
この属性の値は, オーバレイの先頭位置に追加表示する文字列である. 文字列はいかなる意味においてもバッファには現れず, スクリーン上のみに現れる. 文字列は1コラムで表示される文字のみであること. タブや改行を含むコントロール文字を含むと奇妙な結果を生じる.
after-string
この属性の値は, オーバレイの末尾位置に追加表示する文字列である. 文字列はいかなる意味においてもバッファには現れず, スクリーン上のみに現れる. 文字列は1コラムで表示される文字のみであること. タブや改行を含むコントロール文字を含むと奇妙な結果を生じる.
evaporate
この属性がnil
以外であると,
オーバレイが空に(つまり覆う文字がなく)なると,
自動的にオーバレイを削除する.
local-map
この属性がnil
以外であると, 当該部分のテキストに対する
キーマップを指定する.
ポイントの直後の文字がオーバレイに入っていると,
属性の値はバッファローカルなキーマップに置き換わる.
see section 活性なキーマップ.
つぎは, オーバレイの属性を読み書きするための関数です.
この関数は, オーバレイoverlayに記録されている
属性propの値をあれば返す.
overlayにそのような属性に対する値が記録されていなくても,
属性category
がありそれがシンボルであれば,
そのシンボルの属性propを使う.
さもなければ値はnil
である.
この関数は, オーバレイoverlayに属性propの値として valueを設定する. valueを返す.
与えられた文字のオーバレイ属性とテキスト属性の両方を調べる
関数get-char-property
も参照してください.
See section テキスト属性を調べる.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
本節では, オーバレイを作成, 削除, 移動したり, それらの内容を調べる関数について述べます.
この関数は, バッファbufferに属する startからendまでを覆うオーバレイを作成しそれを返す. startとendのどちらもバッファ内位置を指定する 整数かマーカであること. bufferを省略すると, カレントバッファにオーバレイを作成する.
引数front-advanceとrear-advanceは, オーバレイの開始位置と終了位置における挿入型を指定する. see section マーカの挿入型.
この関数は, オーバレイoverlayの開始位置を整数で返す.
この関数は, オーバレイoverlayの終了位置を整数で返す.
この関数は, オーバレイoverlayが属するバッファを返す.
この関数は, オーバレイoverlayを削除する. Lispオブジェクトとしてはオーバレイは存在し続けるが, それが属したバッファとの対応付けは消失し, 表示上の効果もなくなる.
削除したオーバレイは恒久的に無意味ではない.
move-overlay
を呼び出して新たなバッファ内位置をそれに与えられる.
この関数は, オーバレイoverlayをバッファbufferに移し, startからendを覆うようにする. startとendのどちらもバッファ内位置を指定し, 整数かマーカである. bufferを省略すると, オーバレイは同じバッファに留まる.
戻り値はoverlayである.
これは, オーバレイの端を変更する唯一の正しい方法である. オーバレイのマーカを手で修正しようとしないこと. 他の重要なデータ構造を更新しそこない, いくつかのオーバレイを『失う』ことにもなりかねない.
この関数は, カレントバッファの位置posを覆うすべての オーバレイのリストを返す. このリスト内の順番に意味はない. オーバレイが位置posかそのまえで始まり, かつ, 位置posかそのうしろで終るときに, オーバレイは位置posを覆う.
この関数は, begからendまでの領域と 重なり合っているすべてのオーバレイのリストを返す. 『重なり合っている』とは, 少なくとも1文字がオーバレイに覆われていて, かつ, その文字が指定された領域に入っていることを意味する. しかし, 空のオーバレイであっても それがbegにあるかbegとendのあいだにあれば, 空のオーバレイも結果に含まれる.
この関数は, 位置posのうしろにある オーバレイのつぎの開始位置か終了位置を返す.
この関数は, 位置posのまえにある オーバレイのまえの開始位置か終了位置を返す.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
すべての文字が同じ表示幅ではありませんから, これらの関数で文字の表示幅を検査できます. 関連する関数については, 字下げ基本関数とSee section スクリーン行分の移動
この関数は, 文字charを選択されているウィンドウで カレントバッファに表示した場合のコラム幅を返す.
この関数は, 文字列stringを選択されているウィンドウで カレントバッファに表示した場合のコラム幅を返す.
この関数は, 幅widthに収まる文字列stringの部分を 新たな文字列として返す.
stringが幅widthに満たない場合, stringの終りで結果は終る. string内の1つの複数コラム文字がコラムwidthを越える場合には, その文字は結果に含めない. したがって, 結果はwidthより短くなりえるがそれを越えることはない.
省略可能な引数start-columnは, 開始コラムを指定する.
これがnil
以外であると, 文字列のはじめの
start-columnコラムを結果から省く.
string内の1つの複数コラム文字がコラムstart-columnを越える場合には,
その文字は結果に含めない.
省略可能な引数paddingがnil
以外であると,
結果の文字列の先頭や末尾に付加して
ちょうどwidthコラムにするためのパディング文字である.
widthより短くなる場合に
結果の末尾にパディング文字を使う.
複数コラム文字がコラムstart-columnを越える場合には,
結果の先頭にパディング文字を使う.
(truncate-string-to-width "\tab\t" 12 4) ⇒ "ab" (truncate-string-to-width "\tab\t" 12 4 ?\ ) ⇒ " ab " |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
フェイス(face)とは, 図形的な属性, つまり, フォント, 前景色, 背景色, 下線 の名前付きの集合体です. フェイスはスクリーン上のテキストの表示を制御します.
各フェイスには固有のフェイス番号(face number)があり, Emacs内部の下位レベルでフェイスを区別するために使われます. しかし, ほとんどの目的には, Lispプログラムでは名前でフェイスを参照できます.
この関数は, objectがフェイスを指名するシンボル
(あるいは, フェイスデータを記録するために内部的に使われる種類のベクトル)
であるとt
を返す.
さもなければnil
を返す.
各フェイス名はすべてのフレームで有効であり, デフォルトではすべてのフレームで同じ意味を持ちます. しかし, 望みの1つのフレームで特定のフェイス名に 特定の意味を持たせることもできます.
38.10.1 標準フェイス | The faces Emacs normally comes with. | |
38.10.2 フェイスを定義する | How to define a face with defface .
| |
38.10.3 表示向けにフェイスを併合する | How Emacs decides which face to use for a character. | |
38.10.4 フェイスを扱う関数 | How to define and examine faces. |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
つぎの表はすべての標準フェイスとその用途です.
default
このフェイスは通常のテキストに対して使う.
modeline
このフェイスはモード行とメニューバーに対して使う.
region
このフェイスは, 暫定マーク(transient-mark)モードでリージョンを 強調表示するために使う.
secondary-selection
このフェイスは, 指定した任意の二次セレクションを示すために使う.
highlight
このフェイスは, さまざま目的向けに強調表示するために使う.
underline
このフェイスは, テキストに下線を引く.
bold
このフェイスは, 可能ならば太字(bold)フォントを使う. フレームのフォントに太字(bold)変種があればそれを使う. 太字変種を使用したい場合には, 太字フォント変種を有するデフォルトフォントを選ぶのは読者の責任である.
italic
このフェイスは, フレームのフォントに 斜体(italic)変種があればそれを使う.
bold-italic
このフェイスは, フレームのフォントに 太字斜体(bold-italic)変種があればそれを使う.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
新たなフェイスを定義する方法は, defface
を使うことです.
これは, カスタマイズバッファ
(see (emacs-ja)Easy Customization section ‘簡便なカスタマイズ方法’ in GNU Emacs マニュアル)
を用いてユーザーがカスタマイズできる
カスタマイズ項目(see section カスタマイズ定義の書き方)の一種を作成します.
specに従ったデフォルトを持つカスタマイズ可能なフェイスとして faceを宣言する. シンボルfaceをクォートしないこと. 引数docは, フェイスの説明文字列を指定する.
defface
を実行すると, specに従ったフェイスを定義し,
ファイル‘.emacs’から読み取った任意のカスタマイズを
specの指定に優先させる.
specの目的は, 異なる種類の端末でフェイスがどのような
見た目になるかを指定することである.
(display atts)
の形の要素から成る
連想リストであること.
要素のCARのdisplayは端末の種類を指定する.
CDRのattsはフェイスの属性とその値のリストであり,
その種類の端末上でそのフェイスがどのように見えるかを指定する.
可能な属性は, custom-face-attributes
の値で定義される.
specの要素のdisplay部分は, 要素を適用するフレームを決定する. specの1つより多くの要素が指定されたフレームに一致する場合, そのフレームに一致した最初の要素だけを用いる. displayには2つの可能性がある.
t
specの要素はすべてのフレームで一致する.
したがって, specの以降の要素をけっして使わない.
通常, t
はspecの最後の(あるいは唯一)の要素に使う.
displayがリストであると,
各要素は(characteristic value…)
の形であること.
ここで, characteristicはフレームの分類方法であり,
valueはdisplayを適用すべき分類とみなす値である.
特性characteristicの可能な値はつぎのとおりである.
type
フレームが使用するウィンドウシステムの種類であり,
x
, pc
(MS-DOSのコンソール),
w32
(MS Windows 9X/NT), tty
のいずれかである.
class
フレームで扱える表示色の種類であり,
color
, grayscale
, mono
のいずれかである.
background
背景の種類であり, light
かdark
のいずれかである.
displayの1つの要素において, 指定されたcharacteristicに 1つより多くのvalueを指定すると, それらのいずれの値でも受け入れる. displayに1つより多くの要素がある場合, 各要素は異なるcharacteristicを指定すること. そうすれば, フレームの各特性は displayに指定されたそのフレーム向けの valueの1つに一致するはずである.
標準フェイスregion
をdefface
で
定義するとつぎのようになります.
(defface region ((((class color) (background dark)) (:background "blue")) (t (:background "gray"))) "Used for displaying the region.") |
内部的にはdefface
は,
defface
に指定されたフェイス属性の記録には
シンボルの属性face-defface-spec
,
カスタマイズバッファでユーザーが保存した属性の記録には
saved-face
,
説明文字列の記録にはface-documentation
を使います.
このオプションがnil
以外であると,
フェイスの定義を解釈する際に用いる背景の型を指定する.
これがdark
であると,
実際の背景色に関わらずEmacsはすべてのフレームの背景は暗いとみなす.
これがlight
であると,
Emacsはすべてのフレームの背景は明るいとみなす.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
テキストの表示に使用するフェイスを指定する方法はつぎのとおりです.
face
を持てる.
それがある場合, そのフェイスで表示される.
see section 特別な意味を持つ属性.
文字に属性mouse-face
がある場合は,
マウスが文字に『十分近い』ときには属性face
のかわりにそれを使う.
face
やmouse-face
を持てる.
そのオーバレイが覆うすべてのテキストに適用される.
region-face
を参照)
で強調表示する.
ある文字に対してこれらのさまざまな指定が 1つより多くのフェイスを指定する場合, Emacsは指定されたさまざまなフェイスの属性を併合します. 特別な字形のフェイスが最初です. 適切ならば, つぎはリージョンの強調表示のフェイスです. そのつぎはオーバレイのフェイスの属性, さらにテキスト属性のフェイスが続き, 最後はデフォルトのフェイスです.
複数のオーバレイが1つの文字を覆う場合, 高い優先順位のオーバレイが低いものに優先します. See section オーバレイ.
フォントや表示色のような属性がうえのどれでも指定されていない場合には, フレーム独自のフォントや表示色を使います.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
フェイスの属性で指定できるのは, フォント, 前景色, 背景色, 下線です.
フェイスでは値nil
を指定することでこれらを未指定にできます.
以下は, フェイスを作成したり変更する基本関数です.
この関数は, すべての属性をnil
とした
nameという名前の新たなフェイスを定義する.
nameという名前のフェイスが既存ならばなにもしない.
この関数は, 定義済みのすべてのフェイス名のリストを返す.
この関数は, 既存のold-faceという名前のフェイスのコピーとして フェイスnew-nameを定義する. new-nameが既存でなければ, フェイスnew-nameを作成する.
省略可能な引数フレームframeを指定すると, この関数はそのフレームだけに適用する. さもなければ, 各フレームにおいて個別に, そのフレームのold-faceの属性を 同じフレームのnew-faceにコピーする.
省略可能な引数フレームnew-frameを指定すると,
copy-face
は
フレームframeのold-faceの属性を
フレームnew-frameのnew-faceにコピーする.
以下の関数を使って既存のフレームの属性を変更できます. フレームframeを指定すると, そのフレームだけに影響します. さもなければ, 新たなフレームに適用されるデフォルトに加えて すべてのフレームに影響します.
これらの関数は, フェイスfaceの前景色(あるいは背景色)として colorを設定する. 引数colorは, 表示色名の文字列であること.
白黒スクリーンでは, 濃淡は点猫パターンで実現する.
この関数は, フェイスfaceの背景点猫パターンとして
patternを設定する.
引数patternは, Xサーバーで定義された背景点猫パターンの名前であること.
あるいは, 点猫を使わないことを意味するnil
であること.
白黒階調の特定の濃淡を扱うために自動的に点猫パターンを使うため, 普通は点猫パターンに注意する必要はない.
この関数は, フェイスfaceのフォントを設定する. 引数fontは, 読者のシステムの正しいフォント名か Emacsのフォントセット名(see section フォントセット)の文字列であること. フォントを明示的に設定するとつねに正確にそれを使うため, 太字(bold)や斜体(italic)の属性の効果は消失することに注意.
この関数は, フェイスfaceの太字(bold)の属性を設定する.
nil
以外は太字あり, nil
は太字なしを意味する.
この関数は, フェイスfaceの斜体(italic)の属性を設定する.
nil
以外は斜体あり, nil
は斜体なしを意味する.
この関数は, フェイスfaceの下線の属性を設定する.
nil
以外は下線あり, nil
は下線なしを意味する.
フェイスfaceの前景色と背景色を入れ換える. フェイスに前景色と背景色の両者が設定されていないと, その前景色と背景色にはデフォルトの背景色と前景色を設定する.
つぎの関数は, フェイスの属性を調べます. フレームframeを指定しない場合, 新たなフレーム向けのデフォルトのデータを参照します.
この関数は, フェイスfaceの前景色(あるいは背景色)を 文字列で返す.
この関数は, フェイスfaceの背景点猫パターンの名前を返す.
なければnil
を返す.
この関数はフェイスfaceのフォントの名前を返す.
この関数はフェイスfaceの太字(bold)属性を返す.
この関数はフェイスfaceの斜体(italic)属性を返す.
この関数はフェイスfaceの下線属性を返す.
この関数はフェイスfaceのフェイス番号を返す.
この関数はフェイスfaceの説明文字列を返す.
なければnil
を返す.
この関数は, フェイスface1とface2が
表示上の同じ属性を持てばt
を返す.
この関数は, フェイスfaceの表示がデフォルトのフェイスの表示と
異なる場合にはt
を返す.
フェイスの各属性がデフォルトフェイスの対応する属性に等しいか
(デフォルトから継承すること意味する)nil
であると,
フェイスはデフォルトのフェイスと『等しい』とみなす.
この変数の値は, リージョンが活性(暫定マーク(transient-mark)モードのみ) の場合にリージョン内の文字の表示に使用するフェイス番号を指定する. リージョン内の文字では, これが指定するフェイスが テキスト属性やオーバレイのすべてのフェイスに優先する. 暫定マーク(transient-mark)モードについて詳しくは, see section マーク.
通常, 値はregion
という名前のフェイスのフェイス番号である.
この関数は, フレームframeの前景色や背景色を変更後に フレームframe上のフェイスの表示を更新する.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
本節では, ユーザーが閉じ括弧を挿入したときに Emacsが対応する開き括弧を指し示す機構について述べます.
この変数の値は, 閉じ括弧構文の文字が挿入されるたびに
呼び出される(引数なしの)関数であること.
blink-paren-function
の値がnil
であると, なにもしない.
この変数がnil
であると, blink-matching-open
はなにもしない.
この変数は, 対応する括弧の走査を諦めるまでの最大距離を指定する.
この関数は, 対応する括弧にカーソルを留める秒数を指定する. 秒未満を指定してもしばしば結果は良好であるが, デフォルトはすべてのシステムで動作する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))) |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この変数は, スクリーン上のすべてのテキストに
反転表示を使うかどうかを制御する.
nil
以外は使うことを意味し,
nil
は使わないことを意味する.
デフォルトはnil
である.
この変数は, モード行に反転表示を使うかどうかを制御する.
nil
以外であると, モード行を反転表示する.
さもなければ, テキストと同様にモード行を普通に表示する.
デフォルトはt
である.
ウィンドウフレームでは,
modeline
という名前のフェイスを使ってモード行を表示する.
このフェイスは, 変更していなければ, デフォルトフェイスの反転表示である.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
通常の画面表示慣習は, 各文字コードをどのように表示するかを定義します. 表示テーブル(see section 表示テーブル)を設定すれば, これらの慣習を無効にできます. 通常の画面表示慣習をつぎに示します.
tab-width
で決定される位置まで空白として表示する.
ctl-arrow
の値に従って2つの表示方法の一方を使う.
ctl-arrow
がnil
以外であると,
これらのコードを2つの字形列に対応付け,
最初の字形は‘^’のASCIIコードである.
(表示テーブルで‘^’のかわりに使う字形を指定できる. )
さもなければ, これらは128から255の範囲のコードと同様に対応付ける.
通常の画面表示慣習は, たとえ表示テーブルがあっても,
活性な表示テーブルにおいてその文字に対する項目がnil
であるような
文字すべてに適用されます.
したがって, 表示テーブルを設定するときには,
特別なふるまいをさせたい文字だけを指定すればよいのです.
これらの変数は, 特定の文字群のスクリーンへの表示方法に影響します.
これらは文字が占めるコラム数を変化させるので,
字下げ関数にも影響します.
これらの変数は, モード行の表示方法にも影響します.
新たな値を用いてモード行の再表示を強制したいときには,
関数force-mode-line-update
(see section モード行の書式)を
呼び出します.
このバッファローカルな変数は,
コントロール文字の表示方法を制御する.
nil
以外であると, ‘^A’のように
カレットに続けて文字を表示する.
nil
であると, ‘\001’のように
バックスラッシュに続けて3桁の8進数字で表示する.
この変数の値は, ctl-arrow
を書き換えていないバッファ向けの
ctl-arrow
のデフォルト値である.
see section バッファローカル変数のデフォルト値.
この変数の値は, Emacsのバッファ内のタブ文字の表示に使う
タブストップの間隔である.
デフォルトは8である.
この機能は, コマンドtab-to-tab-stop
で設定する
ユーザー設定可能なタブストップとはまったく独立であることに注意.
see section 調整可能な『タブストップ』.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
表示テーブル(display table)機能を使って, すべての可能な文字コードのスクリーンへの表示方法を制御できます. これは, ASCII文字集合にない文字を用いる ヨーロッパの言語を表示するのに有用です.
表示テーブルは, 各文字コードを字形(glyph)の列に対応付けます. 各字形は, スクリーン上で1文字を占める像です. 字形テーブル(glyph table)を使えば, 読者の端末に各字形を表示する方法を定義することもできます.
表示テーブルは, モード行の表示方法にも影響します.
新たな表示テーブルを用いてモード行の再表示を強制したいときには,
関数force-mode-line-update
(see section モード行の書式)を
呼び出します.
38.14.1 表示テーブルの書式 | What a display table consists of. | |
38.14.2 活性な表示テーブル | How Emacs selects a display table to use. | |
38.14.3 字形 | How to define a glyph, and what glyphs mean. |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
表示テーブルは, 実際にはサブタイプがdisplay-table
である
文字テーブル(see section 文字テーブル)です.
表示テーブルを作成して返す.
テーブルのすべての要素の初期値はnil
である.
表示テーブルの通常の要素は, 文字コードで添字付けします.
添字cの要素は, 文字コードcの表示方法を指定します.
値はnil
であるか, 字形の値のベクトル(see section 字形)です.
要素がnil
であると, その文字を通常の画面表示慣習
(see section 通常の画面表示慣習)に従って表示する指定です.
表示テーブルを使って改行文字の表示を変更すると, バッファ全体は長い1つの『行』として表示されます.
表示テーブルには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 ?^ ??))) |
この関数は表示テーブルdisplay-tableの
追加スロットslotの値を返す.
引数slotは0から5までの数であるか,
スロット名(シンボル)であること.
正しいシンボルは, truncation
, wrap
,
escape
, control
, selective-display
,
vertical-border
である.
この関数は表示テーブルdisplay-tableの
追加スロットslotに値valueを保存する.
引数slotは0から5までの数であるか,
スロット名(シンボル)であること.
正しいシンボルは, truncation
, wrap
,
escape
, control
, selective-display
,
vertical-border
である.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
各ウィンドウに表示テーブルを指定でき, 各バッファにも表示テーブルを指定できます. バッファbがウィンドウwに表示されているとき, ウィンドウwに表示テーブルがあればそれを使って表示します. さもなければ, バッファbに表示テーブルがあればそれを使います. それ以外では, 標準の表示テーブルがあればそれを使います. 選択されている表示テーブルを活性な表示テーブルと呼びます.
この関数は, ウィンドウwindowの表示テーブルを返す.
windowに表示テーブルが割り付けられていなければnil
を返す.
この関数は, ウィンドウwindowの表示テーブルとして
tableを設定する.
引数tableは, 表示テーブルであるかnil
であること.
この変数はすべてのバッファで自動的にバッファローカルである.
バッファでの値は, そのバッファに対して用いる表示テーブルを指定する.
それがnil
であると, バッファに表示テーブルを
割り付けていないことを意味する.
この変数の値はデフォルトの表示テーブルであり,
ウィンドウに表示テーブルがなく
そのウィンドウのバッファにも表示テーブルがない場合に使われる.
この変数はデフォルトではnil
である.
特定のウィンドウにおいて使用する表示テーブルがない場合には,
つまり, ウィンドウで未指定であり, そのバッファでも未指定であり,
standard-display-table
がnil
である場合には,
そのウィンドウ内のすべての文字コードには通常の画面表示慣習を使います.
See section 通常の画面表示慣習.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
字形(glyph)は, 文字を一般化したものです. スクリーン上で1文字を占める像を表します. 文字と同様に, 字形はLispでは整数で表現します.
字形としての各整数の意味は, 字形テーブルで定義されます.
これは変数glyph-table
の値です.
この変数の値は, 現在の字形テーブルである.
これはベクトルであること.
g番目の要素は, 字形コードgを定義する.
値がベクトルではなくnil
であると,
すべての字形は単純(下記参照)である.
字形テーブルの要素として可能な型はつぎのとおりです.
この字形を出力するために端末へstringの文字群を送出する. これは文字端末では使えるがウィンドウシステムでは使えない.
この字形コードを字形コードintegerの別称として定義する. 字形に対してフェイスコードを指定するために別称を使うことができる. 下記参照.
nil
この字形は単純である. 通常の端末では, 字形コード mod 524288 は出力すべき文字である. ウィンドウシステムでは, 字形コード mod 524288 は出力すべき文字あり, 字形コードを524288で除した値は出力中に使用すべきフェイス番号 (see section フェイスを扱う関数)である. (524288は see section フェイス.
字形コードが字形テーブルの長さに等しいか大きいと, そのコードは自動的に単純とします.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
本節では, ユーザーの注意を引くためにEmacsにベルを鳴らせる (あるいはスクリーンを点滅させる)方法について述べます. ベルを鳴らす頻度はなるべく控えめにしてください. 頻繁にベルが鳴るとわずらわしいものです. エラーを通知するほうがふさわしいときには, 単にベルを鳴らさないように注意してください. (see section エラー. )
この関数は, ベルを鳴らすかスクリーンを点滅する
(下記のvisible-bell
を参照).
また, do-not-terminateがnil
であると
現在実行中のキーボードマクロを終了する.
ding
の同義語.
この変数は, ベルを鳴らすかわりにスクリーンを点滅させるかどうかを決定する.
nil
以外であると点滅するを意味し,
nil
であると点滅しないを意味する.
これは, ウィンドウシステムを用いている場合か,
端末のtermcapの定義にビジュアルベル機能(‘vb’)がある
文字端末で有効である.
これがnil
以外であると,
Emacsに『ベルを鳴らす』方法を指定する.
この値は, 引数なしの関数であること.
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
Emacsはいくつかのウィンドウシステムで, 特にXウィンドウシステムで動作します. EmacsもXも用語『ウィンドウ』を使いますが, 用法は異なります. Emacsの1つのフレームは, Xでは1つのウィンドウです. Emacsの個々のウィンドウについては, Xはまったくわかりません.
この変数は, Emacsが動作しているウィンドウシステムの種類を Lispプログラムに伝える. 可能な値はつぎのとおりである.
x
Xを用いて表示している.
pc
MSDOSを用いて表示している.
w32
Windows NTかWindows 95を用いて表示している.
nil
文字ベースの端末を用いて表示している.
この変数は, Emacsが初期化ファイルを処理したあとに実行する
ノーマルフックである.
読者のファイル‘.emacs’, (あれば)デフォルトの初期化ファイル,
端末固有のLispコードをすべてロードし,
フックterm-setup-hook
を実行し終えてから,
このフック実行する.
このフックは内部目的用であり, ウィンドウシステムとの通信を設定し, 最初のウィンドウを作成する. ユーザーが干渉すべきではない.
[ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は新堂 安孝によって2009年9月22日にtexi2html 1.82を用いて生成されました。