32.3 Функции, создающие маркеры

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

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

Функция: make-marker

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

(make-marker)
     ⇒ #<маркер в пустом буфере>
Функция: point-marker

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

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

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

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

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

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

(point-min-marker)
     ⇒ #<маркер в 1 в markers.texi>
(point-max-marker)
     ⇒ #<маркер в 24080 в markers.texi>

(narrow-to-region 100 200)
     ⇒ nil
(point-min-marker)
     ⇒ #<маркер в 100 в markers.texi>
(point-max-marker)
     ⇒ #<маркер в 200 в 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)
     ⇒ #<маркер в 1 в markers.texi>

(copy-marker 90000)
     ⇒ #<маркер в 24080 в markers.texi>

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

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

(setq p (point-marker))
     ⇒ #<маркер в 2139 в markers.texi>

(setq q (copy-marker p))
     ⇒ #<маркер в 2139 в markers.texi>

(eq p q)
     ⇒ nil

(equal p q)
     ⇒ t