# Using Sublime Text with FASTBuild

Using Sublime Text with FASTBuild
=================================

8 Nov

Written By [Roderick Kennedy](https://roderickkennedy.com/dbgdiary?author=5f08d2770b281846bf04ee3b)

Sublime text can be used to run [FASTBuild](http://www.fastbuild.org/), with this build script. Save this as "FASTBuild.sublime-build", in your user AppData\\Roaming\\Sublime Text 3\\Packages\\User directory (or Mac/Linux equivalent location).

    {
     "cmd": ["C:/Simul/master/Simul/External/FASTBuild/FBuild.exe","-config","$file"]
     ,"file_regex": "(.*)\\((.*),(.*)\\): FASTBuild (Error .*)$"
     ,"selector": "source.bff"
    }
    

By using the selector "source.bff", it should match up automatically with the syntax (below), but I've not quite figured this part out yet. Here's a preliminary Sublime Text syntax for FASTBuild. Call it "FASTBuild.sublime-syntax" and save it in the same directory.

    
    %YAML 1.2
    ---
    name: FASTBuild
    file_extensions: [bff]
    scope: source.bff
    
    contexts:
      comments:
        - include: scope:source.c#comments
    
      instring:
        - match: "[^\"]"
          scope: string
        - match: \"
          pop: true
          scope: string
      strings:
        - match: \"
          push: instring
          scope: string
    
      inquotes:
        - match: "[^']"
          scope: string
        - match: "'"
          pop: true
          scope: string
      quotes:
        - match: "'"
          push: inquotes
          scope: string
    
      variables:
        - match: "\\.(\\w*)"
          scope: keyword
      preprocessor-includes:
        - match: "^\\s*(#\\s*\\binclude)\\b"
          captures:
            1: keyword.control.include.c++
      preprocessor-import:
        - match: "^\\s*(#)\\s*\\b(import)\\b"
          scope: keyword.control.c
    
      preprocessor:
        - include: scope:source.c#incomplete-inc
        - include: preprocessor-macro-define
        - include: scope:source.c#pragma-mark
        - include: preprocessor-includes
        - include: preprocessor-import
      global:
        - include: comments
        - include: preprocessor
        - include: strings
        - include: quotes
        - include: variables
      main:
        - include: global
        - match: \b(if|else|for|while)\b
          scope: keyword.control.c

 [Roderick Kennedy](https://roderickkennedy.com/dbgdiary?author=5f08d2770b281846bf04ee3b)

Using Sublime Text with FASTBuild
=================================

8 Nov

Written By [Roderick Kennedy](https://roderickkennedy.com/dbgdiary?author=5f08d2770b281846bf04ee3b)

Sublime text can be used to run [FASTBuild](http://www.fastbuild.org/), with this build script. Save this as "FASTBuild.sublime-build", in your user AppData\\Roaming\\Sublime Text 3\\Packages\\User directory (or Mac/Linux equivalent location).

    {
     "cmd": ["C:/Simul/master/Simul/External/FASTBuild/FBuild.exe","-config","$file"]
     ,"file_regex": "(.*)\\((.*),(.*)\\): FASTBuild (Error .*)$"
     ,"selector": "source.bff"
    }
    

By using the selector "source.bff", it should match up automatically with the syntax (below), but I've not quite figured this part out yet. Here's a preliminary Sublime Text syntax for FASTBuild. Call it "FASTBuild.sublime-syntax" and save it in the same directory.

    
    %YAML 1.2
    ---
    name: FASTBuild
    file_extensions: [bff]
    scope: source.bff
    
    contexts:
      comments:
        - include: scope:source.c#comments
    
      instring:
        - match: "[^\"]"
          scope: string
        - match: \"
          pop: true
          scope: string
      strings:
        - match: \"
          push: instring
          scope: string
    
      inquotes:
        - match: "[^']"
          scope: string
        - match: "'"
          pop: true
          scope: string
      quotes:
        - match: "'"
          push: inquotes
          scope: string
    
      variables:
        - match: "\\.(\\w*)"
          scope: keyword
      preprocessor-includes:
        - match: "^\\s*(#\\s*\\binclude)\\b"
          captures:
            1: keyword.control.include.c++
      preprocessor-import:
        - match: "^\\s*(#)\\s*\\b(import)\\b"
          scope: keyword.control.c
    
      preprocessor:
        - include: scope:source.c#incomplete-inc
        - include: preprocessor-macro-define
        - include: scope:source.c#pragma-mark
        - include: preprocessor-includes
        - include: preprocessor-import
      global:
        - include: comments
        - include: preprocessor
        - include: strings
        - include: quotes
        - include: variables
      main:
        - include: global
        - match: \b(if|else|for|while)\b
          scope: keyword.control.c

 [Roderick Kennedy](https://roderickkennedy.com/dbgdiary?author=5f08d2770b281846bf04ee3b)
