¿Volver a archivar el árbol de esquema en un nuevo archivo de modo org?

13

Recién estoy comenzando con el modo org e imagino un flujo de trabajo mediante el cual capturo nuevas tareas y notas en un archivo de "bandeja de entrada" del modo org. Para las tareas que se convierten en proyectos, me imagino que los vuelvo a archivar en un nuevo archivo de modo de organización que luego se agrega a mi agenda.

El manual del modo org describe cómo rellenar un árbol principalmente como lo estoy buscando, excepto que solo parece permitir rellenar la sección dentro del mismo archivo. Lo que me gustaría hacer es tomar ese árbol y volver a archivarlo en un nuevo archivo (y luego preferiblemente agregar el archivo a la lista de agenda).

Puedo copiar y pegar en un nuevo búfer, y luego agregar el nuevo búfer a la agenda, pero parece que este es el tipo de cosas para las que los dioses del modo de organización tendrían un atajo.

Peter
fuente
¿Por qué quieres hacer un nuevo archivo para cada proyecto? Hay proyectos pequeños y grandes, por lo que puede tener un archivo projects.org como una especie de archivo de incubación que contiene todos los proyectos inicialmente y si un proyecto crece tanto que merece su propio archivo, puede crearlo manualmente.
Tom
Gracias Tom. Ese es mi pensamiento. Las cosas grandes se mueven a su propio archivo cuando se hacen demasiado grandes. Encontré una bandera que me permite volver a archivar en otro archivo en mi lista de agenda, pero solo bajo un encabezado existente. Voy a investigar un poco más para ver si simplemente puedo agregar un árbol a un nuevo archivo de organización vacío ...
Peter
1
@Peter puedes volver a archivar cualquier árbol en otro archivo. pero primero debes agregar el archivo de destino aorg-agenda-files
kindahero
@kindahero: ¿Esa es una opción predeterminada? Tengo un archivo "test1.org" con un árbol que quiero mover a un archivo vacío "test2.org" que se ha guardado y agregado a la agenda con Cc [. Los únicos objetivos de archivo que me da como opciones de finalización son de "test1.org".
Peter

Respuestas:

1

Aquí hay una función de elisp rápida y sucia que podría modificarse como desee.

(defun subtree-to-new-file ()
  (interactivo)
  "descuidadamente ayuda a mover un subárbol de organización a un nuevo archivo"
  (org-copy-subtree nil t)
;;; Esta larga instrucción setq obtiene el título del primer encabezado, para usar como nombre de archivo predeterminado para el nuevo archivo .org.
(setq primer encabezado
  (con-temp-buffer
    (tirón)
    (comienzo del búfer)
    (búsqueda hacia adelante "" nulo nulo 1)
    (setq title-start (punto))
    (fin de línea visual)
    (setq title-end (punto))
    (setq first-header (buffer-substring title-start title-end))
  ))
(setq def-filename (concat primer encabezado ".org"))
(let ((insert-default-directory t))
  (buscar-archivo-otra-ventana  
    (read-file-name "Mover el subárbol al archivo:" def-filename)
  ))
(org-paste-subtree)
;;; este comando final agrega el nuevo archivo .org a la agenda
(org-agenda-file-to-front)
)

Puede probar este código rápidamente pegando en su *scratch*búfer y presionando Ctrl+ j. Luego vaya a un subárbol en un archivo de modo org y presione Alt+ xa M-x subtree-to-new-file.

Si desea que esté en su lugar cada vez que use emacs y no esté familiarizado con elisp, lo más fácil podría ser también pegar este código en algún lugar en su .emacsarchivo de configuración y guardarlo. También puede agregar una línea antes o después de la función para asignar una combinación de teclas. La manera más fácil de hacerlo (pero tal vez no el mejor) sería algo así como: (global-set-key "\C-xw" 'subtree-to-new-file).

Brian Z
fuente
Bueno, realmente me he movido en otra dirección desde aquí, pero esto funciona. Lo pregunté hace mucho tiempo, y es genial ver una respuesta. Gracias por publicar esto, funciona de maravilla. Tal vez intentaré recordar lo que esperaba lograr aquí y comenzar a usar esto.
Peter
5

Para agregar otros búferes de modo de organización a la lista de archivos, deberá agregar una línea como la siguiente a su archivo .emacs. Tomé esto de la configuración de Brent Hansen (Ver aquí )

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

Solo (org-agenda-files :maxlevel .9)se necesita realmente, la otra parte establece un número máximo de niveles para rellenar.

Jonathan Leech-Pepin
fuente
1
Esto me permite agregar un árbol a un árbol existente en un archivo nuevo, pero no a un archivo en blanco recién agregado sin contenido existente. Creo que esto puede ser lo más cerca que pueda.
Peter
También es posible que pueda agregar (setq org-refile-allow-creating-parent-nodes (quote confirm))como se hace referencia en el mismo bloque de código de Bernt (consulte el enlace anterior). Le permitirá agregarlos como nodos principales, no solo como subtítulos. Desafortunadamente, no estoy seguro de si puedes agregar un nuevo archivo sobre la marcha.
Jonathan Leech-Pepin
1
Incluso con esa línea, los archivos en la agenda no aparecen como objetivos de archivo. Parece que solo puedo volver a archivar en un encabezado existente.
Peter
1
¿Qué pasa con (setq org-refile-use-outline-path 'file)? Esto puede hacer que los archivos sean objetivos.
Brady Trainor