Spec-Zone.ru › Elisp

Функции создания маркеров

При создании нового маркера, вы можете сделать его не указывающим на позицию, или указать на текущую позицию точки, или на начало или конец доступной части буфера, или на ту же позицию, что и другой заданный маркер.

Следующие четыре функции возвращают маркеры с типом вставки nil. См. Типы вставки маркеров.

Функция: make-marker

Эта функция возвращает новый созданный маркер, не указывающий на никакую позицию.

(make-marker)
     ⇒ #<marker in no buffer>
Функция: point-marker

Эта функция возвращает новый маркер, указывающий на текущую позицию точки в текущем буфере. См. Точка. Пример см. ниже в copy-marker.

Функция: point-min-marker

Эта функция возвращает новый маркер, указывающий на начало доступной части буфера. Это будет начало буфера, если сужение не активное. См. Сужение.

Функция: point-max-marker

Эта функция возвращает новый маркер, указывающий на конец доступной части буфера. Это будет конец буфера, если сужение не активное. См. Сужение.

Примеры этой функции и point-min-marker, показаны в буфере, содержащем версию исходного файла текста этой главы.

(point-min-marker)
     ⇒ #<marker at 1 in markers.texi>
(point-max-marker)
     ⇒ #<marker at 24080 in markers.texi>
(narrow-to-region 100 200)
     ⇒ nil
(point-min-marker)
     ⇒ #<marker at 100 in markers.texi>
(point-max-marker)
     ⇒ #<marker at 200 in markers.texi>
Функция: copy-marker &optional marker-or-integer insertion-type

Если в качестве аргумента передается маркер, copy-marker возвращает новый маркер, указывающий на ту же позицию и в том же буфере, что и marker-or-integer. Если в качестве аргумента передается целое число, copy-marker возвращает новый маркер, указывающий на позицию marker-or-integer в текущем буфере.

Тип вставки нового маркера задается аргументом insertion-type. См. Типы вставки маркеров.

(copy-marker 0)
     ⇒ #<marker at 1 in markers.texi>
(copy-marker 90000)
     ⇒ #<marker at 24080 in markers.texi>

Ошибка сигнализируется, если marker не является ни маркером, ни целым числом.

Два различных маркера считаются equal (хотя и не eq) друг к другу, если они имеют одинаковую позицию и буфер, или если оба не указывают на никакую позицию.

(setq p (point-marker))
     ⇒ #<marker at 2139 in markers.texi>
(setq q (copy-marker p))
     ⇒ #<marker at 2139 in markers.texi>
(eq p q)
     ⇒ nil
(equal p q)
     ⇒ t

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/Creating-Markers.html

Spec-Zone.ru

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