Spec-Zone.ru › Elisp

Поиск наложений

Функция: overlays-at pos &optional sorted

Эта функция возвращает список всех наложений, которые покрывают символ в позиции pos в текущем буфере. Если sorted не nil, список отсортирован по убыванию приоритета, в противном случае — в произвольном порядке. Наложение содержит позицию pos, если оно начинается в или до pos и заканчивается после pos.

Для иллюстрации использования, вот функция Lisp, которая возвращает список наложений, которые задают свойство prop для символа в текущей позиции:

(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))
Функция: overlays-in beg end

Эта функция возвращает список наложений, которые перекрывают область с beg по end. Наложение перекрывает область, если оно содержит один или более символов в области; пустые наложения (см. пустое наложение) перекрывают область, если они находятся в beg, строго между beg и end, или в end, когда end обозначает позицию в конце доступной части буфера.

Функция: next-overlay-change pos

Эта функция возвращает позицию в буфере следующего начала или конца наложения после pos. Если такового нет, она возвращает (point-max).

Функция: previous-overlay-change pos

Эта функция возвращает позицию в буфере предыдущего начала или конца наложения перед pos. Если такового нет, она возвращает (point-min).

В качестве примера, вот упрощенная (и неэффективная) версия примитивной функции next-single-char-property-change (см. Поиск свойств). Она ищет вперёд от позиции 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)))

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Finding-Overlays.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API