visual-studio-code - 如何配置多个格式化程序以在 VSCode 中保存时按顺序运行?
问题描述
我正在开发一个必须由两者格式化的 Haskell 项目:
stylish-haskell
(用于导入重新排序)brittany
(用于一般格式)
我可以为一种语言设置单一的默认格式化程序:
"[haskell]": {
"editor.defaultFormatter": "MaxGabriel.brittany"
}
editor.action.formatDocument.multiple
或者我可以使用(命令面板中的“使用...格式化文档)从列表中选择一个。
但是我需要在保存时一个接一个地运行它们。截至目前,我只能在保存时运行单个默认格式化程序。在这种情况下顺序无关紧要,但在更一般的情况下可能。
我尝试设置editor.defaultFormatter
格式化程序列表(这没有按预期工作)并构建了一个editor.action.formatDocument.multiple
使用各种参数调用的本地扩展,它只会显示一个可用格式化程序的下拉列表以供选择。
如何在保存时按顺序运行两个格式化程序?
解决方案
我不认为这真的是官方支持的用例,但您可以通过扩展执行以下操作来解决它:
- 禁用
"editor.formatOnSave"
Haskell - 为 注册一个回调
vscode.workspace.onDidSaveTextDocument
,您可以在其中:- 使用API设置
"editor.defaultFormatter"
为第一个格式化程序WorkspaceConfiguration
- 称呼
"editor.action.formatDocument"
- 设置
"editor.defaultFormatter"
为第二个格式化程序 "editor.action.formatDocument"
再打电话
- 使用API设置
当然,这仅涉及formatOnSave
格式化,不包括formatOnPaste
or formatOnType
。
推荐阅读
- php - 如何在 PHP 中获取字符串的第一部分?
- python - Seaborn 热图颜色 - 值大小的相同颜色
- solr - 当查询词中有特殊字符时,范围查询如何工作?
- swiftui - 如何使用 SwiftUI 设置图像
- c++ - 有没有办法在它的孩子中修改嵌套类的实现?
- validation - 当用户选择有效选项时,需要清除 EnumDropDownListFor 的客户端验证
- windows - Windows - 本地远程桌面的替代方案
- r - 意外行为:从数据框中删除行转换为向量 R
- logging - Wireguard:如何记录网络活动?
- matlab - Matlab 运行时的文件树结构?