/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ export var conf = { comments: { lineComment: '//', blockComment: ['/*', '*/'] }, brackets: [ ['{', '}'], ['[', ']'], ['(', ')'] ], autoClosingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: "'", close: "'", notIn: ['string', 'comment'] }, { open: '"', close: '"', notIn: ['string'] }, { open: '`', close: '`', notIn: ['string', 'comment'] }, { open: '/**', close: ' */', notIn: ['string'] } ], surroundingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '<', close: '>' }, { open: "'", close: "'" }, { open: '(', close: ')' }, { open: '"', close: '"' }, { open: '`', close: '`' } ], folding: { markers: { start: /^\s*\s*#?region\b/, end: /^\s*\s*#?endregion\b/ } } }; export var language = { defaultToken: 'invalid', tokenPostfix: '.dart', keywords: [ 'abstract', 'dynamic', 'implements', 'show', 'as', 'else', 'import', 'static', 'assert', 'enum', 'in', 'super', 'async', 'export', 'interface', 'switch', 'await', 'extends', 'is', 'sync', 'break', 'external', 'library', 'this', 'case', 'factory', 'mixin', 'throw', 'catch', 'false', 'new', 'true', 'class', 'final', 'null', 'try', 'const', 'finally', 'on', 'typedef', 'continue', 'for', 'operator', 'var', 'covariant', 'Function', 'part', 'void', 'default', 'get', 'rethrow', 'while', 'deferred', 'hide', 'return', 'with', 'do', 'if', 'set', 'yield' ], typeKeywords: ['int', 'double', 'String', 'bool'], operators: [ '+', '-', '*', '/', '~/', '%', '++', '--', '==', '!=', '>', '<', '>=', '<=', '=', '-=', '/=', '%=', '>>=', '^=', '+=', '*=', '~/=', '<<=', '&=', '!=', '||', '&&', '&', '|', '^', '~', '<<', '>>', '!', '>>>', '??', '?', ':', '|=' ], // we include these common regular expressions symbols: /[=>](?!@symbols)/, '@brackets'], [/!(?=([^=]|$))/, 'delimiter'], [ /@symbols/, { cases: { '@operators': 'delimiter', '@default': '' } } ], // numbers [/(@digits)[eE]([\-+]?(@digits))?/, 'number.float'], [/(@digits)\.(@digits)([eE][\-+]?(@digits))?/, 'number.float'], [/0[xX](@hexdigits)n?/, 'number.hex'], [/0[oO]?(@octaldigits)n?/, 'number.octal'], [/0[bB](@binarydigits)n?/, 'number.binary'], [/(@digits)n?/, 'number'], // delimiter: after number because of .\d floats [/[;,.]/, 'delimiter'], // strings [/"([^"\\]|\\.)*$/, 'string.invalid'], [/'([^'\\]|\\.)*$/, 'string.invalid'], [/"/, 'string', '@string_double'], [/'/, 'string', '@string_single'] // [/[a-zA-Z]+/, "variable"] ], whitespace: [ [/[ \t\r\n]+/, ''], [/\/\*\*(?!\/)/, 'comment.doc', '@jsdoc'], [/\/\*/, 'comment', '@comment'], [/\/\/\/.*$/, 'comment.doc'], [/\/\/.*$/, 'comment'] ], comment: [ [/[^\/*]+/, 'comment'], [/\*\//, 'comment', '@pop'], [/[\/*]/, 'comment'] ], jsdoc: [ [/[^\/*]+/, 'comment.doc'], [/\*\//, 'comment.doc', '@pop'], [/[\/*]/, 'comment.doc'] ], // We match regular expression quite precisely regexp: [ [ /(\{)(\d+(?:,\d*)?)(\})/, ['regexp.escape.control', 'regexp.escape.control', 'regexp.escape.control'] ], [ /(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/, ['regexp.escape.control', { token: 'regexp.escape.control', next: '@regexrange' }] ], [/(\()(\?:|\?=|\?!)/, ['regexp.escape.control', 'regexp.escape.control']], [/[()]/, 'regexp.escape.control'], [/@regexpctl/, 'regexp.escape.control'], [/[^\\\/]/, 'regexp'], [/@regexpesc/, 'regexp.escape'], [/\\\./, 'regexp.invalid'], [ /(\/)([gimsuy]*)/, [{ token: 'regexp', bracket: '@close', next: '@pop' }, 'keyword.other'] ] ], regexrange: [ [/-/, 'regexp.escape.control'], [/\^/, 'regexp.invalid'], [/@regexpesc/, 'regexp.escape'], [/[^\]]/, 'regexp'], [ /\]/, { token: 'regexp.escape.control', next: '@pop', bracket: '@close' } ] ], string_double: [ [/[^\\"\$]+/, 'string'], [/[^\\"]+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/"/, 'string', '@pop'], [/\$\w+/, 'identifier'] ], string_single: [ [/[^\\'\$]+/, 'string'], [/@escapes/, 'string.escape'], [/\\./, 'string.escape.invalid'], [/'/, 'string', '@pop'], [/\$\w+/, 'identifier'] ] } };