我正在处理必须由 both 格式化的Haskell项目:
stylish-haskell
(用于导入重新排序)brittany
(用于常规格式)我可以为一种语言设置单个默认格式器:
"[haskell]": {
"editor.defaultFormatter": "MaxGabriel.brittany"
}
或者我可以使用editor.action.formatDocument.multiple
从列表中选择一个(“在命令面板中使用...格式化文档...”。
但是我需要保存两个文件,一个接一个地运行。截至目前,我只能在保存时运行单个默认格式化程序。在这种情况下,顺序无关紧要,但在更一般的情况下,顺序可能会如此。
我尝试将editor.defaultFormatter
设置为格式器列表(这没有按预期工作),并构建了一个本地扩展程序,该扩展程序使用各种参数调用editor.action.formatDocument.multiple
,这只会弹出一个可用格式器的下拉列表。
如何在保存时按顺序运行两个格式化程序?
答案 0 :(得分:1)
我认为这不是真正受官方支持的用例,但是您可以通过扩展执行以下操作来解决此问题:
"editor.formatOnSave"
vscode.workspace.onDidSaveTextDocument
注册一个回调,其中:
WorkspaceConfiguration
API将"editor.defaultFormatter"
设置为第一个格式化程序"editor.action.formatDocument"
"editor.defaultFormatter"
设置为第二个格式化程序"editor.action.formatDocument"
当然,这仅涉及formatOnSave
格式,而不涉及formatOnPaste
或formatOnType
。
答案 1 :(得分:0)
最后的想法:看看Run on Save extension并以格式化程序而不是以扩展名的形式执行脚本。
上一个修改:
如果格式化程序没有提供命令(请参阅注释中的讨论,某些命令确实起作用),brittany
却没有,请尝试执行以下操作:
{
"label": "brittany format step",
"type": "shell",
"command": "brittany ${file}",
"problemMatcher": []
}