VSCode Haskell扩展无法识别新增函数,无需重启如何解决
问题描述
我已安装如下Visual Studio Code Haskell相关扩展:
我按如下流程创建了新的stack项目:
执行命令:stack new vscode-red-squiggly-test
随后按要求配置了Lib.hs和Main.hs文件:
此时执行stack build、stack exec vscode-red-squiggly-test-exe均可正常构建运行。
之后我在Lib.hs中新增了项xyz,并在Main.hs中引用该内容:
此时xyz下方出现红色波浪线报错,hover提示如下:
但此时项目仍然可以正常构建运行,仅当我关闭VSCode、执行stack build后再通过code .重启VSCode,波浪线才会消失。
系统给出的快速修复建议是在文件中添加:{-# OPTIONS_GHC -Wno-deferred-out-of-scope-variables #-}
但该方案会关闭真实未定义变量的检测功能,我不希望采用。
补充说明
- 我的Haskell环境运行在Windows的WSL中
- VSCode实例运行在Windows系统,通过终端执行
code .启动
更新
- 我已在GitHub提交对应Issue
解决方案
不需要重启整个VSCode,以下方法可以直接消除错误提示:
- 重启Haskell语言服务
按下Ctrl+Shift+P调出VSCode命令面板,搜索并执行Haskell: Restart Haskell LSP Server,等待10秒左右语言服务重新加载完项目索引,错误提示就会自动消失。 - 搭配编译刷新索引
如果重启语言服务后错误还在,先在终端执行一次stack build,再重复重启语言服务的操作即可,全程不需要关闭VSCode。 - 长期优化配置避免重复出现
打开VSCode的Haskell扩展设置,开启haskell.plugin.ghcide-completions.config.autoExtendOn选项,后续修改模块导出的绑定项时,语言服务会自动更新索引,不需要手动重启。同时确保你安装的Haskell Language Server版本和项目使用的GHC版本完全匹配,版本不兼容会导致索引更新延迟。
内容的提问来源于stack exchange,提问作者dharmatech
相关产品推荐
相关产品推荐

