Dies ist die Aufgabe von org-element
der super (!) Arbeit von Nicolas Goaziou . Wenn Sie es nicht wissen org-element
und sich für die Entwicklung von Organisationen interessieren, sollten Sie sich das genauer ansehen. Es ist nicht nur ein großartiges Werkzeug, mit dem man arbeiten kann, es wird auch immer leistungsfähiger org
. Vor allem die org-export
( ox
), aber auch Funktionen in z org.el
.
Um die "Lispendarstellung" eines Elements unter Punkt zu erhalten, verwenden Sie org-element-at-point
oder org-element-context
. Um die Darstellung des Puffers zu erhalten, verwenden Sie org-element-parse-buffer
. Seien Sie sich bewusst, obwohl dies hier nicht direkt relevant ist org-element-map
.
Um von der „Lispeln Darstellung“ eines element
, secondary string
oder parse tree
zurück in die „Org Syntaxdarstellung“ Verwendung org-element-interpret-data
. Dies ist die (einzige) Möglichkeit, eine "Lisp-Repräsentation" in eine "Org-Syntax-Repräsentation" umzuwandeln. Sie werden diese Darstellung wahrscheinlich nicht manuell schreiben wollen. Hier ist eine ziemlich kleine Darstellung Ihrer ersten Überschrift
(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."))))
Wenn Sie beide Überschriften hinzufügen müssen, fügen Sie a hinzu 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.")))))
Sie können feststellen , dass Thorsten Jolitz ‚s org-dp
Bibliothek , die Sie bei diesen Bemühungen unterstützen wird ( auf Melpa ).
Die Bibliothek org-dp
ist für die Programmierung auf lokaler Ebene gedacht, dh ohne (kontextbezogene) Informationen, mit Ausnahme der Informationen zum analysierten Element am Punkt. Es wurde entwickelt, um die Verwendung des Org-Parser / Interpreter-Frameworks auf lokaler Ebene so komfortabel wie die Verwendung auf globaler Ebene zu gestalten (mit einem vollständigen Analysebaum, der von
org-element-parse-buffer
available erstellt wird).
Eine ausführlichere Beschreibung von Thorsten finden Sie hier .
Für weitere Abklärungen gmane.emacs.orgmode
ist wirklich das passende Forum.
org-insert-drawer
. (Das heißt, ich würde mir vorstellen, wenn ein solcher Konverter existiert, würde diese Funktion diesen mit aufrufennil
.)