Emacs Org-Mode和Literate Haskell

Fal*_*lko 8 emacs haskell org-mode

在组织模式中,以冒号开头的行被格式化为源代码.(http://orgmode.org/manual/Literal-examples.html)

在有文化的Haskell中,源代码行以更大的符号开头.

我想用org-mode markdown编写有文化的Haskell,这是我目前的首选格式.

我假设我无法更改Haskell编译器,我的问题是:

在org模式下,我可以以某种方式使代码行标记更大吗?(我试图自己找到它,但是因为org.el是一个865k文件,22k loc,我还是迷路了.)

har*_*arr 5

不是你的问题的确切答案,而是我如何用org编写有文化的Haskell的例子: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上的autorenders(虽然autorendering中有一些东西只适用于我没有花时间修复的HTML).


小智 5

我基本上有相同的动机,为我的 Haskell(Bird 风格)文学程序使用 org-mode 标记。我最终使用了多模式,它允许将多个 emacs 主要模式用于同一缓冲区中的不同区域(还有其他模式,但多模式适合我的要求)。我编写了haskell-org,它使 org-mode 和 haskell-mode 能够通过多模式在单个缓冲区中使用。

博客条目中的更多详细信息。该设置运行良好,我将其用于 Haskell 编码。


Fal*_*lko 0

所以,显然这不是使用 org.

这样做的主要问题是 org-mode 和 haskell-mode 都是主要模式。所以我不能并行使用它们。

尽管如此,这就是它的工作原理,它是一个黑客,我不确定副作用..:

在 emacs 中查看文件时,(a?) 代码触发器似乎位于 org-activate-code (org.el) 中,但这不用于导出。对于 HTML 导出,我也必须接触 org-html.el。

我变了:

在 org.el 第 5378 行中,函数 org-activate-code 来自

"^[ \t]*\\(:\\(?: .*\\|$\\)\n?\\)"
Run Code Online (Sandbox Code Playgroud)

"^[ \t]*\\([:>]\\(?: .*\\|$\\)\n?\\)"
Run Code Online (Sandbox Code Playgroud)

在 org-html.el 第 1508 和 1516 行中,函数 org-export-as-html 来自

(string-match "^[ \t]*:\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)
Run Code Online (Sandbox Code Playgroud)

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)" line)
Run Code Online (Sandbox Code Playgroud)

和(第 1516 行)

(string-match "^[ \t]*[:>]\\(\\([ \t]\\|$\\)\\(.*\\)\\)"
Run Code Online (Sandbox Code Playgroud)

看着它,我认为这必须适应人们打算使用的每个出口渠道。