You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下VSCode的Haskell扩展无法正常工作求助

排查Haskell扩展及HLS失效问题的步骤

以下是针对你遇到的问题,需要逐一验证的关键操作点:

1. 验证HLS的基础可执行性

  • 打开终端执行:
    haskell-language-server --version
    
    若无法输出版本信息,说明HLS未正确加入PATH。检查当前shell的PATH是否包含~/.ghcup/bin:
    echo $PATH
    
    若缺失,将以下内容添加到~/.bashrc或~/.zshrc(对应你使用的shell):
    export PATH="$HOME/.ghcup/bin:$PATH"
    
    执行source ~/.bashrc生效后再重试。

2. 确保项目有正确的构建结构

HLS依赖项目的构建元数据才能提供智能提示,直接打开单个.hs文件大概率无法工作:

  • 用Stack创建测试项目:
    stack new test-project simple
    cd test-project
    stack build
    
    然后用VSCode/Codium打开test-project目录,观察HLS是否启动。
  • 或用Cabal创建项目:
    cabal init --interactive
    cabal build
    
    同样打开项目目录测试。

3. 检查VSCode/Codium扩展配置

  • 打开设置,搜索Haskell: Server Path,确认路径指向~/.ghcup/bin/haskell-language-server。
  • 确认Haskell: Language Server Variant设置为ghcup,Haskell: Enable处于勾选状态。
  • 查看扩展日志:打开「输出」面板,选择「Haskell」选项卡,根据报错信息定位问题(如GHC路径错误、依赖缺失等)。

4. 验证GHC与HLS的兼容性

执行以下命令查看HLS支持的GHC版本:

haskell-language-server --supported-ghcs

确认GHC 9.2.5在列表中,若不兼容,通过ghcup安装匹配版本:

ghcup install hls <兼容版本号>
ghcup set hls <兼容版本号>

5. 修复权限与环境一致性

  • 检查~/.ghcup目录权限:
    ls -ld ~/.ghcup
    
    若权限异常,执行:
    chown -R $USER:$USER ~/.ghcup
    
  • 若VSCode终端无法找到HLS,在设置中搜索Terminal > Integrated > Env: Linux,添加:
    "PATH": "${env:PATH}:${HOME}/.ghcup/bin"
    

6. 检查Neovim的HLS配置

确保Neovim的LSP客户端正确配置了HLS路径,比如使用lspconfig时:

require('lspconfig').hls.setup{
  cmd = { "haskell-language-server", "--lsp" },
  -- 其他配置
}

内容的提问来源于stack exchange,提问作者Kotaka Danski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:50:27