【问题标题】:Elm VSCode plugin does not format on saveElm VSCode 插件在保存时不格式化
【发布时间】:2019-12-19 00:18:50
【问题描述】:

我从 Elm Slack 频道复制了以下问题以供后代使用。

我无法在保存时格式化 Elm VSCode plugin。我已经在settings.json 中设置了elm-format 的全局安装的绝对路径。我还为榆树设置了保存格式:

"[elm]": {
    "editor.formatOnSave": true,
  },

我在 Ubuntu 机器上,在保存或使用 Ctrl-Shift-I 时不会发生格式化。有没有人看到我可能遗漏的东西?

【问题讨论】:

    标签: visual-studio-code vscode-settings elm


    【解决方案1】:
    1. 安装elm-format

    2. 为 VSCode 安装扩展 Elm Language Support,包括语法和错误突出显示

    3. 配置VS代码settings.json

    "[elm]": {
        "editor.formatOnSave": true
    },
    

    【讨论】:

      【解决方案2】:

      保存超时的格式不应该是 VSCode 1.42(2020 年第一季度)的问题
      见“Better handling of slow save operations”:

      VS Code 允许扩展在将文件保存到磁盘时更改文件的内容。
      Format on SaveFix on Save 等功能就是示例。

      但是,保存是一项关键操作,并且在保存期间进行处理的扩展必须快速完成,以便实际的保存操作可以继续。

      “快速”过去由 VS Code 强制执行,超时会使 ​​VS Code 取消扩展保存参与。
      这种强制执行保证了快速保存,但可能会令人沮丧,因为有时预期的处理不会发生。

      在此版本中,我们放弃了基于超时的方法,而是显示进度通知,允许您取消参与保存的扩展(“Save Participants”)。
      该通知让您知道保存操作正在运行,您可以决定是否要等待保存参与者完成。

      【讨论】:

        【解决方案3】:

        以下是响应和解决方法。

        @stoft 的回复:

        尝试使用 npm 在本地或全局安装 elm-format,这对我在 MacOS 上有所帮助。

        @razzee 的回复:

        请检查两件事:

        1. 您使用的是最新的 elm 格式版本吗
        2. 增加vscode的格式化超时时间,可惜elm-format有时候太慢了“editor.formatOnSaveTimeout”这个设置就是这么叫的”

        全球安装最新版本的elm-format 足以让保存格式正常工作。

        elm-0.19-workshop 中无法按照这些建议进行保存格式的一种情况。保存格式不会在 intro/part1/ 或任何其他“部分”目录中的 Elm 文件上触发。

        【讨论】:

        • editor.formatOnSaveTimeout 在 vscode 中不再存在
        【解决方案4】:

        没有设置 elm-format 的路径,并且 elm-tests 明确地为我工作。

        我跑了 npm install --global elm-test elm-format 并让扩展找出它在哪里。 一旦我指定 /home/a-teammate/npm/lib/node_modules/elm-test/bin/elm-format 是我想要使用的 elm 格式,它就会停止工作。虽然指向相同的 elm 格式。

        在 0.9.4、elm 0.19.1 和 elm-format 0.8.3 版本中使用 elmtooling.elm-ls-vscode 进行测试

        【讨论】:

          【解决方案5】:

          我在默认安装 Prettier 格式化程序时遇到了这个问题。我通过专门覆盖 Elm 的格式化程序来解决它:

            "[elm]": {
              "editor.defaultFormatter": "elmTooling.elm-ls-vscode"
            },
          
          

          【讨论】:

            猜你喜欢
            • 2022-12-30
            • 1970-01-01
            • 2022-08-04
            • 2020-09-01
            • 2022-12-28
            • 1970-01-01
            • 1970-01-01
            • 2020-11-09
            • 2023-04-10
            相关资源
            最近更新 更多