2013-03-10 10 views
5

Pytanie: czy istnieje sposób na transclusion w trybie emacs org?Transclusion ISO w trybie emacs org?

Przez "transclusion", mam na myśli rzeczy takie jak, w pewnym momencie w fileA.org i fileB.org, "w tym" fileInc.org - i posiadanie drzewa z fileInc.org pojawiają się w obu miejscach. W rzeczywistości pojawiają się, a nie tylko są połączone. (Prawdopodobnie z warunkowym włączeniem, transformacją, np. Głębokością zagnieżdżenia (liczba *** s)).

Wiem o #setupfile, ale to wydaje się działać tylko dla trybów, a nie dla prawdziwego tekstu.

Wiem o http://orgmode.org/manual/Include-files.html, , ale AFAIK działają tylko w czasie eksportu.

Szukam czegoś, co działa w normalnym buforze trybu emacs. (W rzeczywistości coś, co działało w buforach innych niż tryb org, może być miłe.)

Mam płytę kotła, którą chcę dołączyć do wielu plików.

Czy coś takiego istnieje?

Odpowiedz

7

Hmm ... Nie sądzę, że coś takiego istnieje, ale łatwo było napisać blok dynamiczny, aby to zrobić. Poniższy elisp działa dla mnie:

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

Następnie obejmuje szereg linii z danego pliku, można utworzyć dynamiczny blok tak:

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

i Auto-wypełnianie z C-c C-x C-u. Pomiń min i max argumentów, aby uwzględnić cały plik. Zauważ, że możesz związać org-update-all-dblocks z hakiem, aby ten zakres był aktualizowany za każdym razem, gdy odwiedzasz plik lub zapisujesz.

Więcej informacji na temat bloków dynamicznych pod adresem http://orgmode.org/org.html#Dynamic-blocks. Mam nadzieję że to pomoże!

+0

Czy ktoś zaadaptował to, aby uzyskać określone nagłówki? Nie znalazłem jeszcze nic publicznie (zamieściłem pokrewne pytanie tutaj, jeśli ktoś znalazł lub zrobił coś takiego http://emacs.stackexchange.com/questions/12562/org-mode-headings-in-multiple-places- at-once-transclusion – avv

+0

Byłoby miło, gdyby działało z tagami tak, jak to robi '# + INCLUDE' . – AlwaysLearning

+0

Czy mógłbyś wyjaśnić, jakie jest znaczenie kolumny w nazwie funkcji? – AlwaysLearning