sublime怎么配置Haskell环境_sublime编写Haskell代码【环境】

1次阅读

根本原因是sublime Text依赖haskell-language-server(HLS)提供智能功能,插件仅作桥梁;若HLS未正确安装、项目配置缺失(如.cabal文件)、路径含空格或格式器未匹配,均会导致无报错无补全。

sublime怎么配置Haskell环境_sublime编写Haskell代码【环境】

sublime text 装完 Haskell 插件后不报错也不补全,怎么回事

根本原因:Sublime Text 本身不运行 Haskell,它只靠外部工具(比如 haskell-language-server)提供语法检查、跳转、补全。插件只是“传话员”,没启动好服务,就等于没通电。

实操建议:

  • 确认已全局安装 haskell-language-server(不是 hlintghc-mod,那俩早淘汰了),运行 haskell-language-server --version 能输出版本才算到位
  • Package Control 安装插件时,必须选 Haskell Language Server(作者是 fpcohaskell),别误装成老掉牙的 Haskell-Sublime
  • 项目根目录下要有 .cabal 文件或 package.yaml,否则 haskell-language-server 启动失败,插件连日志都不报——它默认静默降级

Sublime 中 Ctrl+Click 跳不到定义,或者跳到 GHC 源码里去了

这不是 Sublime 的锅,是 haskell-language-server 的解析范围没对齐当前项目依赖。它默认只索引当前 package,跨 package 的模块引用若没显式声明依赖,就会 fallback 到 GHC 内置模块。

实操建议:

  • 检查 .cabal 文件里 build-depends 是否列全了你 import 的包,尤其是本地开发的其他库,得用 path: 引入
  • 改完配置后,必须重启 Sublime(不是 reload project),因为 HLS 进程在 Sublime 启动时就绑定了项目路径
  • 想验证是否生效:打开一个 .hs 文件,按 Ctrl+Shift+P 输入 Haskell: Restart Server,看右下角状态栏有没有 “HLS ready” 提示

保存文件后没自动格式化,stylish-haskell 配置无效

Sublime 的 Haskell 插件默认不接管格式化,它把这事交给 LSP(Language Server Protocol)层处理;而 haskell-language-server 默认用的是 ormolu,不是 stylish-haskell —— 即使你本地装了后者,HLS 也视而不见。

实操建议:

  • 在项目根目录建 hie.yaml,写明格式器选择:
    cradle:   cabal:     - path: "./"       component: "lib:your-package-name"

    再加一行 options: {formattingProvider: ormolu}(支持 ormolu / floskell / fourmolu

  • stylish-haskell 只能通过 Sublime 的外部 build system 调用,但那样会打断 LSP 流程,补全和诊断可能失步——不推荐混用
  • 确认 ormolu 已安装且在 $PATH:运行 ormolu --version,否则 HLS 启动时会静默禁用格式化

windows 上路径含空格或中文,HLS 启动失败报 Failed to parse result of calling cabal

这是 HLS 调用 cabal 时 shell 解析出错,不是编码问题,而是 Windows cmd 对引号和空格的处理太脆弱。哪怕路径只是 C:UsersJohn Doeproject,也会崩。

实操建议:

  • 把项目移到无空格、无中文、无特殊符号的路径下,例如 C:haskellmyapp,这是最稳解法
  • 不要试图用双引号包裹路径来“修复”,HLS 内部调用逻辑不识别外层引号,反而更乱
  • 如果非得放桌面,可创建 NTFS 符号链接:mklink /D C:hsproj "C:UsersJohn DoeDesktopmy-hs-project",然后在 C:hsproj 下工作

Sublime 对 Haskell 的支持本质是“借力”,所有智能功能都卡在 haskell-language-server 这一层。它启动慢、依赖严、路径敏感,出问题时日志藏得深,很多人卡在“看起来装好了,但就是不干活”这一步——其实八成是 HLS 根本没跑起来,而不是 Sublime 设置错了。

text=ZqhQzanResources