Haskell模式下的ghci制表符自动补全

17

通过inferior-haskell-mode在Emacs中集成ghci非常好用:它增加了一个很棒的功能,可以快速导航到编译错误位置,交互式地检查类型、定义等。然而,在这个设置中我遗漏的主要功能是不能使用ghci的tab自动补全,这对于完成从导入的模块、语言扩展和ghci命令中可用的函数非常有帮助。

我认为,这个功能可能通过将原始的“TAB”字符传递给ghci进程并将其输出读回并粘贴到Emacs缓冲区中来实现。请注意,我没有在Emacs中使用“comint-mode”,所以我可能完全错了。

最后,我们来谈谈我的问题:为什么haskell-mode中缺少这个功能?是否有我不知道的明显问题,难以实现,或者只是由于一些历史原因而缺少(比如“没有人费心去写它”)?您有任何解决此问题的方法吗?(除了在Emacs外运行ghci)

1个回答

6

请查看 ghc-mode,它在 haskell-mode 的基础上添加了自动完成和其他功能。

还有一个名为 haskell-emacs 的模式,它与 haskell-mode 不同。它也具有自动完成功能。尽管我尝试过它,但它有点古怪,不总是有效。


1
我刚刚安装了ghc-mod,我喜欢它的自动完成和hlint集成(尽管我需要稍微调整一下以适应我的需求)。但是,它的自动完成在ghci缓冲区中无法正常工作:据我所知,“ghc-complete”函数分析当前缓冲区(以查找导入),而ghci缓冲区不是它所期望的。因此,它只建议一些关键字,并忽略我在ghci缓冲区中输入的任何“:m + Data.List”。 - dying_sphynx
我也尝试过Chris Done的"haskell-emacs",但是由于它仍处于beta版本,文档不太完整,所以我决定稍后再回来。 - dying_sphynx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接