这是工作org-element
的真棒的(!)工作萨科Goaziou。如果您不了解org-element
并且关心组织开发,那么您应该研究一下。它不仅是一个很好的工具,而且功能越来越强大org
。最值得注意的是org-export
(ox
),但也可以在例如中使用org.el
。
要获得点使用org-element-at-point
或的元素的“ lisp表示形式” org-element-context
。要获取缓冲区的表示形式,请使用org-element-parse-buffer
。虽然在这里不直接相关,但是请注意org-element-map
。
要从“口齿不清代表性”的走element
,secondary string
还是parse tree
回到“组织语法表示”使用org-element-interpret-data
。这是将 “ lisp表示”转换为“组织语法表示” 的(唯一)方法。但是,您可能不希望手动编写此表示形式。这是您的第一个标题的很小一部分
(org-element-interpret-data
'(headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content."))))
如果您必须同时添加两个标题,请添加 parse tree
(org-element-interpret-data
'(org-data nil (headline (:title "One headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("Some much longer content.")))
(headline (:title "Second headline" :level 1)
(property-drawer nil ((node-property (:key "property1" :value "value1"))
(node-property (:key "property2" :value "value2"))))
(#("More much longer content.")))))
您可能会发现Thorsten Jolitz的org-dp
库将帮助您进行此类工作(基于MELPA)。
该库org-dp
用于在本地级别进行编程,即,除了关于点解析元素的信息外,没有任何(上下文)信息。它旨在使在本地级别使用Org解析器/解释器框架与在全局级别使用它一样方便(具有可用的完整解析树
org-element-parse-buffer
)
在这里可以找到Thorsten的更完整的描述。
为了进一步澄清gmane.emacs.orgmode
,确实是合适的论坛。
org-insert-drawer
。(也就是说,我想如果存在这样的转换器,则此函数将用来调用该转换器nil
。)