github/linguist — pull request #899 by TazeTSchnitzel (2014-01-19 15:28:11+00:00)
Title: Add Game Maker Language

Game Maker Language (or GML) is the language used by YoYoGames's Game Maker and Game Maker: Studio products. It is used in several repositories on GitHub, for example:

* https://github.com/Medo42/Gang-Garrison-2 (from which I got most of my samples)
* https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension
* https://github.com/ouya/ouya-sdk-examples/tree/master/GameMaker
* https://github.com/Zetaphor/gamemaker-games
* https://github.com/Kojir0/Phase1.gmx
* https://github.com/RealFilling/makeitgrow-game.gmx
* https://github.com/tyrovc/SpelunkyCommunityUpdateProject
* https://github.com/oniofchaos/Game-Maker---AverEnum
* https://github.com/RealFilling/makeitgrow-game.gmx
* https://github.com/grixm/vrilda
* https://github.com/messhof/Networking-in-Game-Maker
* https://github.com/xbelanch/LudumDare25

It's worth noting, however, that Game Maker has two output formats:
* .gmk/.gm8/etc files, which contain an entire project in one binary file (Linguist won't be able to recognise this)
* .gmx directories, which contain a project in hierarchical files and directories in a version control-friendly format (Linguist will be able to recognise .gml files in here). This is only supported by Game Maker: Studio.

As well as those, there is also an open-source tool called Gmk-Splitter which produces a similar source control-friendly hierarchy from a .gmk file for older versions of Game Maker. This is used by some older projects such as the aforementioned Gang Garrison 2.

For the .gmx sort and Gmk-Splitter, it's worth noting that this request only covers raw .gml files (which both Studio and Gmk-Splitter produces for scripts), and not .gmx XML files or Gmk-Splitter .xml files describing object events, which can also contain GML code. It could be possible to add these, but I think these might need to be covered as different "languages", due to needing to lex C-like source code embedded XML instead of C-like source code. Even though this means that the pull request offers only limited support, it does mean that all the GML code on GitHub will start being recognised as GML and not "Shell" ;)

As well as repositories, there are also many gists using GML.

So, please accept this request, if only such that GML respositories are recognised as GML and not "Shell" :)