2013-03-10 13 views
5

D: C'è un modo per fare transclusione in emacs org-mode?Transclusione ISO in emacs org-mode?

Per "transclusione", intendo cose come, ad un certo punto in fileA.org e fileB.org, "incluso" fileInc.org - e avere l'albero da fileInc.org appaiono in entrambe le posizioni. In realtà appaiono, non solo essere collegati a. (Possibilmente con inclusione condizionale, trasformazione, ad esempio profondità di annidamento (numero di *** s)).

Conosco #setupfile, ma sembra funzionare solo per le modalità, non per il testo reale.

So di http://orgmode.org/manual/Include-files.html, ma AFAIK funzionano solo al momento dell'esportazione.

Sto cercando qualcosa che funzioni in un normale buffer di modalità org emacs. (In realtà, qualcosa che funzionava nei buffer non-org potrebbe essere bello.)

Ho una piastra di caldaia che voglio includere in più file.

Esiste qualcosa del genere?

risposta

7

Hmm ... Non penso che esista qualcosa del genere, ma è stato abbastanza facile scrivere un blocco dinamico per farlo. Il seguente elisp funziona per me:

(defun org-dblock-write:transclusion (params) 
    (progn 
    (with-temp-buffer 
     (insert-file-contents (plist-get params :filename)) 
     (let ((range-start (or (plist-get params :min) (line-number-at-pos (point-min)))) 
      (range-end (or (plist-get params :max) (line-number-at-pos (point-max))))) 
     (copy-region-as-kill (line-beginning-position range-start) 
          (line-end-position range-end)))) 
    (yank))) 

Poi per includere una gamma di linea da un dato file, è possibile creare un blocco dinamico in questo modo:

#+BEGIN: transclusion :filename "~/testfile.org" :min 2 :max 4 
#+END: 

E automaticamente con C-c C-x C-u. Salta gli argomenti min e max per includere l'intero file. Notare che è possibile associare org-update-all-dblocks a un hook, in modo che questo intervallo venga aggiornato ogni volta che si visita il file o si salvi.

Ulteriori informazioni sui blocchi dinamici allo http://orgmode.org/org.html#Dynamic-blocks. Spero che questo ti aiuti!

+0

Qualcuno ha adattato questo per prendere titoli particolari? Non ho ancora trovato nulla di pubblico (ho postato una domanda correlata qui se qualcuno trova o fa qualcosa di simile a questo http://emacs.stackexchange.com/questions/12562/org-mode-headings-in-multiple-places- at-once-transclusion – avv

+0

Sarebbe bello farlo funzionare con i tag come fa # + INCLUDE. – AlwaysLearning

+0

Potresti spiegare, qual è il significato della colonna nel nome della funzione? – AlwaysLearning