これはの仕事です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-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.")))))
Thorsten Jolitzのorg-dp
ライブラリは、このような取り組みに役立つことがわかります(MELPAを参照)。
このライブラリorg-dp
は、ローカルレベルでのプログラミングを目的としています。つまり、ポイントで解析された要素に関する情報以外の(コンテキスト)情報はありません。Orgパーサー/インタープリターフレームワークをグローバルレベルで使用するのと同じくらい便利にローカルレベルで使用できるように設計されています(org-element-parse-buffer
利用可能な完全な解析ツリーを
使用)
Thorstenによるより完全な説明はここにあります。
さらに明確にするためにgmane.emacs.orgmode
、本当に適切なフォーラムです。
org-insert-drawer
。(私は、このようなコンバータが存在する場合、この関数はしているものを呼ぶだろう想像ですnil
。)