J'essaie d'écrire une fonction qui prendra un en-tête et le ré-archivera à un emplacement spécifique. Le doc pour org-refile
est
(org-refile &optional GOTO DEFAULT-BUFFER RFLOC MSG)
et RFLOC
est
RFLOC can be a refile location obtained in a different way.
mais je n'ai aucune idée de ce que serait "une manière différente" et je google depuis une demi-journée et je n'ai vu aucun exemple. Je connais le fichier et je connais le titre de la cible mais je ne connais pas la syntaxe pour le former en ce qu'il veut. Le plus proche que j'ai obtenu est:
(org-refile nil #("~/Org/bookmarks.org")
qui me demandera alors le titre, mais bien sûr, je ne veux pas qu'il me demande, je veux le fournir.
Je suis nouveau sur elisp et j'ai deviné toutes les syntaxes auxquelles je peux penser. Quelqu'un sait-il comment exprimer cela?
(let* ( (org-archive-location "/path/to/org-file::* NAME_OF_HEADING") (org-archive-save-context-info nil)) (org-archive-subtree))
je ne mettrai probablement pas cela dans une réponse depuis que vous avez posé des questionsorg-refile
, mais l'extrait de code fait très bien le travail. Les deux colons sont nécessaires. Je l'utilise tout le temps et j'ai même créé une version personnalisée deorg-archive-subtree
pour supprimer le message afin que je n'en ai pas des centaines lorsque je réorganise automatiquement tout mon fichier org.Réponses:
Je me suis demandé à quoi devrait ressembler le RFLOC auparavant, mais je n'ai jamais enquêté. En regardant le code source de l'organisation, il devrait s'agir d'une liste composée de:
Je n'ai pas expérimenté avec l'
re
élément, mais voici une fonction simple qui invoqueraorg-refile
avec un RFLOC construit à partir d'un FILE et HEADING donné:Cela ouvre le fichier cible et utilise une fonction org pour trouver la position du titre cible, puis crée la liste RFLOC vers laquelle passer
org-refile
.la source
Merci beaucoup @glucas, j'ai travaillé votre solution dans ma dernière. L'information clé était de connaître le format du RFLOC. J'ai essayé de fournir une liste de nom de fichier et de texte de titre, mais il me manquait ces autres éléments et le néant supplémentaire. Voici ce que j'ai fini avec:
Le doc pour
save-excursion
déclare que nous serons retournés à l'endroit d'où nous sommes partis, mais cela ne semble pas fonctionner de cette façon. Cela me laisse dans la destination cible, ce qui pourrait être approprié pour le généralrefile-to
, mais je voulais simplement lui faire déplacer la ligne et rester où j'étais, alors je sauvegarde et restaure à l'intérieurrefile-to-bookmark
.Le flux de travail auquel cela est destiné est que je commence par une liste de liens HTML provenant de mon script pour lire les flux RSS. À l'origine, le script avait produit des fichiers maildir pour mu4e, mais je me suis quand même contenté de suivre les liens vers un navigateur, puis de mettre en signet ceux qui m'intéressaient, alors maintenant je génère simplement une liste de
** [[uri][title]]
lignes. Après avoir suivi le lien emacs vers le navigateur uzbl, au lieu de créer un signet (qui génère la même forme de lignes), j'utilise cette commande pour déplacer le lien vers mon bookmarks.org après avoir défini des balises. Juste un peu plus vite puisque j'utilise également les commandes de vitesse org,t
pour marquer etb
pour cette commande. Je suis heureux maintenant et j'adore en savoir plus!la source
re
autant que je sache, l'élément du RFLOC sera ignoré. Il est utilisé dans quelques autres fonctions dans org.el qui traitent des emplacements cibles.refile-to
fonction de retour à la position initiale en ajoutant ceci à la fin, après lelet
:(switch-to-buffer (current-buffer))
. Il semble que cela ne devrait rien faire, mais cela fonctionne pour moi.-push
et-goto
par ça. Il semble étrange que vous soyez laissé dans un autre tampon et pourtant il considère que le tampon actuel est le précédent.