Search code examples
sublimetextsublimetext3

Configure Build System to be automatically chosen based on file extension


I have created a new Build System to run GolfScript programs. The definition is the following:

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

This works, but I have to manually switch the Build System from "Automatic" to "golfscript" whenever I need to use this and then switch it back to be able to run Ruby, Python, etc.

I'd like to make my Build System be automatically applied when I have a *.gs file open.

I have read some docs and got the idea that I can use a selector in order to achieve this, so I added a selector to the existing configuration:

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

After reading even more docs/examples, I could not figure out how to tell sublime what the selector is actually about.

How can I configure the source.gs selector to point to *.gs files?


Solution

  • You need to create a syntax file for GolfScript.

    Save the following XML as golfScript.tmLanguage and put it in the Packages/Golfscript folder as described here.

    You may need to restart 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>