Re-déposer l'arborescence des contours dans un nouveau fichier en mode org?

13

Je ne fais que commencer avec le mode org et j'imagine un flux de travail par lequel je capture de nouvelles tâches et notes dans un fichier "boîte de réception" en mode org. Pour les tâches qui se développent en projets, j'imagine les refiler dans un nouveau fichier org-mode qui est ensuite ajouté à mon agenda.

Le manuel en mode org décrit le rechargement d'un arbre principalement comme je le recherche, sauf qu'il ne semble autoriser que le rechargement de la section dans le même fichier. Ce que j'aimerais faire, c'est prendre cet arbre et le réarchiver dans un nouveau fichier (et ensuite ajouter de préférence le fichier à la liste de l'agenda).

Je peux copier-coller dans un nouveau tampon, puis ajouter le nouveau tampon à l'ordre du jour, mais il semble que c'est le genre de chose pour laquelle les dieux en mode org auraient un raccourci.

Peter
la source
Pourquoi voulez-vous créer un nouveau fichier pour chaque projet? Il y a des petits projets et des grands, vous pouvez donc avoir un fichier projects.org comme une sorte de fichier d'incubation qui contient tous les projets au départ et si un projet devient si gros qu'il mérite son propre fichier, vous pouvez le créer manuellement.
Tom
Merci, Tom. C'est ma pensée. Les grandes choses se déplacent dans leur propre fichier lorsqu'elles deviennent trop grandes. J'ai trouvé un indicateur qui me permet de refiler vers un autre fichier dans ma liste d'agenda, mais uniquement sous une rubrique existante. Je vais creuser un peu plus pour voir si je peux simplement ajouter un arbre à un nouveau fichier org vide ...
Peter
1
@Peter, vous pouvez archiver n'importe quel arbre dans un autre fichier. mais vous devez d'abord ajouter le fichier de destination àorg-agenda-files
kindahero
@kindahero: Est-ce une option par défaut? J'ai un fichier "test1.org" avec une arborescence que je souhaite déplacer vers un fichier vide "test2.org" qui a été enregistré et ajouté à l'agenda avec Cc [. Les seules cibles de refile qu'il me donne en tant qu'options d'achèvement proviennent de «test1.org».
Peter

Réponses:

1

Voici une fonction elisp rapide et sale qui pourrait être modifiée à votre guise.

(defun subtree-to-new-file ()
  (interactif)
  "aide négligemment à déplacer un sous-arbre org vers un nouveau fichier"
  (org-copy-subtree nil t)
;;; Cette longue instruction setq obtient le titre du premier en-tête, à utiliser comme nom de fichier par défaut pour le nouveau fichier .org.
(setq premier titre
  (avec-temp-buffer
    (coup sec)
    (début de tampon)
    (recherche "" nil nil 1)
    (setq title-start (point))
    (fin de ligne visuelle)
    (setq titre-fin (point))
    (setq first-header (buffer-substring title-start title-end))
  ))
(setq def-filename (concat première tête ".org"))
(let ((insert-default-directory t))
  (trouver-fichier-autre-fenêtre  
    (read-file-name "Déplacer la sous-arborescence vers le fichier:" def-filename)
  ))
(org-coller-sous-arbre)
;;; cette commande finale ajoute le nouveau fichier .org à l'agenda
(org-agenda-file-to-front)
)

Vous pouvez essayer ce code rapidement en collant dans votre *scratch*tampon et en appuyant sur Ctrl+ j. Ensuite, accédez à une sous-arborescence dans un fichier en mode org et appuyez sur Alt+ xpour M-x subtree-to-new-file.

Si vous voulez qu'il soit en place à chaque fois que vous utilisez emacs et que vous ne connaissez pas du tout elisp, la chose la plus simple pourrait être de coller ce code quelque part dans votre .emacsfichier de configuration et de l'enregistrer. Vous pouvez également ajouter une ligne avant ou après la fonction pour lui donner une liaison de touches. La meilleure façon de le faire (mais peut - être pas le meilleur) serait quelque chose comme: (global-set-key "\C-xw" 'subtree-to-new-file).

Brian Z
la source
Eh bien, j'ai vraiment évolué dans une autre direction à partir d'ici, mais cela fait l'affaire. J'ai posé cette question il y a longtemps et c'est formidable de voir une réponse. Merci d'avoir posté ceci - cela fonctionne comme un charme. Je vais peut-être essayer de me souvenir de ce que j'espérais accomplir ici et commencer à l'utiliser.
Peter
5

Pour ajouter d'autres tampons en mode organisation à la liste de refichage, vous devrez ajouter une ligne comme celle-ci à votre fichier .emacs. Je l'ai pris de la configuration de Brent Hansen (voir ici )

; 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))))

Seul (org-agenda-files :maxlevel .9)est réellement nécessaire, l'autre partie définit un nombre maximum de niveaux à refiler.

Jonathan Leech-Pepin
la source
1
Cela me permet d'ajouter une arborescence à une arborescence existante dans un nouveau fichier, mais pas à un nouveau fichier vierge sans contenu existant. Je pense que cela peut être aussi proche que possible.
Peter
Vous pourriez également être en mesure d'ajouter (setq org-refile-allow-creating-parent-nodes (quote confirm))comme référencé dans le même bloc de code de Bernt (voir le lien ci-dessus). Il vous permettra de les ajouter en tant que nœuds parents, pas seulement en tant que sous-titres. Je ne sais pas si vous pouvez malheureusement ajouter un nouveau fichier lors de vos déplacements.
Jonathan Leech-Pepin
1
Même avec cette ligne, les fichiers de l'agenda ne s'affichent pas comme des cibles de nouveau fichier. Il semble que je ne peux que refiler à un en-tête existant.
Peter
1
Et avec (setq org-refile-use-outline-path 'file)? Cela peut faire des fichiers des cibles.
Brady Trainor