Next: , Up: テキストのプロパティ   [Contents][Index]


33.19.1 テキストプロパティを調べる

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

以下の関数は文字列とバッファーの両方を処理します。バッファー内の位置は1から始まりますが、文字列内の位置は0から始まることに留意してください。カレントバッファー以外のバッファーのパースは低速になるかもしれません。

Function: get-text-property pos prop &optional object

この関数はobject (バッファーか文字列)内の位置posの後にある文字のプロパティpropの値をリターンする。引数objectはオプションでありデフォルトはカレントバッファー。

positionobjectの終端にあれば値はnilになるが、バッファーのナローイングは値に影響しないことに注意。つまりobjectがバッファーかnilの場合には、そのバッファーがナローイングされていて、かつobjectがナローイングされたバッファーの終端にあれば結果は非nilになるだろう。

厳密な意味でpropプロパティは存在しないが、その文字がシンボルのプロパティカテゴリーをもつなら、get-text-propertyはそのシンボルのpropプロパティをリターンする。

Function: get-char-property position prop &optional object

この関数はget-text-propertyと似ているが、まずオーバーレイをチェックして次にテキストプロパティをチェックする点が異なる。オーバーレイを参照のこと。

引数objectは文字列、バッファー、あるいはウィンドウかもしれない。ウィンドウならそのウィンドウ内に表示されているバッファーのテキストプロパティとオーバーレイが使用されるが、そのウィンドウにたいしてアクティブなオーバーレイだけが考慮される。objectがバッファーなら、そのバッファー内のオーバーレイがまず優先的に考慮されて、その後にテキストプロパティが考慮される。objectが文字列なら文字列がオーバーレイをもつことは決してないのでテキストプロパティだけが考慮される。

Function: get-pos-property position prop &optional object

この関数はget-char-propertyと似ているが、position (すぐ右)にある文字のプロパティのかわりにプロパティのstickiness(粘着性)とオーバーレイのadvancement(前向的)のセッティングに注意を払う点が異なる。

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

これはget-char-propertyと似ているが、そのプロパティ値が由来するオーバーレイについて追加情報を与える点が異なる。

値はCARがプロパティ値であるようなコンスセルであり、これは同じ引数によりget-char-propertyがリターンするであろう値と同じ。CDRはそのプロパティが見つかった箇所のオーバーレイ、テキストプロパティとして見つかった場合や見つからなかった場合にはnil

positionobjectの終端ならCARCDRの値はどちらもnil

Variable: char-property-alias-alist

この変数はプロパティ名と代替となるプロパティ名リストをマップするalistを保持する。文字があるプロパティにたいして直接値を指定しなければ、順に代替プロパティ名が調べられて最初の非nil値が使用される。この変数はdefault-text-propertiesより優先されて、この変数よりcategoryプロパティが優先される。

Function: text-properties-at position &optional object

この関数は文字列かバッファーobject内の位置positionにある文字のプロパティリスト全体をリターンする。objectnilならデフォルトはカレントバッファー。

positionobjectの終端にあれば値はnilになるが、バッファーのナローイングは値に影響しないことに注意。つまりobjectがバッファーかnilの場合には、そのバッファーがナローイングされていて、かつobjectがナローイングされたバッファーの終端にあれば結果は非nilになるだろう。

Variable: default-text-properties

この変数はテキストプロパティにたいしてデフォルト値を与えるプロパティリストを保持する。あるプロパティにたいして文字が直接、あるいはカテゴリーシンボルやchar-property-alias-alistを通じて値を指定しないときは、常にこのリストに格納された値がかわりに使用される。以下は例:

(setq default-text-properties '(foo 69)
      char-property-alias-alist nil)
;; 文字1は自身のプロパティをもたない
(set-text-properties 1 2 nil)
;; 取得される値はデフォルト値
(get-text-property 1 'foo)
     ⇒ 69
Function: object-intervals OBJECT

この関数はobject内のインターバル(テキストプロパティ)をインターバルのリストとしてリターンする。objectは文字列かバッファーでなければならない。このリストの構造を変更しても、オブジェクト内のインターバルは変更されない。

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

リターンされたリストの各要素は1つのインターバルを表す。インターバルはそれぞれ3つのパーツをもつ。1つ目は開始、2つ目は終了、3つ目はそのインターバル自身のテキストプロパティ。