Включение ISO в emacs org-mode

В: есть ли способ сделать включение в emacs org-mode?

Под «включением» я подразумеваю такие вещи, как в какой-то момент в файлах fileA.org и fileB.org «включение» fileInc.org — и наличие дерева из fileInc.org в обоих местах. На самом деле появляются, а не просто связаны. (Возможно с условным включением, преобразованием, например глубиной вложенности (количество ***s)).

Я знаю о #setupfile, но, похоже, это работает только для режимов, а не для реального текста.

Я знаю о http://orgmode.org/manual/Include-files.html, но, насколько я знаю, они работают только во время экспорта.

Я ищу что-то, что работает в обычном буфере emacs org-mode. (На самом деле, что-то, что работает в буферах, отличных от организационного режима, может быть хорошим.)

У меня есть шаблонная пластина, которую я хочу включить в несколько файлов.

Существует ли что-то подобное?


person Krazy Glew    schedule 10.03.2013    source источник


Ответы (1)


Хм... Я не думаю, что что-то подобное существует, но для этого было достаточно просто написать динамический блок. У меня работает следующий элисп:

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

Затем, чтобы включить диапазон строк из данного файла, вы можете создать динамический блок следующим образом:

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

И автоматически заполните C-c C-x C-u. Пропустите аргументы min и max, чтобы включить весь файл. Обратите внимание, что вы можете привязать org-update-all-dblocks к хуку, чтобы этот диапазон обновлялся всякий раз, когда вы посещаете файл или сохраняете его.

Дополнительные сведения о динамических блоках см. на странице http://orgmode.org/org.html#Dynamic-blocks. Надеюсь это поможет!

person Rob    schedule 12.03.2013
comment
Кто-нибудь адаптировал это, чтобы брать определенные заголовки? Я еще не нашел ничего общедоступного (я разместил здесь соответствующий вопрос, если кто-нибудь найдет или сделает что-то подобное emacs.stackexchange.com/questions/12562/ - person avv; 03.06.2015
comment
Было бы неплохо заставить его работать с тегами так, как это делает #+INCLUDE. - person AlwaysLearning; 14.06.2017
comment
Не могли бы вы объяснить, что означает столбец в названии функции? - person AlwaysLearning; 14.06.2017