Это работа 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.)