问题描述
我的目标(如果可行)是通过YouCompleteMe在Vim中完成Haskell的命令完成。在这方面,正如您在下面看到的那样,我还没有找到有关如何使其工作的共识。
有关issue on YouCompleteMe的最新评论还不算老,因此我从AUR安装了haskell-ide-engine(GitHub上的仓库是here。
但是,由于花费了很长时间(花费了110分钟!),我检查了PKGBUILD
文件只是为了发现这一点:
# ...
# Supported are '8.4.2' '8.4.3' '8.4.4' '8.6.4' '8.6.5' '8.8.1' '8.8.2' '8.8.3'
# activated by default are the ones also used in a stackage snapshot. Removing
# versions you do not use will greatly reduce the compilation time of this
# package
_enabled_ghc_versions=('8.4.4' '8.6.4' '8.6.5' '8.8.2' '8.8.3')
# ...
足够公平,我不好。因此,我在#haskell IRC channel上寻求帮助,一位用户发表了此评论:
,然后您发现除了
haskell-ide-engine
之外几乎没有人使用haskell-language-server
。而且ghcup可以为您安装预构建二进制文件
另一个用户的评论是
至少可以说,Arch上的haskell情况不是最佳的
还有另一条评论(来自Fendor,his answer已经在下面)
HIE不再积极开发。 Haskell语言服务器是其后继者。我会推荐Haskell语言服务器
这似乎与您在YouCompleteMe issue tracker上看到的内容不符。
那目前情况如何?
解决方法
此处有Haskell IDE引擎和Haskell语言服务器开发人员。
是的,Haskell IDE Engine不再被积极开发。 ghcide和Haskell IDE Engine团队已经合并,共同创建了Haskell Language Server(基于ghcide作为主要驱动程序)。因此,Haskell Language Server当前是开发的重点,我们建议您优先于Haskell IDE Engine,因为它更快,更稳定。它还具有许多新功能,并且很快将通过Haskell IDE引擎达到与功能相同的水平。
可以通过ghcup安装Haskell语言服务器,而VSCode插件Haskell也可以自动安装二进制文件。
blog post希望能更好地概述这种情况。
,基于this,您应该可以使用它
let g:ycm_language_server = [
\ {
\ 'name': 'haskell-language-server',\ 'cmdline': [ 'haskell-language-server-wrapper','--lsp' ],\ 'filetypes': [ 'haskell','lhaskell' ],\ 'project_root_files': [ 'stack.yaml','cabal.project','package.yaml','hie.yaml' ],\ },\ ]
,
通过安装 ghcup
设置 Haskell,然后然后通过 ghc
安装所有其余的(cabal
、ghcup
、...),正如 this answer 中所建议的那样,改进了 Vim 和 YCM 的使用体验。