# WhileySyntaxBundle This provides TextMate and Sublime bundles to enable syntax highlighting for programs written in the [Whiley](http://whiley.org). This also serves as the grammar for [github/linguist](https://github.com/github/linguist) (which enables syntax highlighting on Github). An example Whiley program is the following: ```whiley type nat is (int x) where x >= 0 function indexOf(int[] items, int item) -> (int r) // If valid index returned, element matches item ensures r >= 0 ==> items[r] == item // If invalid index return, no element matches item ensures r < 0 ==> all { i in 0..|items| | items[i] != item } // Return value is between -1 and size of items ensures r >= -1 && r < |items|: // nat i = 0 while i < |items| where all { k in 0 .. i | items[k] != item }: // if items[i] == item: return i i = i + 1 // return -1 ``` ## Install (Sublime) Eventually you will be able to install via [PackageControl](https://packagecontrol.io/). For now, you can copy the `whiley.submlime-text` file into `.config/sublime-tests/Packages/User`. ## Install (TextMate) ``` mkdir -p ~/Library/Application\ Support/TextMate/Bundles cd ~/Library/Application\ Support/TextMate/Bundles git clone git://github.com/Whiley/WhileySyntaxBundle Whiley.tmbundle ``` ## Developers The single source of truth is the file `Syntaxes/whiley.YAML-tmLanguage`. This is used to generate the remaining files: * `whiley.tmLanguage`. This is generated by installing [PackageDev](https://github.com/SublimeText/PackageDev) and then running `Tools > Build` on `whiley.YAML-tmLanguage` and choosing `Convert to: Property List`. * `whiley.sublime-text`. This is generated by selecting the file `whiley.tmLanguage` and running `Tools > Developer > New Syntax from whiley.tmLanguage ...`.