6

我正在尝试使用函数org-entry-propertiesorg-id-get,它们都使用可选参数pom。例如,org-entry-properties文档说:

在点或标记 POM 处获取条目的所有属性。

Emacs 手册几乎没有提到“标记”这个词,但是有几个以 . 结尾的函数-marker。现在我有几个问题。

  1. 那个点或标记是什么?
  2. 和mark ring中的mark一样吗?
  3. 如何在组织模式缓冲区中获取标记?
  4. 如何在上述函数调用中使用此标记?
4

2 回答 2

10

缓冲区中的(绝对)位置由一个数字给出,该数字大致是该位置之前的字符数。另一方面,标记允许在缓冲区中标记“相对位置”:如果在它之前添加文本,它会向前移动(就像它是一个不可见的 0 宽度字符)。

您可以随时将标记转换为(绝对)位置(整数)。这就是为什么许多参数想要一个 POM:他们想要一个位置,但接受它是作为标记给出的。

emacs 中的“mark”,是一种特定的标记,可以通过适当的键和弦轻松访问(C-SPC 设置它,Cx Cx 交换标记和点等)。/a“标记环”是所有先前“标记”标记的历史(在给定缓冲区中,即本地标记环,或全局,用于所谓的全局标记环)。

elisp 手册中的更多信息:

于 2012-11-12T10:18:37.767 回答
4

除了 Emacs 手册,请查看Emacs Lisp 参考手册以获取有关标记的更多信息:

标记是一个 Lisp 对象,用于指定缓冲区中相对于周围文本的位置。每当插入或删除文本时,标记都会自动更改其从缓冲区开头的偏移量,以便它与两侧的两个字符保持一致。

因此,您提到的函数的 POM 元素可以是一个标记,即一个包含缓冲区和该缓冲区中位置的 lisp 对象,或者只是一个位置。在第一种情况下,函数将首先切换到标记的缓冲区并移动point到标记的位置,然后再执行其余的函数。

在第二种情况下,它将停留在当前缓冲区中,但point在执行函数的其余部分之前移动到给定位置。

也就是说,函数相对于给定的缓冲区/位置执行。在函数体的末尾,point恢复原来的位置。

于 2012-11-12T10:11:49.770 回答