gpt4 book ai didi

syntax-highlighting - Sublime Text - C++ 高亮

转载 作者:行者123 更新时间:2023-12-04 01:44:27 32 4
gpt4 key购买 nike

我怎样才能让我的类被突出显示为一个普通的原始类型,比如 int 或 double?

看一个例子:

enter image description here

当我声明 Test aloha; 时,我想要那个测试以与 int a 相同的方式突出显示.

最佳答案

语法高亮由 tmLanguage 文件控制。在 ST3 中,它们保存在 .cache 文件中。

所以请按照以下步骤操作。

  • 打开工具 -> 命令托盘并使用 Package Manager安装 PackageResourceViewer
  • 在命令托盘中选择 PackageResourceViewer: Open Resource
  • 在显示的面板中选择 C++
  • 在显示的面板中选择 C++.tmLanguage

  • 现在您已经为您显示了语言定义文件。

    看看如何定义语言部分的形式。
    如果我们搜索 class我们发现以下是匹配项之一:
    <dict>
    <key>match</key>
    <string>\b(class|struct)\s+([_A-Za-z][_A-Za-z0-9]*\b);</string>
    <key>name</key>
    <string>meta.class-struct-block.c++</string>
    <key>captures</key>
    <dict>
    . . .
    . . .
    </dict>

    我选择了那个,因为它涉及一些正则表达式(regex)匹配,这是做你想做的事情的提示。

    因为 ST 有一个可爱的开放框架,我们任何懂一点编程的人都可以将我们自己的语言组件定义添加到这些 .tmLanguage文件。这种灵活性是我选择 ST 的部分原因。

    那么让我们看看如何做到这一点。

    第一件事就是保存 C++.tmLanguage我们在编辑器中打开的文件到我们的 User文件夹。

    我们这样做是为了在出现问题时保留原始版本作为回滚 因为这意味着我们在 User 中的版本将 不是 每次 ST 更新时都会被覆盖。 ST 加载文件的方式意味着 User 中的重复项文件夹覆盖默认位置中的值,因此我们的 User当我们使用 ST 时,版本优先于正在运行的内容。酷嘿?

    所以现在我们有了自己版本的 C++.tmLanguage文件让我们玩它。

    找到一个看起来有点像我们想要做的定义并复制它。

    我要复制这个:
    <dict>
    <key>match</key>
    <string>\b(class|wchar_t|nullptr_t)\b</string>
    <key>name</key>
    <string>storage.type.c++</string>
    </dict>

    我要做的第一件事是决定我要为我的新语言组件命名什么。

    我可以简单地给它一个现有语言组件的名称,该组件具有我想要的颜色。这样做的好处是,如果该名称已经存在于现有的配色方案中,我将免费获得突出显示。随意做出这个选择。

    但是为了探索更多的系统,我将创造我自己的名字并将其范围用于我自己。所以我叫它 duncan.name.class .您可以使用不与现有名称冲突的任何您喜欢的名称。

    所以我将在 中进行更改重复 :
    <dict>
    <key>match</key>
    <string>\b(class|wchar_t|nullptr_t)\b</string>
    <key>name</key>
    <string>duncan.name.class</string>
    </dict>

    现在我需要编写正则表达式来识别我的新语言组件。这很容易,因为我将假设我们都遵循相当标准的做法,即使用前导大写字母命名我们的类,而不是将其用于其他语言组件,因此我的正则表达式只需要找到任何以大写字母开头的字符串,即很容易定义为 [A-Z]后跟任何字母数字字符。请注意,这排除了标点符号(如下划线 _ ),因此如果您在类名中使用标点符号,则需要扩展正则表达式以包含这些字符。

    因此,让我们更改匹配条件以使用该正则表达式:
    <dict>
    <key>match</key>
    <string>\b([A-Z][a-zA-Z0-9]+)\b</string>
    <key>name</key>
    <string>duncan.name.class</string>
    </dict>

    现在我有了一个新的语言组件,我需要告诉我的主题如何处理它。我要在 Amy 上工作这个例子的主题。

    所以回到曾经有帮助的 PackageResourceViewer像这样:
  • 在命令托盘中选择 PackageResourceViewer: Open Resource
  • 在显示的面板中选择 Color Scheme - Default
  • 在显示的面板中选择 Amy.tmTheme

  • 现在您已经为您显示了主题文件。

    我想再次将我的副本保存到 User文件夹,然后复制现有示例。我要复制 String但任何吸引你的想法都很好。
    <dict>
    <key>name</key>
    <string>String</string>
    <key>scope</key>
    <string>string</string>
    <key>settings</key>
    <dict>
    <key>foreground</key>
    <string>#999999</string>
    </dict>
    </dict>

    现在我将更改 重复 String为我的新语言组件着色。
    <dict>
    <key>name</key>
    <string>Class Names :: Duncan</string>
    <key>scope</key>
    <string>duncan.name.class</string>
    <key>settings</key>
    <dict>
    <key>foreground</key>
    <string>#999999</string>
    <key>background</key>
    <string>#FFFFFF</string>
    <key>fontStyle</key>
    <string>bold</string>
    </dict>
    </dict>

    我希望你从我们上面所做的工作中认出我使用的名字?

    我选择了一组略显疯狂的语法高亮首选项,只是为了显示您可用的一些选项。在这里尽情发挥创意。

    这一切有意义吗?

    有了这些想法,您可以修复 ST3 中的任何语法高亮小问题,以完全按照您的喜好工作。也许我上面的正则表达式不太好?我没有想太多,所以你可能会发现你需要在那里做更多的工作才能得到你想要的。

    如果其中一些没有意义,请告诉我,我会努力做得更好。

    关于syntax-highlighting - Sublime Text - C++ 高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145265/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com