/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; declare var require:(moduleId:[string], callback:(module:T)=>void, error:(err:any)=>void)=>void; // Allow for running under nodejs/requirejs in tests var _monaco: typeof monaco = (typeof monaco === 'undefined' ? (self).monaco : monaco); interface ILang extends monaco.languages.ILanguageExtensionPoint { module: string; } interface ILangImpl { conf: monaco.languages.LanguageConfiguration; language: monaco.languages.IMonarchLanguage; } let languageDefinitions:{[languageId:string]:ILang} = {}; export function loadLanguage(languageId:string): monaco.Promise { let module = languageDefinitions[languageId].module; return new _monaco.Promise((c, e, p) => { require([module], (mod) => { _monaco.languages.setMonarchTokensProvider(languageId, mod.language); _monaco.languages.setLanguageConfiguration(languageId, mod.conf); c(void 0); }, e); }); } function registerLanguage(def:ILang): void { let languageId = def.id; languageDefinitions[languageId] = def; _monaco.languages.register(def); _monaco.languages.onLanguage(languageId, () => { loadLanguage(languageId); }); } registerLanguage({ id: 'bat', extensions: [ '.bat', '.cmd'], aliases: [ 'Batch', 'bat' ], module: './bat' }); registerLanguage({ id: 'coffeescript', extensions: [ '.coffee' ], aliases: [ 'CoffeeScript', 'coffeescript', 'coffee' ], mimetypes: ['text/x-coffeescript', 'text/coffeescript'], module: './coffee' }); registerLanguage({ id: 'c', extensions: [ '.c', '.h' ], aliases: [ 'C', 'c' ], module: './cpp' }); registerLanguage({ id: 'cpp', extensions: [ '.cpp', '.cc', '.cxx', '.hpp', '.hh', '.hxx' ], aliases: [ 'C++', 'Cpp', 'cpp'], module: './cpp' }); registerLanguage({ id: 'csharp', extensions: [ '.cs', '.csx' ], aliases: [ 'C#', 'csharp' ], module: './csharp' }); registerLanguage({ id: 'dockerfile', extensions: [ '.dockerfile' ], filenames: [ 'Dockerfile' ], aliases: [ 'Dockerfile' ], module: './dockerfile' }); registerLanguage({ id: 'fsharp', extensions: [ '.fs', '.fsi', '.ml', '.mli', '.fsx', '.fsscript' ], aliases: [ 'F#', 'FSharp', 'fsharp' ], module: './fsharp' }); registerLanguage({ id: 'go', extensions: [ '.go' ], aliases: [ 'Go' ], module: './go' }); registerLanguage({ id: 'ini', extensions: [ '.ini', '.properties', '.gitconfig' ], filenames: ['config', '.gitattributes', '.gitconfig', '.editorconfig'], aliases: [ 'Ini', 'ini' ], module: './ini' }); registerLanguage({ id: 'jade', extensions: [ '.jade', '.pug' ], aliases: [ 'Jade', 'jade' ], module: './jade' }); registerLanguage({ id: 'java', extensions: [ '.java', '.jav' ], aliases: [ 'Java', 'java' ], mimetypes: ['text/x-java-source', 'text/x-java'], module: './java' }); registerLanguage({ id: 'lua', extensions: [ '.lua' ], aliases: [ 'Lua', 'lua' ], module: './lua' }); registerLanguage({ id: 'markdown', extensions: ['.md', '.markdown', '.mdown', '.mkdn', '.mkd', '.mdwn', '.mdtxt', '.mdtext'], aliases: ['Markdown', 'markdown'], module: './markdown' }); registerLanguage({ id: 'objective-c', extensions: [ '.m' ], aliases: [ 'Objective-C'], module: './objective-c' }); registerLanguage({ id: 'powershell', extensions: [ '.ps1', '.psm1', '.psd1' ], aliases: [ 'PowerShell', 'powershell', 'ps', 'ps1' ], module: './powershell' }); registerLanguage({ id: 'python', extensions: [ '.py', '.rpy', '.pyw', '.cpy', '.gyp', '.gypi' ], aliases: [ 'Python', 'py' ], firstLine: '^#!/.*\\bpython[0-9.-]*\\b', module: './python' }); registerLanguage({ id: 'r', extensions: [ '.r', '.rhistory', '.rprofile', '.rt' ], aliases: [ 'R', 'r' ], module: './r' }); registerLanguage({ id: 'ruby', extensions: [ '.rb', '.rbx', '.rjs', '.gemspec', '.pp' ], filenames: [ 'rakefile' ], aliases: [ 'Ruby', 'rb' ], module: './ruby' }); registerLanguage({ id: 'swift', aliases: ['Swift','swift'], extensions: ['.swift'], mimetypes: ['text/swift'], module: './swift' }); registerLanguage({ id: 'sql', extensions: [ '.sql' ], aliases: [ 'SQL' ], module: './sql' }); registerLanguage({ id: 'vb', extensions: [ '.vb' ], aliases: [ 'Visual Basic', 'vb' ], module: './vb' }); registerLanguage({ id: 'xml', extensions: [ '.xml', '.dtd', '.ascx', '.csproj', '.config', '.wxi', '.wxl', '.wxs', '.xaml', '.svg', '.svgz' ], firstLine : '(\\<\\?xml.*)|(\\