组织模式中的POM(点或标记)

时间:2012-11-12 09:06:37

标签: emacs org-mode

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

  

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

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

  1. 那点或标记是什么?
  2. 是否与标记环中的标记相同?
  3. 如何在组织模式缓冲区中获取标记?
  4. 如何在上述函数调用中使用此标记?

2 个答案:

答案 0 :(得分:9)

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

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

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

elisp手册中的更多信息:

答案 1 :(得分:2)

有关标记的更多信息,请查看Emacs Lisp Reference Manual,而不是使用Emacs手册:

  

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

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

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

即,相对于给定的缓冲区/位置执行该功能。在函数体的末尾,point的原始位置将被恢复。