J'écris un paquet qui télécharge une liste de healines, de contenu et d'autres propriétés qui doivent être affichées pour l'utilisateur. Pour l'instant, un org-mode
tampon semble être un bon moyen d'afficher ces titres.
Voici un exemple de la façon dont cette liste pourrait être structurée. Il est simplement illustratif, je peux facilement le convertir en toute autre structure si nécessaire.
'(("One headline" "Some much longer content."
(property1 . value)
(property2 . value))
("Second headline" "More much longer content."
(property1 . value)
(property2 . value)))
Existe-t-il une fonction ou un package qui imprime une telle liste dans un org-mode
tampon?
Voici la sortie souhaitée.
* One headline
:PROPERTIES:
:property1: value
:property2: value
:END:
Some much longer content.
* Second headline
:PROPERTIES:
:property1: value
:property2: value
:END:
More much longer content.
Je pourrais le faire manuellement, je me demande simplement s'il pourrait y avoir quelque chose là-bas.
org-insert-drawer
. (Autrement dit, j'imagine que si un tel convertisseur existait, cette fonction l'appellerait avecnil
.)Réponses:
C'est le travail de
org-element
, l' excellent (!) Travail de Nicolas Goaziou . Si vous ne savez pasorg-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 puissantorg
. Plus particulièrement leorg-export
(ox
), mais fonctionne également dans egorg.el
.Pour obtenir la "représentation lisp" d'un élément sous point, utilisez
org-element-at-point
ouorg-element-context
. Pour obtenir la représentation du tampon, utilisezorg-element-parse-buffer
. Bien qu'il ne soit pas directement pertinent ici, sachez-leorg-element-map
.Pour aller de la « représentation Lisp » d'un
element
,secondary string
ouparse tree
revenir à la « représentation Org syntaxe » utilisationorg-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 titreSi vous devez ajouter les deux titres, ajoutez un
parse tree
Vous pouvez constater que la bibliothèque de Thorsten Jolitz
org-dp
vous aidera dans ces efforts ( sur MELPA ).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é.la source
org-dp
est une interface alternative. AFAIR, il a été écrit pour créer des documents dans la syntaxe / format Org d'un point de vue "élémentaire". Le but d'Org Element est d'être un analyseur et un bourreau de travail pour Org. Je suis personnellement très bien avecorg-element
, mais c'est génial d'avoir des interfaces alternatives.J'ai en quelque sorte examiné cette question de manière tangentielle. Jetez un œil à org-protocol.el . Il est fourni avec le mode org. Plus précisément, la fonction org-protocol-do-capture convertit une liste, "pièces" (que vous semblez déjà avoir), en propriétés de mode org en utilisant la fonction org-store-link-props, puis appelle org-capture. Cela suppose que vous disposez d'un modèle de capture avec des espaces réservés tels que%: link. Vous pouvez définir les propriétés comme vous le souhaitez.
J'ai fait quelque chose de similaire à gratter le titre, l'auteur, la date, la source, etc. à partir des API du site. Si vous finissez par regarder ce code, assurez-vous également de regarder capture-templates.el.
Si vous travaillez avec des données JSON, json.el et / ou request.el peuvent être utiles.
la source