Як отримати org-режим, щоб генерувати код кілька разів в одному файлі без надмірності?

(Відповідно до Чи є спосіб використовувати org-mode для відтворення згенерованого коду? )

#+BEGIN_SRC sh :exports results :results output :wrap SRC haskell
sed '/^elts/,$p' -n Heap03.hs
#+END_SRC

дозволяє мені вилучити код Haskell з файлу, щоб він відображався в експорті org-mode. Це ефективно безпечніша і більш ідіоматична версія хаку, яку я придумав:

#+BEGIN_SRC sh :exports results :results output verbatim raw
echo '#+BEGIN_SRC haskell'
sed '/^elts/,$p' -n Heap03.hs
echo '#+END_SRC'
#+END_SRC

Тепер я хочу більше абстракції. Наприклад:

#+NAME: inline
#+BEGIN_SRC sh :exports none :results output verbatim raw
echo '#+BEGIN_SRC haskell'
echo "[[./$FILE][$FILE]]"
sed '/^elts/,$p' -n $FILE
echo '#+END_SRC'
#+END_SRC

#+CALL: inline(FILE="Heap01.hs")
#+CALL: inline(FILE="Heap02.hs")

Два критерію, які я намагаюся задовольнити (і виникають проблеми), є:

  1. Я повинен мати посилання на файл, автоматично вставлений над кодом Haskell.
  2. Дзвінок повинен бути максимально мінімальним.

Я не з'ясував, як виконати перший критерій за допомогою : wrap , а найкраще, що я можу зробити для другого критерію, є # + CALL: inline (FILE = "Heap01.hs "): оберніть SRC haskell , що набагато важкий для мого смаку.

Дякую!

0

1 Відповіді

Як щодо (примітка: після назви та визначення var: var):

#+name: inline
#+BEGIN_SRC sh :exports none :results output verbatim raw :var FILE=""
echo "[[./$FILE][$FILE]]"
echo '#+BEGIN_SRC haskell'
sed '/^elts/,$p' -n $FILE
cat $FILE
echo '\n#+END_SRC'
#+END_SRC

А потім (з результатами сировини):

#+CALL: inline(FILE="Heap01.hs") :results raw
1
додано
(Відсутність товстої кишки була просто помилкою транскрипції з мого боку). Це зламається, якщо файл Haskell містить "# + END_SRC" у розділі, який витягується, чи не так? Я намагався написати функцію org-mode , яка викликає функцію org-mode , але я не міг це зробити. Мені цікаво, чи варто просто викинути якусь проблему з цією проблемою.
додано Автор jasonwryan, джерело
Немає підстав. Частково я вивчаю функціональність org-mode ; частково, мій перший інстинкт полягав у тому, щоб зробити кілька схожих файлів Haskell, щоб продемонструвати прогрес, але відображати лише окремі частини їх вбудованим, і я просто слідкую за нею.
додано Автор jasonwryan, джерело
ви б хотіли уникнути # + END_SRC як, # + END_SRC. Також уникайте будь-яких рядків, починаючи з * як, *. Здається, ви йдете протилежним способом засмучення. Чому б не поставити свій код haskell в org, а використовувати зв'язок, щоб вийти, а не навпаки?
додано Автор Maximus Minimus, джерело