display プロパティ ¶display
テキストプロパティ(またはオーバーレイプロパティ)は、テキスト内に画像を挿入したり、テキストの表示に関するその他の側面を制御したりするために使用されます。同一の
display
プロパティ値における表示仕様は、通常、対象となるテキストに対して並行して適用されます。
複数のソース(オーバーレイおよび/またはテキストプロパティ)で display
プロパティの値が指定されている場合、get-char-property
のルールに従い、そのうちの1つの値のみが適用されます。テキストプロパティの確認を参照してください。
display
プロパティの値は、表示指定、または複数の表示指定を含むリストやベクトルである必要があります。
この便利な関数を使用すると、display
プロパティがベクトル、リスト、あるいは単一の表示指定のいずれであっても、特定の表示指定の値を取得できます。これは get-text-property(テキストプロパティの確認 を参照)と同様ですが、display プロパティに対してのみ機能します。単一の値を持つ指定(例:height)の場合は値そのものを、値のリストを持つプロパティ(例:slice)の場合は値のリストを返します。
position は検査対象のバッファまたは文字列内の位置であり、spec は返す表示仕様の CAR です。オプションの object 引数は文字列またはバッファである必要があり、デフォルトでは現在のバッファが指定されます。オプションの
properties 引数が nil
以外の場合は、display プロパティである必要があり、その場合、position と object は無視されます。(これは、例えば
get-char-property で既に display プロパティを取得している場合などに有用です(テキストプロパティの検査 を参照)。)
startからendまでのテキストに表示指定(prop value)を追加してください。
領域内のテキストに nil または display 以外のプロパティがある場合、それらのプロパティは保持されます。例えば:
(add-display-text-property 4 8 'height 2.0) (add-display-text-property 2 12 'raise 0.5)
この操作を行うと、2から4の範囲にはraiseの表示指定が、4から8の範囲にはraiseとheightの両方の表示指定が、そして最後に8から12の範囲にはraiseの表示指定のみが適用されるようになります。
object は、仕様を追加する文字列またはバッファです。省略した場合、object は現在のバッファがデフォルトとなります。
startからendまでのテキストから、表示指定子specを削除します。specは削除対象の表示指定子のCARであり、例えばheightや'(margin nil)などが該当します。
領域内のテキストに他の display
プロパティがある場合、それらのプロパティは保持されます。例えば:
(add-display-text-property 1 8 'raise 0.5) (add-display-text-property 4 8 'height 2.0) (remove-display-text-property 2 6 'raise)
この操作を行うと、テキストに以下の display プロパティが付与されます:
raiseのみ
heightのみ
raiseとheightの両方
object は、指定を解除するための文字列またはバッファです。省略した場合、object は現在のバッファがデフォルトとなります。
一部の表示仕様ではLisp式を含めることができ、これらは表示時に評価されます。これは、例えば表示仕様が外部プログラムやエージェントによって生成された場合など、特定の状況下では安全ではない可能性があります。(disable-eval spec)のように、特殊記号disable-evalで始まるリストで表示仕様を囲むと、spec内のLisp式の評価は無効になりますが、それ以外のすべての表示プロパティ機能は引き続き利用可能です。
本節の残りの部分では、数種類の表示仕様とその意味について説明します。