次: , 前: Examining Properties, 上: Text Properties


31.19.2 テキスト属性の変更

属性を変更する基本関数は、バッファや文字列の指定した範囲に作用します。 関数set-text-properties(本節の最後)は、 その範囲のテキストの属性リスト全体を設定します。 これは、名前で指定した特定の属性のみを追加/変更/削除するのに しばしば有用です。

テキスト属性はバッファ(や文字列)の一部分であるとみなされ、 スクリーン上でのバッファの見た目に影響するので、 バッファのテキスト属性を変更すると、 バッファには変更済みの印を付けます。 バッファのテキスト属性の変更もアンドゥ(see Undo)できます。

— 機能: put-text-property start end prop value &optional object

この関数は、文字列やバッファであるobject内の startendのあいだのテキストの属性propの値を valueとする。 objectnilであると、デフォルトはカレントバッファである。

— 機能: add-text-properties start end props &optional object

この関数は、文字列やバッファであるobject内の startendのあいだのテキストの テキスト属性に追加/上書きする。 objectnilであると、デフォルトはカレントバッファである。

引数propsで追加する属性を指定する。 これは属性リスト(see Property Lists)の形であること。 つまり、属性名とその値を交互に並べたリストであること。

この関数が属性の値をどれか実際に変更したならば、戻り値はtである。 さもなければ(propsnilだったり、 テキスト内の値と同じ値であると)nilである。

たとえば、テキストのある範囲の属性commentfaceを 設定するにはつぎのようにする。

          (add-text-properties start end
                               '(comment t face highlight))
     
— 機能: remove-text-properties start end props &optional object

この関数は、文字列やバッファであるobject内の startendのあいだのテキストから 指定したテキスト属性を削除する。 objectnilであると、デフォルトはカレントバッファである。

引数propsで削除する属性を指定する。 これは属性リスト(see Property Lists)の形であること。 つまり、属性名とその値を交互に並べたリストであること。 ただし、意味があるのは名前のみであり、その値は無視する。 たとえば、属性faceを削除するにはつぎのようにする。

          (remove-text-properties start end '(face nil))
     

この関数が属性の値をどれか実際に変更したならば、戻り値はtである。 さもなければ(propsnilだったり、 指定したテキスト内の文字にそれらのいずれの属性もなければ) nilである。

特定のテキストからすべてのテキスト属性を削除するには、 新たな属性リストとしてnilを指定して set-text-propertiesを使う。

— 機能: set-text-properties start end props &optional object

この関数は、文字列やバッファであるobject内の startendのあいだのテキストのテキスト属性を完全に置き換える。 objectnilであると、 デフォルトはカレントバッファである。

引数propsは新たな属性リストである。 これは、属性名とその値を交互に並べたリストであること。

set-text-propertiesから戻ると、 指定した範囲のすべての文字は同一の属性を持つことになる。

propsnilであると、 テキストの指定した範囲からすべての属性を削除する効果がある。 たとえば、つぎのようにする。

          (set-text-properties start end nil)
     

バッファからテキストをコピーするがその属性はコピーしない 関数buffer-substring-no-properties(see Buffer Contents)も 参照してください。