如何将自定义文件类型的语法着色添加到 Visual Studio(而不是 Code)?

问题描述 投票:0回答:1

我有一个由我们的应用程序使用的自定义(基于文本)文件类型。它既不是 XML,也不是 JSON,也不是 YAML,而是一种满足我们需求的自定义格式(一种特定于领域的语言,如果你想这样称呼它的话)。我们使用 Visual Studio 编写这些文件,我们的应用程序使用自定义解析器解析它们。

现在,在编辑这些文件时在 Visual Studio 中进行语法突出显示会是 nice,因此我正在考虑为此目的编写一个 Visual Studio 扩展。

是否有一种easy的方法可以做到这一点(使用 C# 代码或正则表达式列表或某种标准语法格式)?到目前为止,我发现:

  • 大量 Visual Studio Code 资源,这没有帮助,因为我们使用 Visual Studio 2022,而不是 Visual Studio Code。
  • 有关如何创建自定义编辑器的说明,这对于我们的需求来说似乎有点过分了。特别是,它似乎需要 C++ 而不是 C#。我们不需要自定义编辑器,我们只需要使用自定义语法突出显示规则来扩展默认文本编辑器即可。

是否有一个简单的扩展点可以将自定义文件格式语法突出显示添加到我错过的 Visual Studio(非代码)?

c# syntax-highlighting visual-studio-2022 dsl vsix
1个回答
0
投票

正如 Fildor 在评论中指出的那样(如果他将评论移至答案,请确保对他的答案进行投票),可以通过 将 TextMate 语法文件 放入特殊目录来轻松扩展 Visual Studio 语法突出显示。


参考资料:

  1. Microsoft Learn:添加对其他语言的 Visual Studio 编辑器支持/添加对不支持的语言的支持
  2. TextMate 语法

我尝试过,它运行得很好,除了一个需要注意的怪癖:TextMate 文档中描述的语法格式不是 Visual Studio 期望的格式。例如,参考文献 2 包括以下示例文件:

{  scopeName = 'source.untitled';
   ...
   patterns = (
      {  name = 'keyword.control.untitled';
         match = '\b(if|while|for|return)\b';
      }, ...
}

但是,出于某种奇怪的原因(对于熟悉 TextMate 的人来说这可能是非常明显的,但我却无法理解)Visual Studio 需要在 XML 文件中元编码此信息:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>scopeName</key>
    <string>source.untitled</string>
    ...
    <key>patterns</key>
    <array>
      <dict>
        <key>name</key>
        <string>keyword.control.untitled</string>
        <key>match</key>
        <string>\b(if|while|for|return)\b</string>
      </dict>
      ...
    </array>
  </dict>
</plist>

长话短说,您需要执行以下操作:

  1. 阅读并理解参考文献 2。您可以跳过需要您点击链接的部分(例如范围、折叠)。
  2. 打开
    C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TextMate\Starterkit\Extensions
    (将
    Professional
    替换为您的 Visual Studio 版本)。请注意,这些文件夹对应于编程语言(例如
    bat
    表示 DOS 批处理文件)。
  3. 选择您要用作模板的语言之一,并从
    .tmLanguage
    子文件夹中获取其
    syntaxes
    文件(例如
    bat\syntaxes\Batch File.tmLanguage
    )。
  4. 复制该文件并将其重命名为
    %userprofile%\.vs\Extensions\MyFileFormat\Syntaxes\MyFileFormat.tmLanguage
    。将
    MyFileFormat
    替换为您想要的文件格式。
  5. 使用您通过阅读参考 2 获得的知识来修改文件:您要做的第一件事是将
    fileTypes
    值修改为自定义文件格式使用的文件扩展名,并将
    scopeName
    设置为某项独一无二。
  6. 然后在 Visual Studio 中打开具有该扩展名的文件。现在它应该像 DOS 批处理文件(或任何您用作模板的文件)一样进行颜色编码。
  7. 继续修改您的 tmLanguage 文件,直到您对结果满意为止。不必每次都重新启动 VS,但您需要关闭并重新打开自定义文件才能看到操作中的更改。
© www.soinside.com 2019 - 2024. All rights reserved.