C'est le travail de org-element
, l' excellent (!) Travail de Nicolas Goaziou . Si vous ne savez pas org-element
et que vous vous souciez du développement de l'organisation, c'est quelque chose que vous devriez examiner. Ce n'est pas seulement un excellent outil de travail, il est également de plus en plus puissant org
. Plus particulièrement le org-export
( ox
), mais fonctionne également dans eg org.el
.
Pour obtenir la "représentation lisp" d'un élément sous point, utilisez org-element-at-point
ou org-element-context
. Pour obtenir la représentation du tampon, utilisez org-element-parse-buffer
. Bien qu'il ne soit pas directement pertinent ici, sachez-le org-element-map
.
Pour aller de la « représentation Lisp » d'un element
, secondary string
ou parse tree
revenir à la « représentation Org syntaxe » utilisation org-element-interpret-data
. C'est le (seul) moyen de transformer une "représentation lisp" en une "représentation de syntaxe org". Cependant, vous ne voudrez probablement pas écrire cette représentation manuellement. Voici une assez petite représentation de votre premier titre
(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."))))
Si vous devez ajouter les deux titres, ajoutez un 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.")))))
Vous pouvez constater que la bibliothèque de Thorsten Jolitzorg-dp
vous aidera dans ces efforts ( sur MELPA ).
La bibliothèque org-dp
est destinée à la programmation au niveau local, c'est-à-dire sans aucune information (contextuelle) à l'exception de celles concernant l'élément analysé au point. Il est conçu pour rendre l'utilisation du framework Org parser / interpreter au niveau local aussi pratique que son utilisation au niveau global (avec un arbre d'analyse complet produit par
org-element-parse-buffer
available)
Une description plus complète par Thorsten peut être trouvée ici .
Pour plus de précisions, gmane.emacs.orgmode
c'est vraiment le forum approprié.
org-insert-drawer
. (Autrement dit, j'imagine que si un tel convertisseur existait, cette fonction l'appellerait avecnil
.)