首页 > 解决方案 > 如何配置多个格式化程序以在 VSCode 中保存时按顺序运行?

问题描述

我正在开发一个必须由两者格式化的 Haskell 项目:

我可以为一种语言设置单一的默认格式化程序:

"[haskell]": {
    "editor.defaultFormatter": "MaxGabriel.brittany"
}

editor.action.formatDocument.multiple或者我可以使用(命令面板中的“使用...格式化文档)从列表中选择一个。

但是我需要在保存时一个接一个地运行它们。截至目前,我只能在保存时运行单个默认格式化程序。在这种情况下顺序无关紧要,但在更一般的情况下可能。

我尝试设置editor.defaultFormatter格式化程序列表(这没有按预期工作)并构建了一个editor.action.formatDocument.multiple使用各种参数调用的本地扩展,它只会显示一个可用格式化程序的下拉列表以供选择。

如何在保存时按顺序运行两个格式化程序?

标签: visual-studio-codevscode-extensions

解决方案


我不认为这真的是官方支持的用例,但您可以通过扩展执行以下操作来解决它:

  • 禁用"editor.formatOnSave"Haskell
  • 为 注册一个回调vscode.workspace.onDidSaveTextDocument,您可以在其中:
    • 使用API设置"editor.defaultFormatter"为第一个格式化程序WorkspaceConfiguration
    • 称呼"editor.action.formatDocument"
    • 设置"editor.defaultFormatter"为第二个格式化程序
    • "editor.action.formatDocument"再打电话

当然,这仅涉及formatOnSave格式化,不包括formatOnPasteor formatOnType


推荐阅读