Это работа org-element
, то огромная (!) Работа Николя Goaziou . Если вы не знаете, org-element
и вам небезразлично развитие организации, вам следует обратить на это внимание. Это не только отличный инструмент для работы, но и все более мощный org
. Наиболее заметно org-export
( ox
), но также функционирует, например, в org.el
.
Чтобы получить «представление lisp» элемента под точкой, используйте org-element-at-point
или org-element-context
. Чтобы получить представление о буфере используйте org-element-parse-buffer
. Хотя это не имеет непосредственного отношения здесь, имейте в виду org-element-map
.
Для того, чтобы перейти от «LISP представления» о element
, secondary string
или parse tree
спиной к «Org синтаксис представления» использования org-element-interpret-data
. Это (единственный) способ превратить «LISP представления» в «Org синтаксиса представления». Возможно, вы не захотите писать это представление вручную. Вот довольно небольшое представление вашего первого заголовка
(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.")))))
Вы можете обнаружить , что Торстен Джолитц «s org-dp
библиотека поможет вам в таких усилиях ( по MELPA ).
Библиотека org-dp
предназначена для программирования на местном уровне, т.е. без какой-либо (контекстной) информации, кроме информации о проанализированном элементе в точке. Он предназначен для того, чтобы сделать использование синтаксического анализатора / интерпретатора Org на локальном уровне таким же удобным, как и его использование на глобальном уровне (с помощью полного дерева синтаксического анализа, созданного
org-element-parse-buffer
доступными).
Более полное описание Торстена можно найти здесь .
Для дальнейших разъяснений gmane.emacs.orgmode
действительно подходящий форум.
org-insert-drawer
. (То есть, я думаю, что если бы существовал такой преобразователь, эта функция вызывала бы его сnil
.)