[
  {
    "path": ".gitignore",
    "content": "out\nnode_modules\n.vscode/.browse.VC.db\n*.vsix\n.BROWSE.VC.DB*"
  },
  {
    "path": ".vscode/launch.json",
    "content": "// A launch configuration that compiles the extension and then opens it inside a new window\n{\n\t\"version\": \"0.1.0\",\n\t\"configurations\": [\n\t\t{\n\t\t\t\"name\": \"Launch Extension\",\n\t\t\t\"type\": \"extensionHost\",\n\t\t\t\"runtimeExecutable\": \"${execPath}\",\n\t\t\t\"args\": [\"--extensionDevelopmentPath=${workspaceRoot}\" ],\n\t\t\t\"stopOnEntry\": false,\n\t\t\t\"sourceMaps\": true,\n\t\t\t\"outDir\": \"${workspaceRoot}/out\",\n\t\t\t\"preLaunchTask\": \"npm\",\n\t\t\t\"request\": \"launch\"\n\t\t}\n\t]\n}"
  },
  {
    "path": ".vscode/settings.json",
    "content": "// Place your settings in this file to overwrite default and user settings.\n{\n\t\"files.exclude\": {\n\t\t\"out\": false,\n\t\t\"typings\": false\n\t},\n\t\"search.exclude\": {\n\t\t\"**/node_modules\": true,\n\t\t\"**/bower_components\": true,\n\t\t\"out/\": true\n\t},\n\t\"typescript.tsdk\": \"./node_modules/typescript/lib\"\n}"
  },
  {
    "path": ".vscode/tasks.json",
    "content": "// Available variables which can be used inside of strings.\n// ${workspaceRoot}: the root folder of the team\n// ${file}: the current opened file\n// ${fileBasename}: the current opened file's basename\n// ${fileDirname}: the current opened file's dirname\n// ${fileExtname}: the current opened file's extension\n// ${cwd}: the current working directory of the spawned process\n\n// A task runner that calls a custom npm script that compiles the extension.\n{\n\t\"version\": \"0.1.0\",\n\n\t// we want to run npm\n\t\"command\": \"npm\",\n\n\t// the command is a shell script\n\t\"isShellCommand\": true,\n\n\t// show the output window only if unrecognized errors occur.\n\t\"showOutput\": \"silent\",\n\n\t// we run the custom script \"compile\" as defined in package.json\n\t\"args\": [\"run\", \"compile\"],\n\t//\"args\": [\"-w\"],\n\t\n\t// The tsc compiler is started in watching mode\n\t\"isWatching\": true,\n\n\t// use the standard tsc in watch mode problem matcher to find compile problems in the output.\n\t\"problemMatcher\": \"$tsc-watch\"\n}"
  },
  {
    "path": ".vscodeignore",
    "content": ".vscode/**\ntypings/**\n**/*.ts\n**/*.map\n.gitignore\ntsconfig.json\nvsc-extension-quickstart.md\nnpm-debug.log\nscreenshots/**\ntypings/**/*\n.vscode/**/*\ntsconfig.json\n.gitignore\nnode_modules/.bin/**\nnode_modules/typescript/**\n\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 Nicolas MARTIN\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "README.md",
    "content": "# CMake For VisualStudio Code\n\n[![Join the chat at https://gitter.im/twxs/vs.language.cmake](https://badges.gitter.im/twxs/vs.language.cmake.svg)](https://gitter.im/twxs/vs.language.cmake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nThis extension provides support for [CMake](http://www.cmake.org/) in [Visual Studio Code](https://code.visualstudio.com/).\n\n![screencast](images/cmake1.gif)\n\n## Features\n\n- Colorization\n- Completion Lists \n\n![completion](images/cmake2.gif)\n\n- Code comments\n\n![comment](images/cmake3.gif)\n\n- Snippets\n\n![find_package](images/cmake5.gif)\n\n![include](images/cmake6.gif)\n\n- Quick Help\n\n![tooltip](images/cmake4.gif)\n\n- Access To Online Help\n\n\n## Options\n\nThe following Visual Studio Code settings are available for the Cmake extension. These can be set in user preferences (cmd+,) or workspace settings (.vscode/settings.json).\n\n```json\n{\n    \"cmake.cmakePath\": \"/path/to/cmake\"\n}\n```\n\n## Commands\n\n- `CMake: Online Help` to go to the CMake online documentation (according to the current cmake version). \n\n## Acknowledgements\n\nThis extension based on the TextMate Syntax from [this project](https://github.com/zyxar/Sublime-CMakeLists).\n\n\n## Contributors\n\n- [Stanislav Ionascu](https://github.com/stanionascu)\n- [Rostislav Kondratenko](https://github.com/rkondratenko)\n\nFeel free to contribute...\n\n## License\n\n[MIT](LICENSE)\n"
  },
  {
    "path": "extension.ts",
    "content": "// The module 'vscode' contains the VS Code extensibility API\n// Import the module and reference it with the alias vscode in your code below\nimport {workspace, window, languages, ExtensionContext, TextDocument, DocumentSelector, Position, commands, LanguageConfiguration, CompletionItemKind, CompletionItem, SnippetString, CompletionItemProvider, Hover, HoverProvider, Disposable, CancellationToken} from 'vscode';\nimport util = require('util');\nimport child_process = require(\"child_process\");\n\n/// strings Helpers\nfunction strContains(word, pattern) {\n    return word.indexOf(pattern) > -1;\n}\n\nfunction strEquals(word, pattern) {\n    return word == pattern;\n}\n\n/// configuration helpers\nfunction config<T>(key: string, defaultValue?: any): T {\n    const cmake_conf = workspace.getConfiguration('cmake');\n    return cmake_conf.get<T>(key, defaultValue);\n}\n\n// copied from https://stackoverflow.com/questions/13796594/how-to-split-string-into-arguments-and-options-in-javascript\nfunction commandArgs2Array(text: string): string[] {\n    const re = /^\"[^\"]*\"$/; // Check if argument is surrounded with double-quotes\n    const re2 = /^([^\"]|[^\"].*?[^\"])$/; // Check if argument is NOT surrounded with double-quotes\n  \n    let arr = [];\n    let argPart = null;\n  \n    text && text.split(\" \").forEach(function(arg) {\n      if ((re.test(arg) || re2.test(arg)) && !argPart) {\n        arr.push(arg);\n      } else {\n        argPart = argPart ? argPart + \" \" + arg : arg;\n        // If part is complete (ends with a double quote), we can add it to the array\n        if (/\"$/.test(argPart)) {\n          arr.push(argPart);\n          argPart = null;\n        }\n      }\n    });\n    return arr;\n  }\n\n/// Cmake process helpers\n\n// Simple helper function that invoke the CMAKE executable\n// and return a promise with stdout\nlet cmake = (args: string[]): Promise<string> => {\n    return new Promise(function (resolve, reject) {\n        let cmake_config = config<string>('cmakePath', 'cmake');\n        let cmake_args = commandArgs2Array(cmake_config)\n        let cmd = child_process.spawn(cmake_args[0], cmake_args.slice(1, cmake_args.length)\n                .concat(args.map(arg => { return arg.replace(/\\r/gm, ''); })));\n        let stdout: string = '';\n        cmd.stdout.on('data', function (data) {\n            var txt: string = data.toString();\n            stdout += txt.replace(/\\r/gm, '');\n        });\n        cmd.on(\"error\", function (error) {\n            if (error && (<any>error).code === 'ENOENT') {\n                window.showInformationMessage('The \"cmake\" command is not found in PATH.  Install it or use `cmake.cmakePath` in the workspace settings to define the CMake executable binary.');\n            }\n            reject();\n        });\n        cmd.on('exit', function (code) {\n            resolve(stdout);\n        });\n    });\n}\n\n\nfunction _extractVersion(output: string): string {\n    let re = /cmake\\s+version\\s+(\\d+.\\d+.\\d+)/;\n    if (re.test(output)) {\n        let result = re.exec(output);\n        return result[1];\n    }\n    return '';\n}\n\nasync function cmake_version(): Promise<string> {\n    let cmd_output = await cmake(['--version']);\n    let version = _extractVersion(cmd_output);\n    return version;\n}\n\n// Return the url for the online help based on the cmake executable binary used\nasync function cmake_help_url() {\n    let base_url = 'https://cmake.org/cmake/help';\n    let version = await cmake_version();\n    if (version.length > 0) {\n        if (version >= '3.0') {\n            let re = /(\\d+.\\d+).\\d+/;\n            version = version.replace(re, '$1/');\n        } else {\n            let older_versions = [\n                '2.8.12', '2.8.11', '2.8.10', '2.8.9', '2.8.8', '2.8.7', '2.8.6', '2.8.5', '2.8.4', '2.8.3', '2.8.2', '2.8.1', '2.8.0', '2.6' \n            ];\n            if (older_versions.indexOf(version) == -1) {\n                version = 'latest/';\n            } else {\n                version = version + '/cmake.html';\n            }\n        }\n    } else {\n        version = 'latest/';\n    }\n    return base_url + '/v' + version;\n}\n\n\n// return the cmake command list\nfunction cmake_help_command_list(): Promise<string> {\n    return cmake(['--help-command-list']);\n}\n\nfunction cmake_help_command(name: string): Promise<string> {\n    return cmake_help_command_list()\n        .then(function (result: string) {\n            let contains = result.indexOf(name) > -1;\n            return new Promise(function (resolve, reject) {\n                if (contains) {\n                    resolve(name);\n                } else {\n                    reject('not found');\n                }\n            });\n        }, function (e) { })\n        .then(function (n: string) {\n            return cmake(['--help-command', n]);\n        }, null);\n}\n\n\nfunction cmake_help_variable_list(): Promise<string> {\n    return cmake(['--help-variable-list']);\n}\n\nfunction cmake_help_variable(name: string): Promise<string> {\n    return cmake_help_variable_list()\n        .then(function (result: string) {\n            let contains = result.indexOf(name) > -1;\n            return new Promise(function (resolve, reject) {\n                if (contains) {\n                    resolve(name);\n                } else {\n                    reject('not found');\n                }\n            });\n        }, function (e) { }).then(function (name: string) { return cmake(['--help-variable', name]); }, null);\n}\n\n\nfunction cmake_help_property_list(): Promise<string> {\n    return cmake(['--help-property-list']);\n}\n\nfunction cmake_help_property(name: string): Promise<string> {\n    return cmake_help_property_list()\n        .then(function (result: string) {\n            let contains = result.indexOf(name) > -1;\n            return new Promise(function (resolve, reject) {\n                if (contains) {\n                    resolve(name);\n                } else {\n                    reject('not found');\n                }\n            });\n        }, function (e) { }).then(function (name: string) { return cmake(['--help-property', name]); }, null);\n}\n\nfunction cmake_help_module_list(): Promise<string> {\n    return cmake(['--help-module-list']);\n}\n\nfunction cmake_help_module(name: string): Promise<string> {\n    return cmake_help_module_list()\n        .then(function (result: string) {\n            let contains = result.indexOf(name) > -1;\n            return new Promise(function (resolve, reject) {\n                if (contains) {\n                    resolve(name);\n                } else {\n                    reject('not found');\n                }\n            });\n        }, function (e) { }).then(function (name: string) { return cmake(['--help-module', name]); }, null);\n}\n\nfunction cmake_help_all() {\n    let promises = {\n        'function': (name: string) => {\n            return cmake_help_command(name);\n        },\n        'module': (name: string) => {\n            return cmake_help_module(name);\n        },\n        'variable': (name: string) => {\n            return cmake_help_variable(name);\n        }\n        ,\n        'property': (name: string) => {\n            return cmake_help_property(name);\n        }\n    };\n    return promises;\n}\n\nasync function cmake_online_help(search: string) {\n    let url = await cmake_help_url();\n    let v2x = url.endsWith('html'); // cmake < 3.0 \n    return Promise.all([\n        cmCommandsSuggestionsExact(search),\n        cmVariablesSuggestionsExact(search),\n        cmModulesSuggestionsExact(search),\n        cmPropertiesSuggestionsExact(search),\n    ]).then(function (results) {\n        var opener = require(\"opener\");\n\n        var suggestions = Array.prototype.concat.apply([], results);\n\n        if (suggestions.length == 0) {\n            search = search.replace(/[<>]/g, '');\n            if (v2x || search.length == 0) {\n                opener(url);\n            } else {\n                opener(url + 'search.html?q=' + search + '&check_keywords=yes&area=default');\n            }\n        } else {\n            let suggestion = suggestions[0];\n            let type = cmakeTypeFromvscodeKind(suggestion.kind);\n            if (type == 'property') {\n                if (v2x) {\n                    opener(url);\n                } else {\n                    // TODO : needs to filter properties per scope to detect the right URL\n                    opener(url + 'search.html?q=' + search + '&check_keywords=yes&area=default');\n                }\n            } else {\n                if (type == 'function') {\n                    type = 'command';\n                }\n                search = search.replace(/[<>]/g, '');\n                if(v2x){\n                    opener(url + '#' + type + ':' + search);                    \n                }else {\n                    opener(url + type + '/' + search + '.html');\n                }\n            }\n        }\n    });\n}\n\n// this method is called when your extension is activated. activation is\n// controlled by the activation events defined in package.json\nexport function activate(disposables: Disposable[]) {\n\n    commands.registerCommand('cmake.onlineHelp', () => {\n        // The code you place here will be executed every time your command is executed\n        // Display a message box to the user\n        var editor = window.activeTextEditor;\n        if (!editor) {\n            return; // No open text editor\n        }\n        var selection = editor.selection;\n        let document = editor.document;\n        let position = selection.start;\n        var currentWord = document.getText(selection);\n        let wordAtPosition = document.getWordRangeAtPosition(position);\n\n        var currentWord = '';\n\n        if (wordAtPosition && wordAtPosition.start.character < position.character) {\n            var word = document.getText(wordAtPosition);\n            currentWord = word;\n        }\n\n        window.showInputBox({ prompt: 'Search on Cmake online documentation', placeHolder: currentWord }).then(function (result) {\n            if (typeof result != 'undefined') { // Escape\n                if (result.length === 0) { // \n                    result = currentWord;\n                }\n                if (result != \"\") {\n                    cmake_online_help(result);\n                }\n            }\n        });\n    });\n\n    const CMAKE_LANGUAGE = 'cmake';\n    const CMAKE_SELECTOR: DocumentSelector = [\n        { language: CMAKE_LANGUAGE, scheme: 'file' },\n        { language: CMAKE_LANGUAGE, scheme: 'untitled' },\n    ];\n\n    languages.registerHoverProvider(CMAKE_SELECTOR, new CMakeExtraInfoSupport());\n    languages.registerCompletionItemProvider(CMAKE_SELECTOR, new CMakeSuggestionSupport());\n\n    languages.setLanguageConfiguration(CMAKE_LANGUAGE, {\n        indentationRules: {\n            // ^(.*\\*/)?\\s*\\}.*$\n            decreaseIndentPattern: /^(.*\\*\\/)?\\s*\\}.*$/,\n            // ^.*\\{[^}\"']*$\n            increaseIndentPattern: /^.*\\{[^}\"']*$/\n        },\n        wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,\n        comments: {\n            lineComment: '#'\n        },\n        brackets: [\n            ['{', '}'],\n            ['(', ')'],\n        ],\n\n        __electricCharacterSupport: {\n            brackets: [\n                { tokenType: 'delimiter.curly.ts', open: '{', close: '}', isElectric: true },\n                { tokenType: 'delimiter.square.ts', open: '[', close: ']', isElectric: true },\n                { tokenType: 'delimiter.paren.ts', open: '(', close: ')', isElectric: true }\n            ]\n        },\n\n        __characterPairSupport: {\n            autoClosingPairs: [\n                { open: '{', close: '}' },\n                { open: '(', close: ')' },\n                { open: '\"', close: '\"', notIn: ['string'] },\n            ]\n        }\n    });\n}\n\n// Show Tooltip on mouse over\nclass CMakeExtraInfoSupport implements HoverProvider {\n\n    public provideHover(document: TextDocument, position: Position, token: CancellationToken): Thenable<Hover> {\n        let range = document.getWordRangeAtPosition(position);\n        let value = document.getText(range);\n        let promises = cmake_help_all();\n\n        return Promise.all([\n            cmCommandsSuggestionsExact(value),\n            cmVariablesSuggestionsExact(value),\n            cmModulesSuggestionsExact(value),\n            cmPropertiesSuggestionsExact(value),\n        ]).then(function (results) {\n            var suggestions = Array.prototype.concat.apply([], results);\n            if (suggestions.length == 0) {\n                return null;\n            }\n            let suggestion: CompletionItem = suggestions[0];\n\n            return promises[cmakeTypeFromvscodeKind(suggestion.kind)](suggestion.label).then(function (result: string) {\n                let lines = result.split('\\n');\n                lines = lines.slice(2, lines.length);\n                let hover = new Hover({ language: 'md', value: lines.join('\\n') });                \n                return hover;\n            });\n        });\n    }\n}\n\nfunction vscodeKindFromCMakeCodeClass(kind: string): CompletionItemKind {\n    switch (kind) {\n        case \"function\":\n            return CompletionItemKind.Function;\n        case \"variable\":\n            return CompletionItemKind.Variable;\n        case \"module\":\n            return CompletionItemKind.Module;\n    }\n    return CompletionItemKind.Property; // TODO@EG additional mappings needed?\n}\n\nfunction cmakeTypeFromvscodeKind(kind: CompletionItemKind): string {\n    switch (kind) {\n        case CompletionItemKind.Function:\n            return \"function\";\n        case CompletionItemKind.Variable:\n            return \"variable\";\n        case CompletionItemKind.Module:\n            return \"module\";\n    }\n    return \"property\";\n}\n\n\nfunction suggestionsHelper(cmake_cmd, currentWord: string, type: string, insertText, matchPredicate): Thenable<CompletionItem[]> {\n    return new Promise(function (resolve, reject) {\n        cmake_cmd.then(function (stdout: string) {\n            let commands = stdout.split('\\n').filter(function (v) { return matchPredicate(v, currentWord) });\n            if (commands.length > 0) {\n                let suggestions = commands.map(function (command_name) {\n                    var item = new CompletionItem(command_name);\n                    item.kind = vscodeKindFromCMakeCodeClass(type);\n                    if (insertText == null || insertText == '') {\n                        item.insertText = command_name;\n                    } else {\n                        let snippet = new SnippetString(insertText(command_name));\n\n                        item.insertText = snippet;\n                    }\n                    return item;\n                });\n                resolve(suggestions);\n            } else {\n                resolve([]);\n            }\n\n        }).catch(function (err) {\n            reject(err);\n        });\n    });\n}\nfunction cmModuleInsertText(module: string) {\n    if (module.indexOf('Find') == 0) {\n        return 'find_package(' + module.replace('Find', '') + '${1: REQUIRED})';\n    } else {\n        return 'include(' + module + ')';\n    }\n}\n\nfunction cmFunctionInsertText(func: string) {\n    let scoped_func = ['if', 'function', 'while', 'macro', 'foreach'];\n    let is_scoped = scoped_func.reduceRight(function (prev, name, idx, array) { return prev || func == name; }, false);\n    if (is_scoped)\n        return func + '(${1})\\n\\t\\nend' + func + '(${1})\\n';\n    else\n        return func + '(${1})'\n}\nfunction cmVariableInsertText(variable: string) {\n    return variable.replace(/<(.*)>/g, '${1:<$1>}');\n}\nfunction cmPropetryInsertText(variable: string) {\n    return variable.replace(/<(.*)>/g, '${1:<$1>}');\n}\n\nfunction cmCommandsSuggestions(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_command_list();\n    return suggestionsHelper(cmd, currentWord, 'function', cmFunctionInsertText, strContains);\n}\n\nfunction cmVariablesSuggestions(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_variable_list();\n    return suggestionsHelper(cmd, currentWord, 'variable', cmVariableInsertText, strContains);\n}\n\n\nfunction cmPropertiesSuggestions(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_property_list();\n    return suggestionsHelper(cmd, currentWord, 'property', cmPropetryInsertText, strContains);\n}\n\nfunction cmModulesSuggestions(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_module_list();\n    return suggestionsHelper(cmd, currentWord, 'module', cmModuleInsertText, strContains);\n}\n\nfunction cmCommandsSuggestionsExact(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_command_list();\n    return suggestionsHelper(cmd, currentWord, 'function', cmFunctionInsertText, strEquals);\n}\n\nfunction cmVariablesSuggestionsExact(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_variable_list();\n    return suggestionsHelper(cmd, currentWord, 'variable', cmVariableInsertText, strEquals);\n}\n\n\nfunction cmPropertiesSuggestionsExact(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_property_list();\n    return suggestionsHelper(cmd, currentWord, 'property', cmPropetryInsertText, strEquals);\n}\n\nfunction cmModulesSuggestionsExact(currentWord: string): Thenable<CompletionItem[]> {\n    let cmd = cmake_help_module_list();\n    return suggestionsHelper(cmd, currentWord, 'module', cmModuleInsertText, strEquals);\n}\n\nclass CMakeSuggestionSupport implements CompletionItemProvider {\n    public triggerCharacters: string[];\n    public excludeTokens: string[] = ['string', 'comment', 'numeric'];\n\n\n    public provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken): Thenable<CompletionItem[]> {\n        let wordAtPosition = document.getWordRangeAtPosition(position);\n        var currentWord = '';\n        if (wordAtPosition && wordAtPosition.start.character < position.character) {\n            var word = document.getText(wordAtPosition);\n            currentWord = word.substr(0, position.character - wordAtPosition.start.character);\n        }\n\n        return new Promise(function (resolve, reject) {\n            Promise.all([\n                cmCommandsSuggestions(currentWord),\n                cmVariablesSuggestions(currentWord),\n                cmPropertiesSuggestions(currentWord),\n                cmModulesSuggestions(currentWord)\n            ]).then(function (results) {\n                var suggestions = Array.prototype.concat.apply([], results);\n                resolve(suggestions);\n            }).catch(err => { reject(err); });\n        });\n    }\n\n    public resolveCompletionItem(item: CompletionItem, token: CancellationToken): Thenable<CompletionItem> {\n        let promises = cmake_help_all();\n        let type = cmakeTypeFromvscodeKind(item.kind);\n        return promises[type](item.label).then(function (result: string) {\n            item.documentation = result.split('\\n')[3];\n            return item;\n        });\n    }\n}\n\n\n// CMake Language Definition\n\n// class CMakeLanguageDef  /*implements LanguageConfiguration*/ {\n//         public comments = {\n// \t\t\tlineComment: '#',\n// \t\t}\n//         public name:string = 'cmake';\n//         public displayName:string= 'Cmake';\n//         public ignoreCase: boolean = true;\n//         public lineComment: string = '#';\n//         public autoClosingPairs:string[][] = [\n//             ['{', '}'],\n//             ['\"', '\"']];\n//        public keywords :string[] = [\n//            'if', 'endif', 'else',\n//            'foreach', 'endforeach',\n//            'function', 'endfunction',\n//            'macro', 'endmacro',\n//            'include',\n//            'set',\n//            'project'\n//        ];\n//         public brackets = [\n//             { token: 'delimiter.parenthesis', open: '(', close: ')' },\n//         ];\n//         public textAfterBrackets:boolean = true;\n//         public variable= /\\$\\{\\w+\\}/;\n//        public  enhancedBrackets = [           \n//             {\n//                 openTrigger: '\\)',\n//                 open: /if\\((\\w*)\\)/i,\n//                 closeComplete: 'endif\\($1\\)',\n//                 matchCase: true,\n//                 closeTrigger: '\\)',\n//                 close: /endif\\($1\\)$/,\n//                 tokenType: 'keyword.tag-if'\n//             },\n//             {\n//                 openTrigger: '\\)',\n//                 open: /foreach\\((\\w*)\\)/i,\n//                 closeComplete: 'endforeach\\($1\\)',\n//                 matchCase: true,\n//                 closeTrigger: '\\)',\n//                 close: /endforeach\\($1\\)$/,\n//                 tokenType: 'keyword.tag-foreach'\n//             },\n//             {\n//                 openTrigger: '\\)',\n//                 open: /function\\((\\w+)\\)/i,\n//                 closeComplete: 'endfunction\\($1\\)',\n//                 matchCase: true,\n//                 closeTrigger: '\\)',\n//                 close: /function\\($1\\)$/,\n//                 tokenType: 'keyword.tag-function'\n//             },\n//             {\n//                 openTrigger: '\\)',\n//                 open: /macro\\((\\w+)\\)/i,\n//                 closeComplete: 'endmacro\\($1\\)',\n//                 matchCase: true,\n//                 closeTrigger: '\\)',\n//                 close: /macro\\($1\\)$/,\n//                 tokenType: 'keyword.tag-macro'\n//             }\n//         ];\n\n//         // we include these common regular expressions\n//         public symbols = /[=><!~?&|+\\-*\\/\\^;\\.,]+/;\n//         public escapes= /\\\\(?:[abfnrtv\\\\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/;\n//         // The main tokenizer for our languages\n//         public tokenizer= {\n//             root: [\n//                 [/([a-zA-Z_]\\w*)( *\\()/,  [{cases: { '@keywords': { token: 'keyword.$0' } , '@default': 'identifier.method'}}, '']],\n//                 { include: '@whitespace' },\n//                 [/\\$\\{\\w+\\}/, 'variable'],\n//                 [/\\d*\\.\\d+([eE][\\-+]?\\d+)?/, 'number.float'],\n//                 [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],\n//                 [/\\d+/, 'number'],\n//                 [/\"/, 'string', '@string.\"'],\n//                 [/'/, 'string', '@string.\\''],\n//             ],\n//             whitespace: [\n//                 [/[ \\t\\r\\n]+/, ''],\n//                 [/#.*$/, 'comment'],\n//             ],\n//             string: [\n//                 [/[^\\\\\"'%]+/, { cases: { '@eos': { token: 'string', next: '@popall' }, '@default': 'string' } }],\n//                 [/@escapes/, 'string.escape'],\n//                 [/\\\\./, 'string.escape.invalid'],\n//                 [/\\$\\{[\\w ]+\\}/, 'variable'],\n//                 [/[\"']/, { cases: { '$#==$S2': { token: 'string', next: '@pop' }, '@default': 'string' } }],\n//                 [/$/, 'string', '@popall']\n//             ],\n//         };\n//     }\n\n"
  },
  {
    "path": "package.json",
    "content": "{\r\n\t\"name\": \"cmake\",\r\n\t\"version\": \"0.0.17\",\r\n\t\"publisher\": \"twxs\",\r\n\t\"displayName\": \"CMake\",\r\n\t\"description\": \"CMake language support for Visual Studio Code\",\r\n\t\"author\": {\r\n\t\t\"name\": \"Nicolas Martin\"\r\n\t},\r\n\t\"repository\": {\r\n\t\t\"type\": \"git\",\r\n\t\t\"url\": \"https://github.com/twxs/vs.language.cmake.git\"\r\n\t},\r\n\r\n\t\"bugs\": {\r\n        \"url\": \"https://github.com/twxs/vs.language.cmake/issues\"\r\n    },\r\n\t\"homepage\": \"https://github.com/twxs/vs.language.cmake/blob/master/README.md\",\r\n\t\"keywords\": [\r\n\t\t\"CMake\",\r\n\t\t\"Syntax\"\r\n\t],\r\n\t\"categories\": [\r\n        \"Languages\", \"Snippets\", \"Other\"\r\n    ],\r\n\t\"icon\": \"images/icon.png\",\r\n\t\"galleryBanner\": {\r\n        \"color\": \"#5c2d91\",\r\n        \"theme\": \"dark\"\r\n    },\r\n\t\"license\": \"MIT\",\r\n\t\"activationEvents\": [\r\n\t\t\"onLanguage:cmake\"\r\n\t],\r\n\t\"engines\": {\r\n\t\t\"vscode\": \"^1.10.0\"\r\n\t},\r\n\t\"main\": \"./out/extension\",\r\n\t\"contributes\": {\r\n\t\t\"languages\": [\r\n\t\t\t{\r\n\t\t\t\t\"id\": \"cmake\",\r\n\t\t\t\t\"extensions\": [\r\n\t\t\t\t\t\".cmake\"\r\n\t\t\t\t],\r\n\t\t\t\t\"filenames\": [\r\n\t\t\t\t\t\"CMakelists.txt\"\r\n\t\t\t\t],\r\n\t\t\t\t\"aliases\": [\r\n\t\t\t\t\t\"CMake\"\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"id\": \"cmake-cache\",\r\n\t\t\t\t\"filenames\": [\r\n\t\t\t\t\t\"CMakeCache.txt\"\r\n\t\t\t\t],\r\n\t\t\t\t\"aliases\": [\r\n\t\t\t\t\t\"CMake Cache\"\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"commands\": [\r\n\t\t\t{\r\n\t\t\t\t\"command\": \"cmake.onlineHelp\",\r\n\t\t\t\t\"title\": \"CMake: Online Help\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"grammars\": [\r\n\t\t\t{\r\n\t\t\t\t\"language\": \"cmake\",\r\n\t\t\t\t\"scopeName\": \"source.cmake\",\r\n\t\t\t\t\"path\": \"./syntaxes/CMake.tmLanguage\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"language\": \"cmake-cache\",\r\n\t\t\t\t\"scopeName\": \"source.cmakecache\",\r\n\t\t\t\t\"path\": \"./syntaxes/CMakeCache.tmLanguage\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"configuration\": {\r\n\t\t\t\"title\": \"CMake configuration\",\r\n\t\t\t\"properties\": {\r\n\t\t\t\t\"cmake.cmakePath\": {\r\n                    \"type\": \"string\",\r\n                    \"default\": \"cmake\",\r\n                    \"description\": \"The path to CMake generator executable\"\r\n                }\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"scripts\": {\r\n        \"vscode:prepublish\": \"tsc -p ./\",\r\n        \"compile\": \"tsc -watch -p ./\",\r\n        \"postinstall\": \"node ./node_modules/vscode/bin/install\"\r\n    },\r\n\t\"dependencies\": {\r\n\t\t\"opener\": \"^1.4.2\"\r\n\t},\r\n    \"devDependencies\": {\r\n        \"typescript\": \"^2.0.9\",\r\n        \"vscode\": \"^1.0.3\",\r\n        \"@types/node\": \"^6.0.47\",\r\n        \"mocha\": \"^3.1.2\",\r\n        \"@types/mocha\": \"^2.2.33\"\r\n    }\r\n}\r\n"
  },
  {
    "path": "syntaxes/CMake.tmLanguage",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>fileTypes</key>\n\t<array>\n\t\t<string>cmake</string>\n\t\t<string>CMakeLists.txt</string>\n\t</array>\n\t<key>name</key>\n\t<string>CMake</string>\n\t<key>patterns</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Variables That Describe the System</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:APPLE|BORLAND|(CMAKE_)?(CL_64|COMPILER_2005|HOST_APPLE|HOST_SYSTEM|HOST_SYSTEM_NAME|HOST_SYSTEM_PROCESSOR|HOST_SYSTEM_VERSION|HOST_UNIX|HOST_WIN32|LIBRARY_ARCHITECTURE|LIBRARY_ARCHITECTURE_REGEX|OBJECT_PATH_MAX|SYSTEM|SYSTEM_NAME|SYSTEM_PROCESSOR|SYSTEM_VERSION)|CYGWIN|MSVC|MSVC80|MSVC_IDE|MSVC_VERSION|UNIX|WIN32|XCODE_VERSION|MSVC60|MSVC70|MSVC90|MSVC71)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>constant.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>cmakeOperators</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ABSOLUTE|AND|BOOL|CACHE|COMMAND|COMMENT|DEFINED|DOC|EQUAL|EXISTS|EXT|FALSE|GREATER|GREATER_EQUAL|INTERNAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LESS|LESS_EQUAL|MATCHES|NAME|NAMES|NAME_WE|NOT|OFF|ON|OR|PATH|PATHS|POLICY|PROGRAM|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|TRUE|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>keyword.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Commands</string>\n\t\t\t<key>match</key>\n\t\t\t<string>^\\s*\\b(?i:add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_libraries|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>keyword.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Variables That Change Behavior</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION))\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>variable.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>match</key>\n\t\t\t<string>\\$\\{\\w+\\}</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>match</key>\n\t\t\t<string>\\$ENV\\{\\w+\\}</string>\n\t\t\t<key>name</key>\n\t\t\t<string>storage.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Variables that Control the Build</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>variable.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Variables that Provide Information</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|\\w+_BINARY_DIR|\\w+__SOURCE_DIR)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>variable.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>BracketArgs</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>#\\[(=*)\\[</string>\n\t\t\t<key>end</key>\n\t\t\t<string>\\]\\1\\]</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.source.cmake</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>match</key>\n\t\t\t\t\t<string>\\\\(.|$)</string>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>constant.character.escape</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\t\n\t\t\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>BracketArgs</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>\\[(=*)\\[</string>\n\t\t\t<key>end</key>\n\t\t\t<string>\\]\\1\\]</string>\n\t\t\t<key>name</key>\n\t\t\t<string>argument.source.cmake</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>match</key>\n\t\t\t\t\t<string>\\\\(.|$)</string>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>constant.character.escape</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\t\n\t\t\t\n\t\t<dict>\n\t\t\t<key>match</key>\n\t\t\t<string>#+.*$</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Cache Entries</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ADVANCED|HELPSTRING|MODIFIED|STRINGS|TYPE|VALUE)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Source Files</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ABSTRACT|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_&lt;CONFIG&gt;|COMPILE_FLAGS|EXTERNAL_OBJECT|Fortran_FORMAT|GENERATED|HEADER_FILE_ONLY|KEEP_EXTENSION|LABELS|LANGUAGE|LOCATION|MACOSX_PACKAGE_LOCATION|OBJECT_DEPENDS|OBJECT_OUTPUTS|SYMBOLIC|WRAP_EXCLUDE)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Tests</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|COST|DEPENDS|ENVIRONMENT|FAIL_REGULAR_EXPRESSION|LABELS|MEASUREMENT|PASS_REGULAR_EXPRESSION|PROCESSORS|REQUIRED_FILES|RESOURCE_LOCK|RUN_SERIAL|TIMEOUT|WILL_FAIL|WORKING_DIRECTORY)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Directories</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ADDITIONAL_MAKE_CLEAN_FILES|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_\\w+|DEFINITIONS|EXCLUDE_FROM_ALL|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LINK_DIRECTORIES|LISTFILE_STACK|MACROS|PARENT_DIRECTORY|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|TEST_INCLUDE_FILE|VARIABLES|VS_GLOBAL_SECTION_POST_\\w+|VS_GLOBAL_SECTION_PRE_\\w+)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties of Global Scope</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:ALLOW_DUPLICATE_CUSTOM_TARGETS|DEBUG_CONFIGURATIONS|DISABLED_FEATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|IN_TRY_COMPILE|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PREDEFINED_TARGETS_FOLDER|REPORT_UNDEFINED_PROPERTIES|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_SUPPORTS_SHARED_LIBS|USE_FOLDERS|__CMAKE_DELETE_CACHE_CHANGE_VARS_)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Targets</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:\\w+_(OUTPUT_NAME|POSTFIX)|ARCHIVE_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|AUTOMOC(_MOC_OPTIONS)?|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE(_EXTENSION)?|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPILE_(DEFINITIONS(_\\w+)?|FLAGS)|DEBUG_POSTFIX|DEFINE_SYMBOL|ENABLE_EXPORTS|EXCLUDE_FROM_ALL|EchoString|FOLDER|FRAMEWORK|Fortran_(FORMAT|MODULE_DIRECTORY)|GENERATOR_FILE_NAME|GNUtoMS|HAS_CXX|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(CONFIGURATIONS|IMPLIB(_\\w+)?|LINK_DEPENDENT_LIBRARIES(_\\w+)?|LINK_INTERFACE_LANGUAGES(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LOCATION(_\\w+)?|NO_SONAME(_\\w+)?|SONAME(_\\w+)?)|IMPORT_PREFIX|IMPORT_SUFFIX|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_INCLUDE_DIRECTORIES|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LABELS|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_NAME(_\\w+)?|LINKER_LANGUAGE|LINK_DEPENDS|LINK_FLAGS(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LINK_LIBRARIES|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|LOCATION(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MAP_IMPORTED_CONFIG_\\w+|NO_SONAME|OSX_ARCHITECTURES(_\\w+)?|OUTPUT_NAME(_\\w+)?|PDB_NAME(_\\w+)?|POST_INSTALL_SCRIPT|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE|PRIVATE_HEADER|PROJECT_LABEL|PUBLIC|PUBLIC_HEADER|RESOURCE|RULE_LAUNCH_(COMPILE|CUSTOM|LINK)|RUNTIME_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|SKIP_BUILD_RPATH|SOURCES|SOVERSION|STATIC_LIBRARY_FLAGS(_\\w+)?|SUFFIX|TYPE|VERSION|VS_DOTNET_REFERENCES|VS_GLOBAL_(\\w+|KEYWORD|PROJECT_TYPES)|VS_KEYWORD|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|WIN32_EXECUTABLE|XCODE_ATTRIBUTE_\\w+)\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<!-- cf https://github.com/twxs/vs.language.cmake/issues/14 -->\n\t\t\t<string>Escaped Strings</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>\\\\\"</string>\n\t\t\t<key>end</key>\n\t\t\t<string>\\\\\"</string>\n\t\t\t<key>name</key>\n\t\t\t<string>string.source.cmake</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>match</key>\n\t\t\t\t\t<string>\\\\(.|$)</string>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>constant.character.escape</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Normal Strings</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>\"</string>\n\t\t\t<key>end</key>\n\t\t\t<string>\"</string>\n\t\t\t<key>name</key>\n\t\t\t<string>string.source.cmake</string>\n\t\t\t<key>patterns</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>match</key>\n\t\t\t\t\t<string>\\\\(.|$)</string>\n\t\t\t\t\t<key>name</key>\n\t\t\t\t\t<string>constant.character.escape</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t\n\t\t\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Derecated keyword</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\bBUILD_NAME\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>invalid.deprecated.source.cmake</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Compiler Flags</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:(CMAKE_)?(CXX_FLAGS|CMAKE_CXX_FLAGS_DEBUG|CMAKE_CXX_FLAGS_MINSIZEREL|CMAKE_CXX_FLAGS_RELEASE|CMAKE_CXX_FLAGS_RELWITHDEBINFO))\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>variable.source.cmake</string>\n\t\t</dict>\n\t</array>\n\t<key>repository</key>\n\t\t\n\t\t\n\t<dict>\n\t\n\t</dict>\n\t<key>scopeName</key>\n\t<string>source.cmake</string>\n\t<key>uuid</key>\n\t<string>7aed2d59-22d9-41c8-ba9e-4f178191e380</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "syntaxes/CMakeCache.tmLanguage",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>fileTypes</key>\n\t<array>\n\t\t<string>CMakeCache.txt</string>\n\t</array>\n\t<key>name</key>\n\t<string>CMake</string>\n\t<key>patterns</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>match</key>\n\t\t\t<string>//+.*$|#+.*$</string>\n\t\t\t<key>name</key>\n\t\t\t<string>comment.source.cmakecache</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Properties on Cache Entries</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b-ADVANCED\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>entity.source.cmakecache</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Literal values</string>\n\t\t\t<key>match</key>\n\t\t\t<string>\\b(?i:(YES|NO|ON|OFF|TRUE|FALSE|Y|N|\\d+))$</string>\n\t\t\t<key>name</key>\n\t\t\t<string>constant.source.cmakecache</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Normal Strings</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>=</string>\n\t\t\t<key>end</key>\n\t\t\t<string>$</string>\n\t\t\t<key>name</key>\n\t\t\t<string>string.source.cmakecache</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Cache Entry Names</string>\n\t\t\t<key>match</key>\n\t\t\t<string>^\\b(?i:(\\w+))\\b</string>\n\t\t\t<key>name</key>\n\t\t\t<string>variable.source.cmakecache</string>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>comment</key>\n\t\t\t<string>Cache Entry Types</string>\n\t\t\t<key>begin</key>\n\t\t\t<string>:</string>\n\t\t\t<key>end</key>\n\t\t\t<string>=</string>\n\t\t\t<key>match</key>\n\t\t\t<string>(BOOL|STRING|FILEPATH|PATH|STATIC|INTERNAL)</string>\n\t\t\t<key>name</key>\n\t\t\t<string>keyword.source.cmakecache</string>\n\t\t</dict>\n\t</array>\n\t<key>repository</key>\n\n\n\t<dict>\n\n\t</dict>\n\t<key>scopeName</key>\n\t<string>source.cmakecache</string>\n\t<key>uuid</key>\n\t<string>b545774b-6d11-4f08-bb0a-e64cccc9528c</string>\n</dict>\n</plist>"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n    \"compilerOptions\": {\n        \"module\": \"commonjs\",\n        \"target\": \"ES6\",\n        \"outDir\": \"out\",\n        \"lib\": [\n            \"es6\"\n        ],\n        \"sourceMap\": true,\n        \"rootDir\": \".\"\n    },\n    \"exclude\": [\n        \"node_modules\"\n    ]\n}"
  }
]