Це робота org-element, дивовижна (!) Робота Ніколя Гоазіу . Якщо ви не знаєте, 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.)