我正在尝试使用函数org-entry-properties
和org-id-get
,它们都使用可选参数pom
。例如,org-entry-properties
文档说:
在点或标记 POM 处获取条目的所有属性。
Emacs 手册几乎没有提到“标记”这个词,但是有几个以 . 结尾的函数-marker
。现在我有几个问题。
- 那个点或标记是什么?
- 和mark ring中的mark一样吗?
- 如何在组织模式缓冲区中获取标记?
- 如何在上述函数调用中使用此标记?
缓冲区中的(绝对)位置由一个数字给出,该数字大致是该位置之前的字符数。另一方面,标记允许在缓冲区中标记“相对位置”:如果在它之前添加文本,它会向前移动(就像它是一个不可见的 0 宽度字符)。
您可以随时将标记转换为(绝对)位置(整数)。这就是为什么许多参数想要一个 POM:他们想要一个位置,但接受它是作为标记给出的。
emacs 中的“mark”,是一种特定的标记,可以通过适当的键和弦轻松访问(C-SPC 设置它,Cx Cx 交换标记和点等)。/a“标记环”是所有先前“标记”标记的历史(在给定缓冲区中,即本地标记环,或全局,用于所谓的全局标记环)。
elisp 手册中的更多信息:
除了 Emacs 手册,请查看Emacs Lisp 参考手册以获取有关标记的更多信息:
标记是一个 Lisp 对象,用于指定缓冲区中相对于周围文本的位置。每当插入或删除文本时,标记都会自动更改其从缓冲区开头的偏移量,以便它与两侧的两个字符保持一致。
因此,您提到的函数的 POM 元素可以是一个标记,即一个包含缓冲区和该缓冲区中位置的 lisp 对象,或者只是一个位置。在第一种情况下,函数将首先切换到标记的缓冲区并移动point
到标记的位置,然后再执行其余的函数。
在第二种情况下,它将停留在当前缓冲区中,但point
在执行函数的其余部分之前移动到给定位置。
也就是说,函数相对于给定的缓冲区/位置执行。在函数体的末尾,point
恢复原来的位置。