このセクションではオーバーレイの作成、削除、移動、およびそれらのコンテンツを調べる関数を説明します。オーバーレイはバッファーのコンテンツの一部とはみなされないため、その変更はバッファーのundoリストに記録されません。
この関数はobjectがオーバーレイならt
をリターンする。
この関数はbufferに属する、startからendの範囲のオーバーレイを作成してリターンする。startとendはいずれもバッファーの位置を指定しなければならず、整数かマーカーを指定できる。bufferが省略されると、そのオーバーレイはカレントバッファーに作成される。
startとendが同一のバッファー位置を指定するオーバーレイは空(empty)のオーバーレイとして知られる。startとendの間のテキストが削除されれば、非空のオーバーレイも空になり得る。これが発生したとき、デフォルトではオーバーレイは削除されないが、‘evaporate’プロパティを与えることにより削除されるようにできる(evaporate propertyを参照)。
引数front-advanceとrear-advanceはそれぞれ、先頭(startの前)あるいは終端にテキストが挿入された際に何が起こるかを指定する。どちらもnil
(デフォルト)なら、そのオーバーレイは先頭に挿入された任意のテキストを含むように拡張されるが、終端に挿入されたテキストにたいしては拡張されない。front-advanceが非nil
なら、オーバーレイの先頭に挿入されたテキストはオーバーレイから除外される。rear-advanceが非nil
なら、オーバーレイの終端に挿入されたテキストはオーバーレイに含まれる。
この関数はoverlayが開始する位置を整数でリターンする。
この関数はoverlayが終了する位置を整数でリターンする。
この関数はoverlayが所属するバッファーをリターンする。overlayが削除されていたらnil
をリターンする。
この関数は指定されたoverlayを削除する。そのオーバーレイはLispオブジェクトとして存在し続けて、そのプロパティリストは変更されないがバッファーへの所属と表示にたいするすべての効果を失う。
削除済みオーバーレイが永続的に非接続という訳ではない。move-overlay
を呼び出すことによりバッファー内の位置を与えることができる。
この関数はoverlayをbufferに移動して、その境界をバッファー内のstartとendに配置する。startとendの引数はいずれもバッファーの位置を指定しなければならず、整数かマーカーを指定できる。
bufferが省略された場合、overlayはすでに関連付けられている同じバッファーに留まる。さらにoverlayが以前に削除されている(つまりどのバッファーにも関連付けられていない)場合にはカレントバッファーに所属させる。
リターン値はoverlay。
これはオーバーレイの終端位置を変更する唯一の有効な手段となる関数である。
この関数はstartとendの間のリージョンのテキストにたいして、名前がnameで値がvalueであるようなすべてのオーバーレイをクリアする。これを可能にするために、この関数はリージョン内のオーバーレイ削除や終端の移動、分割、あるいはこれらを組み合わせた処理を行えるようになっている。具体的には:
nameが省略かnil
なら、それは指定されたリージョン内で影響を受けるのすべてのオーバーレイを削除または変更することを意味する。startおよび/またはendが省略かnil
なら、それぞれバッファーの先頭と終端がデフォルトになることを意味する。したがって(remove-overlays)
はカレントバッファー内のすべてのオーバーレイを削除する。
名前つきのオーバーレイプロパティの値の比較にはeq
を使用する。これは値がシンボルfixnumでなければ重要である(同等性のための述語を参照)。関数に渡される値がオーバーレイプロパティに用いられた値のコピーでは等しくならないことを意味するからだ。たとえ内容が同じであっても、オブジェクトが異なれば比較しても等しくならない。
オプション引数nameとvalueはどちらも非nil
、あるいはどちらも省略かnil
で渡すこと。
この関数はoverlayのコピーをリターンする。このコピーはoverlayと同じ両端位置とプロパティをもつ。しかしオーバーレイの開始と終了にたいするテキスト挿入タイプはデフォルト値にセットされる。
以下にいくつか例を示します:
;; オーバーレイを作成
(setq foo (make-overlay 1 10))
⇒ #<overlay from 1 to 10 in display-ja.texi>
(setq selective-display 2) ⇒ 2
(overlay-end foo) ⇒ 10 (overlay-buffer foo) ⇒ #<buffer display-ja.texi> ;; 後でチェック可能なプロパティを付与 (overlay-put foo 'happy t) ⇒ t ;; 付与されたか検証 (overlay-get foo 'happy) ⇒ t
;; オーバーレイを移動
(move-overlay foo 5 20)
⇒ #<overlay from 5 to 20 in display-ja.texi>
(overlay-start foo)
⇒ 5
(overlay-end foo)
⇒ 20
;; オーバーレイを削除 (delete-overlay foo) ⇒ nil ;; 削除の検証 foo ⇒ #<overlay in no buffer> ;; 削除済みオーバーレイは位置をもたない (overlay-start foo) ⇒ nil (overlay-end foo) ⇒ nil (overlay-buffer foo) ⇒ nil
;; 削除を取り消す (move-overlay foo 1 20) ⇒ #<overlay from 1 to 20 in display-ja.texi> ;; 結果の検証 (overlay-start foo) ⇒ 1 (overlay-end foo) ⇒ 20 (overlay-buffer foo) ⇒ #<buffer display-ja.texi>
;; 移動や削除によってオーバーレイのプロパティは変更されない
(overlay-get foo 'happy)
⇒ t