创建新标记时,可以让它不指向任何位置,或指向当前光标位置,或指向缓冲区可访问区域的开头或结尾,或指向与另一个给定标记相同的位置。
下面四个函数返回的标记其插入类型均为 nil。See 标记插入类型。
此函数返回一个新创建的、不指向任何位置的标记。
(make-marker)
⇒ #<marker in no buffer>
此函数返回一个新标记,指向缓冲区可访问区域的结尾。除非启用范围限制,否则即为缓冲区结尾。See 范围限制。
以下是此函数与 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 返回一个新标记,指向与 marker-or-integer 相同的位置与缓冲区。如果参数为整数,copy-marker 返回一个新标记,指向当前缓冲区中 marker-or-integer 位置。
新标记的插入类型由参数 insertion-type 指定。See 标记插入类型。
(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