Ri-file struttura di struttura in un nuovo file in modalità org?


13

Sto appena iniziando con la modalità organizzazione e immagino un flusso di lavoro in base al quale acquisisco nuove attività e note in un file "Posta in arrivo" della modalità organizzazione. Per le attività che si trasformano in progetti, immaginerei di ricompilarli in un nuovo file in modalità org che viene quindi aggiunto alla mia agenda.

Il manuale della modalità org descrive il refiling di un albero principalmente nel modo che sto cercando, tranne per il fatto che sembra consentire solo il refiling della sezione all'interno dello stesso file. Quello che mi piacerebbe fare è prendere quell'albero e inserirlo nuovamente in un nuovo file (e quindi preferibilmente aggiungere il file all'elenco dell'agenda).

Posso copiare e incollare in un nuovo buffer e quindi aggiungere il nuovo buffer all'agenda, ma sembra che questo sia il genere di cose per cui gli dei in modalità org avrebbero una scorciatoia.


Perché vuoi creare un nuovo file per ogni progetto? Esistono progetti piccoli e grandi, quindi puoi avere un file projects.org come una sorta di file di incubazione che contiene inizialmente tutti i progetti e se un progetto diventa così grande da meritare un suo file, puoi crearlo manualmente.
Tom

Grazie Tom. Questo è il mio pensiero. Le cose grandi si spostano nel loro file quando diventano troppo grandi. Ho trovato una bandiera che mi permette di refilare su un altro file nella mia lista dell'agenda, ma solo sotto una voce esistente. Ho intenzione di scavare un po 'di più per vedere se posso semplicemente aggiungere un albero a un nuovo file org vuoto ...
Peter

1
@Peter puoi riutilizzare qualsiasi albero in un altro file. ma prima devi aggiungere il file di destinazione aorg-agenda-files
kindahero

@kindahero: è un'opzione predefinita? Ho un file "test1.org" con un albero che voglio spostare in un file vuoto "test2.org" che è stato salvato e aggiunto all'agenda con Cc [. L'unico obiettivo refile che mi dà come opzioni di completamento proviene da "test1.org".
Peter,

Risposte:


1

Ecco una funzione elisp veloce e sporca che potrebbe essere modificata come si desidera.

(defun subtree-to-new-file ()
  (Interattivo)
  "aiuta sciatto nello spostare una sottostruttura dell'organizzazione in un nuovo file"
  (org-copy-subtree nil t)
;;; Questa lunga istruzione setq ottiene il titolo della prima intestazione, da usare come nome file predefinito per il nuovo file .org.
(setq prima voce
  (Con-temp-buffer
    (Yank)
    (Inizio-of-buffer)
    (ricerca "" zero zero 1)
    (setq title-start (punto))
    (End-of-visual-line)
    (setq titolo-fine (punto))
    (setq first-header (buffer-sottostringa titolo-inizio titolo-fine))
  ))
(setq def-nomefile (concat prima intestazione ".org"))
(let ((insert-default-directory t))
  (Find-file-other-window  
    (read-file-name "Sposta sottotree in file:" def-filename)
  ))
(Org-incolla-sotto-albero)
;;; questo comando finale aggiunge il nuovo file .org all'agenda
(Org-giorno-file-to-front)
)

Puoi provare questo codice incollandolo nel *scratch*buffer e premendo Ctrl+ j. Quindi vai a una sottostruttura in un file in modalità org e premi Alt+ xsu M-x subtree-to-new-file.

Se vuoi che sia a posto ogni volta che usi emacs e non hai familiarità con elisp, la cosa più semplice potrebbe essere anche incollare questo codice da qualche parte nel tuo .emacsfile di configurazione e salvarlo. Puoi anche aggiungere una riga prima o dopo la funzione per assegnarle una combinazione di tasti. Il modo più semplice per farlo (ma forse non il migliore) sarebbe qualcosa di simile: (global-set-key "\C-xw" 'subtree-to-new-file).


Bene, sono davvero passato in un'altra direzione da qui, ma questo è il trucco. L'ho chiesto molto tempo fa ed è bello vedere una risposta. Grazie per aver pubblicato questo, funziona come un fascino. Forse proverò a ricordare ciò che speravo di realizzare qui, e inizierò a usarlo.
Peter,

5

Per aggiungere altri buffer in modalità org all'elenco dei refile, dovrai aggiungere una riga come quella seguente al tuo file .emacs. L'ho preso dalla configurazione di Brent Hansen (Vedi qui )

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

In (org-agenda-files :maxlevel .9)realtà è necessario solo, l'altra parte imposta un numero massimo di livelli su cui eseguire il refile.


1
Ciò mi consente di aggiungere un albero a un albero esistente in un nuovo file, ma non a un file vuoto, appena aggiunto senza contenuto esistente. Penso che questo potrebbe essere il più vicino possibile.
Peter,

Potresti anche essere in grado di aggiungere (setq org-refile-allow-creating-parent-nodes (quote confirm))come indicato nello stesso blocco di codice da Bernt (vedi link sopra). Ti permetterà di aggiungerli come nodi principali, non solo come sottotitoli. Sfortunatamente, non sono sicuro di poter aggiungere un nuovo file mentre sei in viaggio.
Jonathan Leech-Pepin,

1
Anche con quella riga, i file nell'agenda non vengono visualizzati come obiettivi di refile. Sembra che posso solo refilare a un'intestazione esistente.
Peter,

1
Che ne dici di (setq org-refile-use-outline-path 'file)? Questo può rendere i file come target.
Brady Trainor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.