org-mode Befehl zum Erstellen einer neuen Datei aus einem Teilbaum?

5

Gibt es im Emacs-Organisationsmodus einen Befehl wie new-file-from-subtree?

Nach meiner Vorstellung würde dieser Befehl den Teilbaum aus der aktuellen Datei ausschneiden, den Teilbaum in einen neuen Puffer einfügen und dann den neuen Puffer mit dem Namen des Teilbaums speichern.

weißglühender Mann
quelle

Antworten:

4

Ich glaube nicht, dass ein solcher Befehl derzeit existiert. Das Folgende reicht jedoch aus:

(require 'org-element)

(defun zin/org-file-from-subtree (&optional name)
  "Cut the subtree currently being edited and create a new file
from it.

If called with the universal argument, prompt for new filename,
otherwise use the subtree title."
  (interactive "P")
  (org-back-to-heading)
  (let ((filename (cond
                   (current-prefix-arg
                    (expand-file-name
                     (read-file-name "New file name: ")))
                   (t
                    (concat
                     (expand-file-name
                      (org-element-property :title
                                            (org-element-at-point))
                      default-directory)
                     ".org")))))
    (org-cut-subtree)
    (find-file-noselect filename)
    (with-temp-file filename
      (org-mode)
      (yank))))

Da die aktuelle Überschrift nicht auf Ebene 1 angehoben wird, wird die vorhandene Tiefe beibehalten. (Promotion sollte auch machbar sein, würde aber komplexeren Code erfordern). Es gibt auch die Möglichkeit, mit einen neuen Dateinamen einzugeben C-u.

Jonathan Leech-Pepin
quelle
Genial! Gibt es eine Möglichkeit, es .organ den Dateinamen anzuhängen ? Wie wäre es, wenn ich zum ursprünglichen Puffer zurückkehren würde, von dem aus ich gearbeitet habe?
Glühbirne
Auch ich habe versucht, eine Tastenkombination hinzuzufügen, aber es hat nicht funktioniert. Klar mache ich was falsch. (add-hook 'org-mode-hook (lambda () (local-set-key "C-c C-x n" 'my-zin-org-new-file-from-subtree)))
Glühbirne
1
Fügte das ".org" hinzu, das an den Dateinamen angehängt wurde, wenn es aus dem Überschriftentitel erstellt wurde. Die neue Datei wird jetzt auch im Hintergrund geöffnet, die Puffer werden jedoch nicht geändert.
Jonathan Leech-Pepin
1
Ändern Sie die Tastenkombination in "\C-c\C-xn"und es sollte funktionieren.
Jonathan Leech-Pepin