Функции создания маркеров
При создании нового маркера, вы можете сделать его не указывающим на позицию, или указать на текущую позицию точки, или на начало или конец доступной части буфера, или на ту же позицию, что и другой заданный маркер.
Следующие четыре функции возвращают маркеры с типом вставки 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