Emacs 24.1& Haskell语法突出显示Prelude和常用函数

时间:2012-07-07 20:35:15

标签: haskell emacs

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

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