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