VSCode扩展中格式化C#代码片段的最优方案及可用JS库问询
VSCode扩展内格式化C#文本片段的解决方案
扩展内调用格式化能力的最优方案
你不需要直接调用OmniSharp扩展的私有API,借助VSCode原生的语言服务接口即可实现需求,这是目前兼容性、适配性最好的方案:
- 从你的自定义类XML语言文档中提取出独立的C#代码片段,记录该片段在原文档中的起止位置
- 构造一个语言ID为
csharp的临时TextDocument实例,内容为提取的C#代码 - 调用VSCode原生API
vscode.languages.formatRange,传入临时文档实例、全量文本范围以及用户配置的格式化选项,只要用户设备上安装了官方OmniSharp C#扩展,该接口会自动调用其底层格式化能力返回标准化的编辑结果 - 将返回的格式化内容替换回原文档对应的C#块位置即可
该方案的优势是完全复用用户本地的C#格式化配置,和用户直接编写.cs文件的格式化体验完全一致,且OmniSharp会自动跟进最新C#语法的格式化支持,你不需要额外做语法适配。
支持最新C#版本的免费JS格式化库
如果你的扩展需要内置格式化能力、不依赖用户安装OmniSharp扩展,可选择csharpier的JS/WASM版本,它免费开源,支持C# 12及以上版本的所有新语法,格式化规则统一,不需要复杂的自定义配置,性能可以满足常规代码片段的格式化需求。
内容的提问来源于stack exchange,提问作者Rus
相关产品推荐
相关产品推荐

