GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Examining-Properties.html ・ emacs-doc.conao3.com

33.19.1 テキストプロパティの確認

テキストプロパティを調べる最も簡単な方法は、特定の文字の特定のプロパティの値を取得することです。これには get-text-property を使用します。文字のプロパティ一覧全体を取得するには text-properties-at を使用します。複数の文字のプロパティを一度に調べる関数については、テキストプロパティ検索関数を参照してください。

これらの関数は、文字列とバッファの両方を扱います。文字列の位置は 0 から始まりますが、バッファの位置は 1 から始まる点に注意してください。現在のバッファ以外のバッファを渡すと、処理が遅くなる場合があります。

関数: get-text-property pos prop &optional object

この関数は、object(バッファまたは文字列)内の位置 pos 以降の文字の prop プロパティの値を返します。引数 object は省略可能で、デフォルトでは現在のバッファが指定されます。

position が object の末尾にある場合、値は nil となりますが、バッファの狭小化は値に影響しない点に注意してください。つまり、object がバッファまたは nil であり、バッファが狭小化され、position がその狭小化されたバッファの末尾にある場合、結果は nil にならない可能性があります。

厳密には prop プロパティが存在しないものの、その文字がシンボルであるプロパティカテゴリを持つ場合、get-text-property はそのシンボルの prop プロパティを返します。

関数: get-char-property position prop &optional object

この関数は get-text-property と同様ですが、まずオーバーレイを確認し、次にテキストプロパティを確認します。オーバーレイ を参照してください。

引数 object は、文字列、バッファ、またはウィンドウのいずれかです。ウィンドウである場合、そのウィンドウに表示されているバッファがテキストプロパティおよびオーバーレイに使用されますが、そのウィンドウで有効なオーバーレイのみが考慮されます。object がバッファである場合、まずそのバッファ内のオーバーレイが優先度の降順で考慮され、次にテキストプロパティが考慮されます。object が文字列である場合、文字列にオーバーレイは存在しないため、テキストプロパティのみが考慮されます。

関数: get-pos-property position prop &optional object

この関数はget-char-propertyと同様ですが、positionの位置(つまりその直後)にあるキャラクターのプロパティではなく、プロパティの「粘着性」や「オーバーレイ」の進行設定を考慮する点が異なります。

関数: get-char-property-and-overlay position prop &optional object

これは get-char-property に似ていますが、プロパティ値の由来となるオーバーレイに関する追加情報を提供します。

その値は、CAR がプロパティ値となる cons セルであり、これは同じ引数で get-char-property が返す値と同じです。CDR は、プロパティが見つかったオーバーレイ、あるいはテキストプロパティとして見つかったか全く見つからなかった場合は nil となります。

position が object の末尾にある場合、その値の CAR と CDR はともに nil となります。

変数: char-property-alias-alist

この変数には、プロパティ名を代替プロパティ名のリストにマッピングするalistが格納されています。文字がプロパティの直接値を指定していない場合、代替プロパティ名が順に参照され、最初のnil以外の値が使用されます。この変数はdefault-text-propertiesよりも優先され、categoryプロパティはこの変数よりも優先されます。

関数: text-properties-at position &optional object

この関数は、文字列またはバッファ object の position 番目の文字のプロパティリスト全体を返します。object が nil の場合は、現在のバッファがデフォルトとなります。

position が object の末尾にある場合、値は nil となりますが、バッファの狭小化は値に影響しない点に注意してください。つまり、object がバッファまたは nil であり、バッファが狭小化され、position がその狭小化されたバッファの末尾にある場合、結果は nil にならない可能性があります。

変数: default-text-properties

この変数には、テキストプロパティのデフォルト値を指定したプロパティリストが格納されています。文字がプロパティの値を、直接的に、カテゴリシンボルを介して、あるいは char-property-alias-alist を通じて指定していない場合は、代わりにこのリストに格納されている値が使用されます。以下に例を示します。

(setq default-text-properties '(foo 69)
      char-property-alias-alist nil)
;; Make sure character 1 has no properties of its own.
(set-text-properties 1 2 nil)
;; What we get, when we ask, is the default value.
(get-text-property 1 'foo)
     ⇒ 69
関数: object-intervals OBJECT

この関数は、object 内の区間(すなわちテキストプロパティ)のコピーを、区間のリストとして返します。object は文字列またはバッファである必要があります。このリストの構造を変更しても、オブジェクト内の区間は変更されません。

(object-intervals (propertize "foo" 'face 'bold))
     ⇒ ((0 3 (face bold)))

返されるリストの各要素は、1つの区間を表します。各区間は3つの部分で構成されており、1つ目は開始位置、2つ目は終了位置、そして3つ目はテキストプロパティそのものです。