Haskell在Emacs中使用haskell模式自动完成
我在emacs中安装了haskel-mode
。然后,我写在我的.emacs:Haskell在Emacs中使用haskell模式自动完成
(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)
我必须在Emacs中可以自动完成对哈斯克尔我的conf文件中添加什么?或者Haskell模式不存在这种可能性?
当没有语言特定的支持时,可以使用标签。这是一个通用的完成机制。
生成一个
TAGS
文件,其中包含一个标识符列表及其定义的位置。 Emacs附带etags
程序可以在很多语言中执行此操作,但不是Haskell; ghc附带hasktags
。用
M-x visit-tags-table
加载TAGS
文件。
标签不是依赖于上下文的,所以他们会随便地提示类型,值,构造函数等。他们也不会提供高级功能,例如轻松显示值的类型。最重要的标记的命令是:
M-TAB
(complete-symbol
)根据标签的加载列表完成的标识符。M-.
(find-tag
)转到定义点标识符的地方,如果需要打开包含文件。M-*
(pop-tag-mark
)回到原来的位置M-.
。M-x tags-apropos
显示了匹配正则表达式的标识符列表。
有关更多信息,请查看Emacs手册中的“标签”。
对于偶较粗略,但全自动机构,有动态缩写特征。 C-M-/
(dabbrev-completion
)在大多数开放缓冲区中查找完成;这完全是与语言无关的,所以它甚至会在字符串,评论等等中找到单词。 M-/
(dabbrev-expand
)是相似的,但直接完成到最接近的匹配点之前。
haskell-mode
目前没有提供这种可能性。有关CEDET的haskell解析器的实现方面的一些工作 - 在这种情况下,用户将自动获得自动完成功能。但是这项工作并没有太多时间开始......
我的setup稍微复杂一点。它使用auto-complete基础架构,其中 显示候选人的下拉列表,自动类似于传统IDE。我下载了this script硬编码的所有关键字。除此之外,我使用ghc-mod来生成模块名称。
作为一种“便宜而开朗”的自动补全机制,请不要忽略M-/
。这完全是启发式和独立于语言的,但却非常有效。
除了为自己的代码自动完成之外,还可以使用company-ghc为标准库,导入名称和编译指示名称获得自动完成(使用apidocs)。我发现this guide非常有帮助。请注意,我还没有完全为自己工作,但我可以感觉到我很接近:-)
你知道在CEDET上Haskell的工作进展如何吗? – 2011-10-26 20:27:55