Gliederungsbaum in neue Organisationsdatei umlagern?


13

Ich fange gerade mit dem Organisationsmodus an und stelle mir einen Workflow vor, in dem ich neue Aufgaben und Notizen in einer "Inbox" -Datei im Organisationsmodus aufzeichne. Für Aufgaben, die zu Projekten werden, stelle ich mir vor, sie in eine neue Datei im Organisationsmodus umzuwandeln, die dann meiner Agenda hinzugefügt wird.

Das Handbuch für den Organisationsmodus beschreibt das Neuformulieren eines Baums größtenteils so, wie ich es suche, mit der Ausnahme, dass es nur das Neuformulieren des Abschnitts in derselben Datei zu ermöglichen scheint. Was ich tun möchte, ist, diesen Baum zu nehmen und ihn in eine neue Datei umzuwandeln (und die Datei dann vorzugsweise der Agenda-Liste hinzuzufügen).

Ich kann kopieren und in einen neuen Puffer einfügen und dann den neuen Puffer zur Agenda hinzufügen, aber es scheint so, als ob die Org-Modus-Götter eine Abkürzung dafür hätten.


Warum möchten Sie für jedes Projekt eine neue Datei erstellen? Es gibt kleine und große Projekte. Sie können also eine projects.org-Datei als eine Art Inkubationsdatei haben, die zunächst alle Projekte enthält. Wenn ein Projekt so groß wird, dass es eine eigene Datei verdient, können Sie es manuell erstellen.
Tom

Danke, Tom. So denke ich. Große Dinge werden in ihre eigene Datei verschoben, wenn sie zu groß werden. Ich habe ein Flag gefunden, mit dem ich auf eine andere Datei in meiner Agenda-Liste zurückgreifen kann, jedoch nur unter einer vorhandenen Überschrift. Ich werde ein bisschen mehr graben, um zu sehen, ob ich einfach einen Baum zu einer neuen leeren Organisationsdatei hinzufügen kann ...
Peter

1
@ Peter Sie können jeden Baum in eine andere Datei umfiltern. aber zuerst müssen Sie die org-agenda-files
Zieldatei

@kindahero: Ist das eine Standardoption? Ich habe eine Datei "test1.org" mit einem Baum, den ich in eine leere Datei "test2.org" verschieben möchte, die mit Cc [gespeichert und der Agenda hinzugefügt wurde. Die einzigen Refile-Ziele, die ich als Abschlussoptionen erhalten habe, stammen von "test1.org".
Peter

Antworten:


1

Hier ist eine schnelle und schmutzige Elisp-Funktion, die nach Belieben geändert werden kann.

(defun subtree-to-new-file ()
  (interaktiv)
  "Hilft schlampig beim Verschieben eines Org-Teilbaums in eine neue Datei"
  (org-copy-subtree nil t)
;;; Diese lange setq-Anweisung erhält den Titel der ersten Überschrift, der als Standarddateiname für die neue .org-Datei verwendet wird.
(setq erste Überschrift
  (with-temp-buffer
    (Ruck)
    (Pufferanfang)
    (search-forward "" nil nil 1)
    (setq title-start (Punkt))
    (Ende der visuellen Linie)
    (setq Titelende (Punkt))
    (setq erste Überschrift (Puffer-Teilzeichenfolge Titel-Anfang Titel-Ende))
  ))
(setq def-filename (concat erste Überschrift ".org"))
(let ((Standardverzeichnis einfügen t))
  (find-file-other-window  
    (read-file-name "Teilbaum in Datei verschieben:" def-filename)
  ))
(org-paste-subtree)
;;; Mit diesem letzten Befehl wird die neue .org-Datei zur Agenda hinzugefügt
(org-agenda-file-to-front)
)

Sie können diesen Code schnell ausprobieren, indem Sie ihn in den *scratch*Puffer einfügen und Ctrl+ drücken j. Gehen Sie dann zu einem Teilbaum in einer Datei im Organisationsmodus und drücken Sie Alt+ xbis M-x subtree-to-new-file.

Wenn Sie möchten, dass dieser Code bei jeder Verwendung von Emacs vorhanden ist und Sie mit Elisp nicht vertraut sind, können Sie ihn am einfachsten auch irgendwo in Ihre .emacsKonfigurationsdatei einfügen und speichern. Sie können auch vor oder nach der Funktion eine Zeile einfügen, um ihr eine Tastenkombination zu geben. Der einfachste Weg , das zu tun (aber vielleicht nicht die besten) würde so etwas sein: (global-set-key "\C-xw" 'subtree-to-new-file).


Nun, ich bin von hier aus wirklich in eine andere Richtung gegangen, aber das macht den Trick. Ich habe das vor langer Zeit gefragt, und es ist toll, eine Antwort zu sehen. Vielen Dank für die Veröffentlichung - es funktioniert wie ein Zauber. Vielleicht werde ich versuchen, mich daran zu erinnern, was ich mir hier erhofft hatte, und damit anfangen.
Peter

5

Um der Wiederherstellungsliste weitere Puffer im Organisationsmodus hinzuzufügen, müssen Sie Ihrer .emacs-Datei eine Zeile wie die folgende hinzufügen. Ich habe das Brent Hansens Konfiguration entnommen (siehe hier )

; Targets include this file and any file contributing to the agenda - up to 9 levels deep
(setq org-refile-targets (quote ((nil :maxlevel . 9)
                                 (org-agenda-files :maxlevel . 9))))

Nur (org-agenda-files :maxlevel .9)wird tatsächlich benötigt, der andere Teil legt eine maximale Anzahl von Ebenen fest, auf die zurückgegriffen werden soll.


1
Auf diese Weise kann ich einen Baum zu einem vorhandenen Baum in einer neuen Datei hinzufügen, jedoch nicht zu einer leeren, neu hinzugefügten Datei ohne vorhandenen Inhalt. Ich denke, das kann so nah sein, wie ich komme.
Peter

Möglicherweise können Sie auch hinzufügen, (setq org-refile-allow-creating-parent-nodes (quote confirm))wie im selben Codeblock von Bernt angegeben (siehe Link oben). Sie können sie als übergeordnete Knoten und nicht nur als Unterüberschriften hinzufügen. Ich bin mir nicht sicher, ob Sie auf diese Weise leider unterwegs eine neue Datei hinzufügen können.
Jonathan Leech-Pepin

1
Selbst mit dieser Zeile werden die Dateien in der Agenda nicht als Refile-Ziele angezeigt. Es scheint, dass ich nur auf einen vorhandenen Header zurückgreifen kann.
Peter

1
Was ist mit (setq org-refile-use-outline-path 'file)? Dies kann dazu führen, dass Dateien als Ziele festgelegt werden.
Brady Trainor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.