我在emacs中安装了haskel-mode
。然后我写下我的.emacs:
(load "~/.emacs.d/haskell-mode/haskell-site-file")
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(add-hook 'haskell-mode-hook 'haskell-font-lock-symbols t)
(put 'downcase-region 'disabled nil)
我必须在我的conf文件中添加哪些内容,emacs可以为Haskell自动完成?或者Haskell模式没有这种可能性?
答案 0 :(得分:18)
如果没有特定于语言的支持,您可以使用标记。这是一种通用的完成机制。
生成TAGS
文件,其中包含标识符列表及其定义位置。 Emacs附带了etags
程序,可以用多种语言来完成,但不是Haskell; ghc附带hasktags
。
使用TAGS
加载M-x visit-tags-table
文件。
标签不依赖于上下文,因此他们会随意地不断推荐类型,值,构造函数等。它们也不会提供高级功能,例如轻松显示值的类型。最重要的标签命令是:
M-TAB
(complete-symbol
)根据加载的代码列表完成标识符。
M-.
(find-tag
)前往定义点标识符的位置,必要时打开包含文件。
M-*
(pop-tag-mark
)返回M-.
之前的位置。
M-x tags-apropos
显示与正则表达式匹配的标识符列表。
有关详细信息,请查看Emacs手册中的“标签”。
对于更加平坦但全自动的机制,有动态缩写功能。 C-M-/
(dabbrev-completion
)查找大多数打开的缓冲区以完成;这完全是与语言无关的,所以它甚至可以在字符串,注释等中找到单词。 M-/
(dabbrev-expand
)类似,但在点之前直接完成最近的匹配。
答案 1 :(得分:10)
ghc-mod为Emacs中的Haskell提供了一些完成,以及使用hlint和ghc进行检查。与M- /结合使用,对我来说已经足够了。
答案 2 :(得分:8)
haskell-mode
目前没有提供此类可能性。有一些关于为CEDET实现haskell解析器的工作 - 在这种情况下,用户将自动获得自动完成功能。但是这项工作已经开始了很久以前......
答案 3 :(得分:7)
我setup稍微复杂一些。它使用auto-complete基础设施 显示自动类似于传统IDE的候选下拉列表。我下载了this script硬编码所有关键字。除此之外,我使用ghc-mod生成模块名称。
答案 4 :(得分:6)
作为一种“廉价而愉快”的自动完成机制,请不要忽视M-/
。它完全是启发式和语言无关的,但却非常有效。
答案 5 :(得分:2)
除了自动完成您自己的代码之外,您还可以使用company-ghc为标准库,导入名称和编译指示名称获得自动完成(使用apidocs)。我发现this guide非常有帮助。请注意,我还没有让它完全为我自己工作,但我觉得我很接近: - )