1

关于 Emacs 24.1 和 Haskell 的另一个问题。我注意到它确实为我缩进并且它为我做了非常基本的突出显示(例如,类型为绿色)。但是开箱即用的 Emacs 24.1 没有突出显示常用功能,如foldr,map等。Emacs 和 haskell-mode 是否有能力突出常用功能?

4

1 回答 1

4

从根本上说,标准库函数就是函数。事实上,根据您的进口,其中任何一个都可能是用户提供的,而不是标准前奏!这实际上经常发生——例如,如果你想使用Control.Category你通常隐藏id并用多态版本替换它。

所以简而言之,没有真正的理由突出标准功能。所以我真的怀疑这个功能是否存在于标准的 Haskell 模式中。

也就是说,这是 Emacs。您可以轻松添加任何您想要的内容。如果您有要突出显示的所有函数名称的列表,那么将其添加到 Haskell 模式中应该不难。

您可以在文件中使用类似这样的代码将新函数添加到 haskell 模式突出显示.emacs

(font-lock-add-keywords 'haskell-mode 
                        '(("\\<\\(map\\|foldr\\|foldl\\)\\>" 1 
                           '(:foreground "#3366FF") t)))

看起来怪异的字符串是一个 Emacs 风格的正则表达式。\<与 和\>类似\b,并且用于组\(内的交替。由于没有正则表达式文字,每个都必须在字符串中转义。正则表达式将更具可读性,因为. 您可以通过向表达式添加新案例来轻松添加其他函数名称。\|\)\\<\(map\|foldr\|foldl\)\>

(:foreground "#3366FF")只是将文本的颜色设置为相当吸引人的蓝色阴影。

于 2012-07-07T20:41:02.477 回答