Ich schreibe ein Paket, das eine Liste von Healines, Inhalten und einigen anderen Eigenschaften herunterlädt, die dem Benutzer angezeigt werden sollen. Momentan org-mode
scheint ein Puffer eine gute Möglichkeit zu sein, diese Überschriften anzuzeigen.
Unten sehen Sie ein Beispiel, wie diese Liste aufgebaut sein könnte. Es ist nur zur Veranschaulichung, ich kann es bei Bedarf leicht in eine andere Struktur umwandeln.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Gibt es eine Funktion oder ein Paket, das eine solche Liste in einen org-mode
Puffer druckt ?
Hier ist die gewünschte Ausgabe.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Ich könnte das manuell machen, ich frage mich nur, ob es da draußen etwas geben könnte.
org-insert-drawer
. (Das heißt, ich würde mir vorstellen, wenn ein solcher Konverter existiert, würde diese Funktion diesen mit aufrufennil
.)Antworten:
Dies ist die Aufgabe von
org-element
der super (!) Arbeit von Nicolas Goaziou . Wenn Sie es nicht wissenorg-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ähigerorg
. Vor allem dieorg-export
(ox
), aber auch Funktionen in zorg.el
.Um die "Lispendarstellung" eines Elements unter Punkt zu erhalten, verwenden Sie
org-element-at-point
oderorg-element-context
. Um die Darstellung des Puffers zu erhalten, verwenden Sieorg-element-parse-buffer
. Seien Sie sich bewusst, obwohl dies hier nicht direkt relevant istorg-element-map
.Um von der „Lispeln Darstellung“ eines
element
,secondary string
oderparse tree
zurück in die „Org Syntaxdarstellung“ Verwendungorg-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 ÜberschriftWenn Sie beide Überschriften hinzufügen müssen, fügen Sie a hinzu
parse tree
Sie können feststellen , dass Thorsten Jolitz ‚s
org-dp
Bibliothek , die Sie bei diesen Bemühungen unterstützen wird ( auf Melpa ).Eine ausführlichere Beschreibung von Thorsten finden Sie hier .
Für weitere Abklärungen
gmane.emacs.orgmode
ist wirklich das passende Forum.quelle
org-dp
ist eine alternative Schnittstelle. AFAIR, es wurde geschrieben, um Dokumente in der Org-Syntax / -Format aus einer "elementaren" Sicht zu erstellen. Das Ziel von Org Element ist es, ein Parser und ein Arbeitstier für Org zu sein. Mir persönlich geht es gutorg-element
, aber es ist großartig, alternative Schnittstellen zu haben.Ich habe mir dieses Thema tangential angeschaut. Schauen Sie sich das org-protocol.el an . Es ist mit Org-Modus gebündelt. Insbesondere konvertiert die org-protocol-do-capture-Funktion eine Liste, "Teile" (die Sie anscheinend bereits haben), mit der org-store-link-props-Funktion in org-mode-Eigenschaften und ruft dann org-capture auf. Dies setzt voraus, dass Sie über eine Erfassungsvorlage mit Platzhaltern wie%: link verfügen. Sie können die Eigenschaften so definieren, wie Sie möchten.
Ich habe etwas Ähnliches getan , um Titel, Autor, Datum, Quelle usw. von Site-APIs zu entfernen. Wenn Sie sich diesen Code ansehen, lesen Sie auch capture-templates.el.
Wenn Sie mit JSON-Daten arbeiten, können die Dateien json.el und / oder request.el hilfreich sein.
quelle