8

我创建了一个新的构建系统来运行 GolfScript 程序。定义如下:

{
    "cmd": ["ruby", "D:\\w\\sublime\\golfscript.rb", "$file"]
}

这可行,但是每当我需要使用它时,我必须手动将构建系统从“自动”切换到“golfscript”,然后将其切换回能够运行 Ruby、Python 等。

我想让我的构建系统在我*.gs打开文件时自动应用。

我已经阅读了一些 文档并知道我可以使用选择器来实现这一点,所以我在现有配置中添加了一个选择器:

{
    "cmd": ["ruby", "D:\\w\\sublime\\golfscript.rb", "$file"],
    "selector": "source.gs"
}

在阅读了更多文档/示例之后,我无法弄清楚如何告诉 sublime 选择器实际上是关于什么的。

如何配置source.gs选择器以指向*.gs文件?

4

4 回答 4

3

您需要为 GolfScript 创建一个语法文件。

将以下 XML 保存为golfScript.tmLanguage并将其放入此处Packages/Golfscript所述的文件夹中。

您可能需要重新启动 ST。

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>fileTypes</key>
    <array>
        <string>gs</string>
    </array>
    <key>name</key>
    <string>GolfScript</string>
    <key>patterns</key>
    <array>
    </array>
    <key>scopeName</key>
    <string>source.gs</string>
    <key>uuid</key>
    <string>c4c7fc10-d937-4f5d-9cb7-4316026457e5</string>
</dict>
</plist>
于 2013-07-17T01:02:50.103 回答
1

将构建与特定类型的文件关联起来通常合适的做法是使用selector告诉 Sublime 如何根据相关文件类型选择构建的 a。

但是,对于语言的扩展与该语言的正常扩展不匹配的情况,或者没有可用的语法定义来提供适当的范围(因此还有该语言的语法突出显示),您可以给出关于通过文件file_patterns中的键使用什么构建的提示,如构建系统选项文档sublime-build中所述。

例如,假设 GolfScript 文件的扩展名为gs

{
    "cmd": ["ruby", "D:\\w\\sublime\\golfscript.rb", "$file"],
    "file_patterns": ["*.gs"]
}

这将向 Sublime 表明,对于任何具有此扩展名的文件,此构建都是适用的,并将被视为当前文件的潜在构建系统。

根据所讨论的文件类型,Sublime 可能会在您第一次运行构建时要求您选择正确的构建,类似于构建具有多个变体时会发生的情况。在这种情况下,系统会提示您选择构建,然后它将被记住以供将来构建,您需要Build With再次选择。

例如,假设.gs文件与 Ruby 的语法相关联(例如),上面的构建以及 Ruby 文件的构建(根据scope该构建系统中的选择器选择)都将是候选者,需要您消除歧义第一次构建。

于 2021-01-20T18:06:12.470 回答
0

我们可以使用@skuroda 的方法,但简化了:似乎patterns,uuid不是必需的。

创建一个golfScript.tmLanguage

<?xml version="1.0" encoding="UTF-8" ?>
<plist version="1.0">
    <dict>
        <key>name</key>
        <string>GolfScript</string>
        <key>scopeName</key>
        <string>source.gs</string>
        <key>fileTypes</key>
        <array>
            <string>gs</string>
        </array>
    </dict>
</plist>
于 2021-01-20T08:24:59.503 回答
-1

选择器可能是错误的。尝试使用embedding.gs而不是source.gs

{
    "cmd": ["ruby", "D:\\w\\sublime\\golfscript.rb", "$file"],
    "selector": "embedding.gs"
}
于 2020-06-18T18:15:10.370 回答