Previous: Overlay Properties, Up: Overlays [Contents][Index]
この関数はカレントバッファー内の位置posにある文字をカバーするすべてオーバーレイのリストをリターンする。sortedが非nilならリストは優先度降順、それ以外なら特定の順にはソートされない。オーバーレイがpos、またはそれより前から始まり、かつposの後で終わるなら位置posはオーバーレイに含まれる。
以下はポイント位置の文字にたいしてプロパティpropを指定するオーバーレイのリストをリターンするLisp関数の使用例:
(defun find-overlays-specifying (prop)
(let ((overlays (overlays-at (point)))
found)
(while overlays
(let ((overlay (car overlays)))
(if (overlay-get overlay prop)
(setq found (cons overlay found))))
(setq overlays (cdr overlays)))
found))
この関数は、begからendのリージョンと重複(overlap)する、オーバーレイのリストをリターンする。“重複”とは、少なくとも1つの文字がそのオーバーレイに含まれ、かつ指定されたリージョンにも含まれることを意味する。しかし、空のオーバーレイがbeg、厳密に言うとbegとendにある場合、またはendがバッファーの終端を示す場合は、その空のオーバーレイも結果に含まれる。
この関数はposの後にあるオーバーレイの開始か終了となるバッファー位置をリターンする。それが存在しなければ(point-max)をリターンする。
この関数はposの前にあるオーバーレイの開始か終了となるバッファー位置をリターンする。それが存在しなければ(point-min)をリターンする。
以下に例としてプリミティブ関数next-single-char-property-change (Property Searchを参照)の単純化(かつ非効率的)したバージョンを示します。これは位置posから前方へ与えられたプロパティpropにたいして、オーバーレイプロパティまたはテキストプロパティのいずれかの値が変化した次の位置を検索します。
(defun next-single-char-property-change (position prop)
(save-excursion
(goto-char position)
(let ((propval (get-char-property (point) prop)))
(while (and (not (eobp))
(eq (get-char-property (point) prop) propval))
(goto-char (min (next-overlay-change (point))
(next-single-property-change (point) prop)))))
(point)))