# Example This is an example as given in the CLM doc of a "My Language" file, a severe subset of the Ruby scripting language. ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <!-- The smallest CLM that will color keywords. Copyright (c) 2012 Bare Bones Software, Inc. --> <dict> <!-- You must identify the plist as a CLM: --> <key>BBEditDocumentType</key> <string>CodelessLanguageModule</string> <!-- You must identify your language: --> <key>BBLMLanguageDisplayName</key> <string>My Language</string> <key>BBLMLanguageCode</key> <string>MyL!</string> <!-- Not required, but there’s not much point to a language module if it doesn’t color syntax: --> <key>BBLMColorsSyntax</key> <true/> <!-- Specify some keywords. This isn’t required, either, but it provides something to color: --> <key>BBLMKeywordList</key> <array> <string>class</string> <string>def</string> <string>if</string> <string>elsif</string> <string>else</string> <string>end</string> <string>do</string> <string>for</string> <string>return</string> </array> <!-- Specify a comment-out string: --> <key>BBLMCommentLineDefault</key> <string>#</string> <!-- You must specify the character set for keywords and identifiers. Substitute your own: --> <key>Language Features</key> <dict> <key>Identifier and Keyword Character Class</key> <string>A-Za-z0-9_\?!</string> </dict> </dict> </plist> ``` **Things to notice here:** - If you don’t want the module to do anything other than take up space in the language pop-up, just specify `BBEditDocumentType`, `BBLMLanguageDisplayName`, and `BBLMLanguageCode`. But this is the minimal _useful_ language module. - For syntax coloring, you must turn on `BBLMColorsSyntax`. - For something to color, you must provide a list of keywords in `BBLMKeywordList`. - BBEdit requires that you provide a method — line or block — for commenting-out lines with the Un/Comment Selection command. In this case, `BBLMCommentLineDefault` specifies the # line-comment token. - You must also specify how to identify keywords, in the `Language Features `dictionary, using either `Identifier` and `Keyword Characters `or `Identifier` and `Keyword Character` `Class`. - You _don’t_ have to provide a `BBLMSuffixMap` or `BBLMFileNamesToMatch` list. Without them, your user will have to pick the language out of the pop-up. For more info, go [here](http://www.barebones.com/support/develop/clm.html#Examples).