如何获得元素所属的标题

时间:2016-03-06 18:55:23

标签: emacs org-mode

我可以在页面上的链接上使用org-element-context,然后走近父母,看看它属于哪个段落。但是,我想获得段落/链接所在标题的值。有理智的做法吗?我是组织模式AST的新手,所以任何一般提示都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

这取决于标题中您需要哪些信息:

如果您只想要标题的文字,可以使用org-get-heading。 (编辑:此函数似乎已添加到Org版本8.2.10和8.3.2之间。)请注意,此函数返回属性文本字符串(有关详细信息,请参阅this manual entry,但是对于大多数用途,您可以忽略文本属性并将其视为字符串)。

如果你想要标题的位置,我(令人惊讶的是)找不到任何能让你开箱即用的东西。我做这样的事情:

(defun my/org-back-to-heading-safe (&optional invisible-ok)
  "As `org-back-to-heading', but return nil before first heading."
  (condition-case err
      (org-back-to-heading invisible-ok)
    (error nil)))

(defun my/org-get-heading-pos ()
  "Return position of heading containing point.
If before the first heading of the buffer, return nil.
Do not move point."
  (save-excursion (my/org-back-to-heading-safe :invisible-ok)))

如果你想要像org-element-context这样的完整列表,你可以做类似的事情:

(defun my/org-element-heading ()
  "Return context for heading containing point.
As `org-element-context', if point is on a heading.  Otherwise,
return the value `org-element-context' would return if point were
on its heading.

If before the first heading of the buffer, return nil."
  (save-excursion
    (when (my/org-back-to-heading-safe :invisible-ok)
      (org-element-context))))