Ich versuche, eine Funktion zu schreiben, die eine Überschrift nimmt und sie an einem bestimmten Ort neu abfasst. Das Dokument für org-refile
ist
(org-refile &optional GOTO DEFAULT-BUFFER RFLOC MSG)
und RFLOC
ist
RFLOC can be a refile location obtained in a different way.
Aber ich habe keine Ahnung, was "ein anderer Weg" wäre, und ich habe einen halben Tag gegoogelt und keine Beispiele gesehen. Ich kenne die Datei und die Überschrift für das Ziel, aber ich kenne die Syntax nicht, um daraus das zu formen, was es will. Das nächste, was ich bekommen habe, ist:
(org-refile nil #("~/Org/bookmarks.org")
Das wird mich dann zur Überschrift auffordern, aber natürlich möchte ich nicht, dass es mich auffordert, ich möchte es bereitstellen.
Ich bin neu bei elisp und habe jede Syntax erraten, die mir einfällt. Weiß jemand, wie man das ausdrückt?
(let* ( (org-archive-location "/path/to/org-file::* NAME_OF_HEADING") (org-archive-save-context-info nil)) (org-archive-subtree))
Ich werde dies wahrscheinlich nicht in eine Antwort umsetzen, da Sie danach gefragt habenorg-refile
, aber das Snippet macht den Job ganz gut. Die beiden Doppelpunkte werden benötigt. Ich benutze dies die ganze Zeit und habe sogar eine benutzerdefinierte Version von erstelltorg-archive-subtree
, um die Nachricht zu unterdrücken, sodass ich nicht Hunderte davon habe, wenn ich meine gesamte Organisationsdatei automatisch neu organisiere.Antworten:
Ich habe mich schon gefragt, wie RFLOC aussehen soll, habe es aber nie untersucht. Wenn Sie sich den Quellcode der Organisation ansehen, sollte es sich um eine Liste handeln, die Folgendes umfasst:
Ich habe nicht mit dem
re
Element experimentiert , aber hier ist eine einfache Funktion, dieorg-refile
mit einem RFLOC aufgerufen wird, das aus einer bestimmten DATEI und HEADING erstellt wurde:Dadurch wird die Zieldatei geöffnet und mithilfe einer Organisationsfunktion die Position der Zielüberschrift ermittelt. Anschließend wird die RFLOC-Liste erstellt, an die übergeben werden soll
org-refile
.quelle
Vielen Dank @glucas, ich habe Ihre Lösung in meine endgültige eingearbeitet. Die Schlüsselinformation war die Kenntnis des Formats des RFLOC. Ich habe mit der Bereitstellung einer Liste mit Dateinamen und Überschriftentext experimentiert, aber mir fehlten diese anderen Elemente und das zusätzliche Null. Das ist, was ich am Ende hatte:
Das Dokument für
save-excursion
gibt an, dass wir an den Ort zurückgebracht werden, an dem wir begonnen haben, aber es scheint nicht so zu funktionieren. Es lässt mich am Zielort, was für den General angemessen sein könnterefile-to
, aber ich wollte nur, dass es die Linie verschiebt und dort bleibt, wo ich war, damit ich darin speichere und wiederherstellerefile-to-bookmark
.Der Workflow, für den dies gedacht ist, besteht darin, dass ich mit einer Liste von HTML-Links beginne, die aus meinem Skript zum Lesen von RSS-Feeds stammen. Ich ließ das Skript ursprünglich Maildir-Dateien für mu4e erstellen, folgte jedoch ohnehin nur den Links zu einem Browser und setzte dann Lesezeichen für die interessierenden, sodass ich jetzt nur eine Liste von
** [[uri][title]]
Zeilen generiere . Nachdem ich dem Link von emacs zum uzbl-Browser gefolgt bin, verwende ich diesen Befehl, um den Link nach dem Setzen von Tags zu meinem bookmarks.org zu verschieben, anstatt Lesezeichen zu setzen (die dieselbe Form von Zeilen erzeugen). Nur ein bisschen schneller, da ich auch die org speed-Befehle verwende,t
um undb
für diesen Befehl zu markieren . Ich bin jetzt glücklich und liebe es, mehr Elisp zu lernen!quelle
re
Element des RFLOC wird ignoriert, soweit ich das beurteilen kann. Es wird in einigen anderen Funktionen in org.el verwendet, die sich mit Zielpositionen befassen.refile-to
Funktion dazu bringen, zur ursprünglichen Position zurückzukehren, indem ich diese am Ende nach demlet
: hinzufügte(switch-to-buffer (current-buffer))
. Dies scheint, als sollte es nichts tun, aber es funktioniert für mich.-push
und-goto
damit ersetzt. Es scheint seltsam, dass Sie sich in einem anderen Puffer befinden, und dennoch wird der aktuelle Puffer als der vorherige betrachtet.