【问题标题】:Haskell Guards and SublimeText 3Haskell Guards 和 Sublime Text 3
【发布时间】:2015-02-04 00:27:02
【问题描述】:

我切换到了 Sublime Text 3,但现在我在 ST3 中编写了一些 Haskell,我注意到一些很奇怪的东西,那就是守卫的语法高亮逻辑。

如您所见,当我这样写时,它会突出显示白色的第一个守卫和白色/洋红色混合的不同标志:

只有当我使用这种 错误 语法(参数后有等号)时,它才能正确显示。

有谁知道如何解决这个问题?

【问题讨论】:

  • 这几乎肯定是 Haskell 插件中的一个错误。你最好在他们的GitHub 页面而不是在这里发布问题。 (事实上​​,可能已经有人这样做了,所以你也可以看看现有的问题。)
  • @TikhonJelvis 实际上是使用默认的 Haskell 插件,而不是使用第三方插件 SublimeHaskell。
  • @bheklilr:很有趣。看起来实际上有一个 open issue 关于警卫的语法突出显示。
  • @TikhonJelvis 奇怪。我很确定它来自默认的,因为我禁用了SublimeHaskell,直到我自己检查了这个问题。通过启用它并切换到突出问题的语法,问题就消失了。

标签: haskell syntax syntax-highlighting sublimetext sublimetext3


【解决方案1】:

您可能正在使用默认的 Haskell 语法突出显示。我建议禁用Haskell 包并安装SublimeHaskell。它的语法突出显示要好得多,并且它可以将 otherwise 之类的东西识别为“内置”(主要是 Prelude 被认为是内置的函数)。

如果您使用内置的 Haskell 突出显示,您可以使用 CtrlAltShiftP 快捷方式。分别突出显示每个保护管道,然后点击此快捷方式。在状态栏中,它将简要显示与区域关联的语法范围名称。对于第一个管道,您将获得 source.haskell meta.function.type-declaration.haskell,对于第二个管道,您将获得 source.haskell keyword.operator.haskell。使用 SublimeHaskell 的语法,你会得到两个管道的source.haskell keyword.operator.haskell。我不会说 SublimeHaskell 是完美的(尝试在 module Name where 之后缩进整个文件),但它肯定更好。由于语法具有相同的名称,并且因为 SublimeHaskell 附带了 sn-ps 和诸如此类的东西,涵盖了内置的所有功能,我建议禁用 Haskell 插件,只保留 SublimeHaskell 的语法可选。

【讨论】:

    【解决方案2】:

    (不确定!!!) 我现在相信这不是错误,相反,我相信这实际上是 ST3 告诉您该函数中存在非详尽模式的方式。

    非详尽:http://i.imgur.com/74o4sgp.png

    详尽:http://i.imgur.com/M9a4TTL.png

    【讨论】:

    • You sure? (我不知道为什么我的截图在该图像的顶部包含一个白色区域,但我懒得编辑)。
    • @bheklilr 我不完全确定,所以如果有人能证实这一点,那就太好了。
    猜你喜欢
    • 2015-05-07
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多