Emacs Org-Mode и грамотный Haskell

В режиме org строка, начинающаяся с двоеточия, форматируется как исходный код. ( http://orgmode.org/manual/Literal-examples.html)

В грамотном Haskell строки исходного кода начинаются со знака, превышающего знак.

Я хочу написать грамотный Haskell с уценкой в ​​режиме org, мой текущий предпочтительный формат.

Поскольку я предполагаю, что не могу изменить компилятор Haskell, мой вопрос:

Можно ли как-то сделать знак "больше", чем подписать маркер строки кода в режиме org? (Я пытался найти его сам, но так как org.el - это файл 865k, loc 22k, я все еще потерян.)

4 ответа

Решение

Таким образом, очевидно, что это не те способы использования орг.

Основная проблема при этом заключается в том, что оба, org-mode и haskell-mode, являются основными режимами. Поэтому я не могу использовать их параллельно.

Тем не менее, вот как это работает, это взломать, и я не уверен в побочных эффектах..:

При просмотре файла в emacs триггер кода (a?) Выглядит как org-activ-code (org.el), но он не используется для экспорта. Для экспорта HTML я должен был также коснуться org-html.el.

Я изменился:

В строке org.el 5378, функция org-activ-code из

"^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)"

в

"^[ \t]*\\([:>]\\(?: .*\\|$\\)\n?\\)"

И в строке 1508 и 1516 org-html.el, функция org-export-as-html из

(string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)

в

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)

и (строка 1516)

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)"

Глядя на это, я предполагаю, что это должно быть адаптировано для каждого канала экспорта, который мы собираемся использовать.

Не точный ответ на ваш вопрос, но пример того, как я пишу на грамотном языке Haskell, используя org: https://github.com/haroldcarr/make-mp3-copies

README.org - это грамотный Haskell, MakeMP3Copies.hs - это итоговый файл haskell, который "запутывается" из файла.org.

Я экспортирую в HTML и публикую в своем блоге: http://haroldcarr.com/posts/2013-09-11-flac-to-mp3-via-haskell-shelly-and-ffmpeg.html

README.org также автоматически выполняет рендеринг на github (хотя в рендеринге есть некоторые вещи, предназначенные только для HTML, которые я не потратил время на исправление).

По сути, у меня была та же мотивация - использовать разметку в режиме org для моих грамотных программ на Haskell (стиль Bird). В итоге я использовал мультирежим, который позволяет использовать несколько основных режимов emacs для разных регионов в одном и том же буфере (есть и другие, но многорежимный соответствует моим требованиям). Я приготовил haskell-org, который позволяет использовать режим org и haskell-mode в одном буфере через многорежимный режим.

Подробнее в этой записи блога. Настройка работает достаточно хорошо, и я использую ее для кодирования на Haskell.

Я немного опоздал, но недавно я начал работать над проблемами с 99 Haskell и решил собрать свою работу в файле режима org.

Orgmode способ грамотного программирования (насколько я понимаю), заключается в инкапсуляции блоков исходного кода в блоки BEGIN/END. Например,

#+BEGIN_SRC hs :tangle yes
myReverse :: [a] -> [a]
myReverse l = myReverse' l []
myReverse' [] accu = accu
myReverse' (x:xs) accu = myReverse' xs (x:accu)
#+END_SRC

Такой структурированный организационный документ может быть

  • экспорт Экспорт - это преобразование файла orgmode в один из нескольких других форматов файлов с помощью внутреннего интерфейса. Некоторые из этих форматов PDF, LateX или HTML.

  • Запутанный Это идет в направлении грамотного программирования и ткачества. Блоки кода можно экспортировать в чистые исходные файлы. Это то, что я делаю в своем файле 99 проблем.

  • Выполненные блоки исходного кода могут быть выполнены, и результат этого выполнения может быть помещен непосредственно в файл orgmode. Я еще не пробовал это для haskell.

Вы можете взглянуть на мои попытки в github: https://github.com/dischoen/H99 Там я связываю файл orgmode с двумя файлами haskell, модулем и тестовым набором, которые затем можно протестировать в ghc или ghci.

Другие вопросы по тегам