This commit is contained in:
Alex Dima 2016-11-15 18:14:25 -08:00
Родитель cb2c572184
Коммит 975e2e3fad
59 изменённых файлов: 52555 добавлений и 102 удалений

Просмотреть файл

@ -8,7 +8,7 @@ import { IRawGrammar, IRawRepository, IRawRule } from './types';
import { IRuleRegistry, IRuleFactoryHelper, RuleFactory, Rule, CaptureRule, BeginEndRule, BeginWhileRule, MatchRule, ICompiledRule, createOnigString, getString } from './rule';
import { IOnigCaptureIndex, OnigString } from 'oniguruma';
import { createMatcher, Matcher } from './matcher';
import { IGrammar, ITokenizeLineResult, IToken, IEmbeddedLanguagesMap, StandardTokenType, StackElement as StackElementDef } from './main';
import { MetadataConsts, IGrammar, ITokenizeLineResult, ITokenizeLineResult2, IToken, IEmbeddedLanguagesMap, StandardTokenType, StackElement as StackElementDef } from './main';
import { IN_DEBUG_MODE } from './debug';
import { FontStyle, ThemeTrieElementRule } from './theme';
@ -364,6 +364,22 @@ class Grammar implements IGrammar, IRuleFactoryHelper {
}
public tokenizeLine(lineText: string, prevState: StackElement): ITokenizeLineResult {
let r = this._tokenize(lineText, prevState, false);
return {
tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),
ruleStack: r.ruleStack
};
}
public tokenizeLine2(lineText: string, prevState: StackElement): ITokenizeLineResult2 {
let r = this._tokenize(lineText, prevState, true);
return {
tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),
ruleStack: r.ruleStack
};
}
private _tokenize(lineText: string, prevState: StackElement, emitBinaryTokens: boolean): { lineLength: number; lineTokens: LineTokens; ruleStack: StackElement; } {
if (this._rootId === -1) {
this._rootId = RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository);
}
@ -388,14 +404,12 @@ class Grammar implements IGrammar, IRuleFactoryHelper {
lineText = lineText + '\n';
let onigLineText = createOnigString(lineText);
let lineLength = getString(onigLineText).length;
let lineTokens = new LineTokens(/*true*/false, lineText);
let lineTokens = new LineTokens(emitBinaryTokens, lineText);
let nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens);
let _produced = lineTokens.getResult(nextState, lineLength);
// let _produced = lineTokens.getBinaryResult(nextState, lineLength);
return {
tokens: _produced,
lineLength: lineLength,
lineTokens: lineTokens,
ruleStack: nextState
};
}
@ -828,39 +842,7 @@ function _tokenizeString(grammar: Grammar, lineText: OnigString, isFirstLine: bo
return stack;
}
/**
* Helpers to manage the "collapsed" metadata of an entire StackElement stack.
* The following assumptions have been made:
* - languageId < 256 => needs 8 bits
* - unique color count < 512 => needs 9 bits
*
* The binary format is:
* --------------------------------------------
* 3322 2222 2222 1111 1111 1100 0000 0000
* 1098 7654 3210 9876 5432 1098 7654 3210
* --------------------------------------------
* xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
* bbbb bbbb bfff ffff ffFF FTTT LLLL LLLL
* --------------------------------------------
* L = LanguageId (8 bits)
* T = StandardTokenType (3 bits)
* F = FontStyle (3 bits)
* f = foreground color (9 bits)
* b = background color (9 bits)
*/
export const enum MetadataConsts {
LANGUAGEID_MASK = 0b00000000000000000000000011111111,
TOKEN_TYPE_MASK = 0b00000000000000000000011100000000,
FONT_STYLE_MASK = 0b00000000000000000011100000000000,
FOREGROUND_MASK = 0b00000000011111111100000000000000,
BACKGROUND_MASK = 0b11111111100000000000000000000000,
LANGUAGEID_OFFSET = 0,
TOKEN_TYPE_OFFSET = 8,
FONT_STYLE_OFFSET = 11,
FOREGROUND_OFFSET = 14,
BACKGROUND_OFFSET = 23
}
export class StackElementMetadata {
public static toBinaryStr(metadata: number): string {
@ -1166,52 +1148,27 @@ class LineTokens {
}
public produce(stack: StackElement, endIndex: number, extraScopes?: LocalStackElement[]): void {
// console.log('PRODUCE TOKEN: lastTokenEndIndex: ' + this._lastTokenEndIndex + ', endIndex: ' + endIndex);
if (this._lastTokenEndIndex >= endIndex) {
return;
}
if (this._emitBinaryTokens) {
let metadata:number;
let metadata: number;
if (extraScopes && extraScopes.length > 0) {
metadata = extraScopes[extraScopes.length - 1].scopeMetadata;
} else {
metadata = stack.contentMetadata;
}
let tokenStartIndex = this._lastTokenEndIndex;
let token = tokenStartIndex * ((1<<31)>>>0) + metadata;
if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {
// no need to push a token with the same metadata
return;
}
this._binaryTokens.push(token);
// let token = 0;
console.log('produce token: from ', this._lastTokenEndIndex, ' to ', endIndex);
console.log('OTHER HERE =>');
StackElementMetadata.printMetadata(metadata);
this._binaryTokens.push(this._lastTokenEndIndex);
this._binaryTokens.push(metadata);
this._lastTokenEndIndex = endIndex;
// languageId, tokenType, fontStyle, foreground, background
// public static getLanguageId(metadata: number): number {
// return (metadata & MetadataConsts.LANGUAGEID_MASK) >>> MetadataConsts.LANGUAGEID_OFFSET;
// }
// public static getTokenType(metadata: number): number {
// return (metadata & MetadataConsts.TOKEN_TYPE_MASK) >>> MetadataConsts.TOKEN_TYPE_OFFSET;
// }
// public static getFontStyle(metadata: number): number {
// return (metadata & MetadataConsts.FONT_STYLE_MASK) >>> MetadataConsts.FONT_STYLE_OFFSET;
// }
// public static getForeground(metadata: number): number {
// return (metadata & MetadataConsts.FOREGROUND_MASK) >>> MetadataConsts.FOREGROUND_OFFSET;
// }
// public static getBackground(metadata: number): number {
// return (metadata & MetadataConsts.BACKGROUND_MASK) >>> MetadataConsts.BACKGROUND_OFFSET;
// }
return;
}
@ -1257,7 +1214,17 @@ class LineTokens {
}
public getBinaryResult(stack: StackElement, lineLength: number): number[] {
console.log('TODO!');
if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {
// pop produced token for newline
this._binaryTokens.pop();
this._binaryTokens.pop();
}
if (this._binaryTokens.length === 0) {
this._lastTokenEndIndex = -1;
this.produce(stack, lineLength, null);
this._binaryTokens[this._binaryTokens.length - 2] = 0;
}
return this._binaryTokens;
}

Просмотреть файл

@ -76,6 +76,13 @@ export class Registry {
this._syncRegistry.setTheme(Theme.createFromRawTheme(theme));
}
/**
* Returns a lookup array for color ids.
*/
public getColorMap(): string[] {
return this._syncRegistry.getColorMap();
}
/**
* Load the grammar for `scopeName` and all referenced included grammars asynchronously.
* Please do not use language id 0.
@ -141,7 +148,7 @@ export class Registry {
});
} catch (err) {
if (scopeName === initialScopeName) {
callback(new Error('Unknown location for grammar <' + initialScopeName + '>'));
callback(new Error('Unknown injections for grammar <' + initialScopeName + '>'));
return;
}
}
@ -176,6 +183,18 @@ export interface IGrammar {
* Tokenize `lineText` using previous line state `prevState`.
*/
tokenizeLine(lineText: string, prevState: StackElement): ITokenizeLineResult;
/**
* Tokenize `lineText` using previous line state `prevState`.
* The result contains the tokens in binary format, resolved with the following information:
* - language
* - token type (regex, string, comment, other)
* - font style
* - foreground color
* - background color
* e.g. for getting the languageId: `(metadata & MetadataConsts.LANGUAGEID_MASK) >>> MetadataConsts.LANGUAGEID_OFFSET`
*/
tokenizeLine2(lineText: string, prevState: StackElement): ITokenizeLineResult2;
}
export interface ITokenizeLineResult {
@ -186,6 +205,54 @@ export interface ITokenizeLineResult {
readonly ruleStack: StackElement;
}
/**
* Helpers to manage the "collapsed" metadata of an entire StackElement stack.
* The following assumptions have been made:
* - languageId < 256 => needs 8 bits
* - unique color count < 512 => needs 9 bits
*
* The binary format is:
* --------------------------------------------
* 3322 2222 2222 1111 1111 1100 0000 0000
* 1098 7654 3210 9876 5432 1098 7654 3210
* --------------------------------------------
* xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
* bbbb bbbb bfff ffff ffFF FTTT LLLL LLLL
* --------------------------------------------
* L = LanguageId (8 bits)
* T = StandardTokenType (3 bits)
* F = FontStyle (3 bits)
* f = foreground color (9 bits)
* b = background color (9 bits)
*/
export const enum MetadataConsts {
LANGUAGEID_MASK = 0b00000000000000000000000011111111,
TOKEN_TYPE_MASK = 0b00000000000000000000011100000000,
FONT_STYLE_MASK = 0b00000000000000000011100000000000,
FOREGROUND_MASK = 0b00000000011111111100000000000000,
BACKGROUND_MASK = 0b11111111100000000000000000000000,
LANGUAGEID_OFFSET = 0,
TOKEN_TYPE_OFFSET = 8,
FONT_STYLE_OFFSET = 11,
FOREGROUND_OFFSET = 14,
BACKGROUND_OFFSET = 23
}
export interface ITokenizeLineResult2 {
/**
* The tokens in binary format. Each token occupies two array indices. For token i:
* - at offset 2*i => startIndex
* - at offset 2*i + 1 => metadata
*
*/
readonly tokens: number[];
/**
* The `prevState` to be passed on to the next line tokenization.
*/
readonly ruleStack: StackElement;
}
export interface IToken {
startIndex: number;
readonly endIndex: number;

Просмотреть файл

@ -26,6 +26,10 @@ export class SyncRegistry implements IGrammarRepository {
this._theme = theme;
}
public getColorMap(): string[] {
return this._theme.getColorMap();
}
/**
* Add `grammar` to registry and return a list of referenced scope names
*/

Просмотреть файл

@ -6,9 +6,10 @@
import * as fs from 'fs';
import * as path from 'path';
import * as assert from 'assert';
import { Registry, IToken, IGrammar, RegistryOptions, StackElement } from '../main';
import { Registry, IToken, IGrammar, RegistryOptions, StackElement, IRawTheme, IRawThemeSetting } from '../main';
import { createMatcher } from '../matcher';
import { parse as JSONparse } from '../json';
import { StackElementMetadata } from '../grammar';
import {
Theme, strcmp, strArrCmp, ThemeTrieElement, ThemeTrieElementRule,
parseTheme, ParsedThemeRule,
@ -19,46 +20,304 @@ const THEMES_TEST_PATH = path.join(__dirname, '../../test-cases/themes');
// console.log(THEMES_TEST_PATH);
describe('Theme', () => {
interface ILanguageRegistration {
id: string;
extensions: string[];
}
let light_vs = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'light_vs.json')).toString());
// let light_vs_theme = new Theme(light_vs);
interface IGrammarRegistration {
language: string;
scopeName: string;
path: string;
embeddedLanguages: { [scopeName: string]: string; };
}
interface IExpected {
[theme: string]: IExpectedTokenization[];
}
interface IExpectedTokenization {
content: string;
color: string;
}
// console.log(light_vs_theme);
class Resolver implements RegistryOptions {
public readonly language2id: { [languages: string]: number; };
private _lastLanguageId: number;
private _id2language: string[];
private readonly _grammars: IGrammarRegistration[];
private readonly _languages: ILanguageRegistration[];
// console.log(light_vs);
constructor(grammars: IGrammarRegistration[], languages: ILanguageRegistration[]) {
this._grammars = grammars;
this._languages = languages;
// var light_vs
this.language2id = Object.create(null);
this._lastLanguageId = 0;
this._id2language = [];
// console.log(light_vs._colorMap);
for (let i = 0; i < this._languages.length; i++) {
let languageId = ++this._lastLanguageId;
this.language2id[this._languages[i].id] = languageId;
this._id2language[languageId] = this._languages[i].id;
}
}
it('works', () => {
let registry = new Registry();
registry.setTheme(light_vs);
// console.log(registry._syncRegistry._theme._colorMap);
let grammar = registry.loadGrammarFromPathSync(path.join(THEMES_TEST_PATH, 'go/go.json'));
public findLanguageByExtension(fileExtension: string): string {
for (let i = 0; i < this._languages.length; i++) {
let language = this._languages[i];
let testFile = fs.readFileSync(path.join(THEMES_TEST_PATH, 'go/colorize-fixtures/test.go')).toString('utf8');
let testLines = testFile.split(/\r\n|\r|\n/);
if (!language.extensions) {
continue;
}
let prevState:StackElement = null;
for (let i = 0, len = testLines.length; i < len; i++) {
for (let j = 0; j < language.extensions.length; j++) {
let extension = language.extensions[j];
let r = grammar.tokenizeLine(testLines[i], prevState);
// console.log(JSON.stringify(r, null, '\t'));
prevState = r.ruleStack;
if (i === 0) {
break;
if (extension === fileExtension) {
return language.id;
}
}
}
// console.log(grammar);
});
throw new Error('Could not findLanguageByExtension for ' + fileExtension);
}
});
public findGrammarByLanguage(language: string): IGrammarRegistration {
for (let i = 0; i < this._grammars.length; i++) {
let grammar = this._grammars[i];
if (grammar.language === language) {
return grammar;
}
}
throw new Error('Could not findGrammarByLanguage for ' + language);
}
public getFilePath(scopeName: string): string {
for (let i = 0; i < this._grammars.length; i++) {
let grammar = this._grammars[i];
if (grammar.scopeName === scopeName) {
return path.join(THEMES_TEST_PATH, grammar.path);
}
}
console.warn('missing gramamr for ' + scopeName);
}
}
interface IExplainedThemeScope {
scopeName: string;
themeMatches: IRawThemeSetting[];
}
function explainThemeScope(theme: IRawTheme, scope: string): IRawThemeSetting[] {
let result: IRawThemeSetting[] = [], resultLen = 0;
for (let i = 0, len = theme.settings.length; i < len; i++) {
let setting = theme.settings[i];
let selectors: string[];
if (typeof setting.scope === 'string') {
selectors = setting.scope.split(/,/).map(scope => scope.trim());
} else if (Array.isArray(setting.scope)) {
selectors = setting.scope;
} else {
continue;
}
for (let j = 0, lenJ = selectors.length; j < lenJ; j++) {
let selector = selectors[j];
let selectorPrefix = selector + '.';
if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {
// match!
result[resultLen++] = setting;
}
}
}
return result;
}
function explainThemeScopes(theme: IRawTheme, scopes: string[]): IExplainedThemeScope[] {
return scopes.map(scope => {
return {
scopeName: scope,
themeMatches: explainThemeScope(theme, scope)
};
});
}
function assertTokenization(theme: IRawTheme, colorMap: string[], fileContents: string, grammar: IGrammar, expected: IExpectedTokenization[]): void {
interface ITokenExplanation {
content: string;
scopes: IExplainedThemeScope[];
}
interface IToken {
content: string;
color: string;
explanation: ITokenExplanation[];
}
let lines = fileContents.split(/\r\n|\r|\n/);
let ruleStack: StackElement = null;
let actual: IToken[] = [], actualLen = 0;
for (let i = 0, len = lines.length; i < len; i++) {
let line = lines[i];
let resultWithScopes = grammar.tokenizeLine(line, ruleStack);
let tokensWithScopes = resultWithScopes.tokens;
let result = grammar.tokenizeLine2(line, ruleStack);
let tokensLength = result.tokens.length / 2;
let tokensWithScopesIndex = 0;
for (let j = 0; j < tokensLength; j++) {
let startIndex = result.tokens[2 * j];
let nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;
let tokenText = line.substring(startIndex, nextStartIndex);
if (tokenText === '') {
continue;
}
let metadata = result.tokens[2 * j + 1];
let foreground = StackElementMetadata.getForeground(metadata);
let foregroundColor = colorMap[foreground];
let explanation: ITokenExplanation[] = [];
let tmpTokenText = tokenText;
while (tmpTokenText.length > 0) {
let tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];
let tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);
tmpTokenText = tmpTokenText.substring(tokenWithScopesText.length);
explanation.push({
content: tokenWithScopesText,
scopes: explainThemeScopes(theme, tokenWithScopes.scopes)
});
tokensWithScopesIndex++;
}
actual[actualLen++] = {
content: tokenText,
color: foregroundColor,
explanation: explanation
};
}
ruleStack = result.ruleStack;
}
let fail = (reason: string) => {
fs.writeFileSync('actual.txt', JSON.stringify(actual, null, '\t'));
fs.writeFileSync('expected.txt', JSON.stringify(expected, null, '\t'));
assert.fail(reason);
};
let i = 0, j = 0, len = actual.length, lenJ = expected.length;
do {
if (i >= len && j >= lenJ) {
// ok
break;
}
if (i >= len) {
// will fail
fail('reached end of actual before end of expected');
break;
}
if (j >= lenJ) {
// will fail
fail('reached end of expected before end of actual');
break;
}
let actualContent = actual[i].content;
let actualColor = actual[i].color;
while (actualContent.length > 0 && j < lenJ) {
let expectedContent = expected[j].content;
let expectedColor = expected[j].color;
if (actualColor !== expectedColor) {
fail('at ' + actualContent + ', color mismatch: ' + actualColor + ', ' + expectedColor);
break;
}
if (actualContent.substr(0, expectedContent.length) !== expectedContent) {
fail('at ' + actualContent + ', content mismatch: ' + actualContent + ', ' + expectedContent);
break;
}
actualContent = actualContent.substr(expectedContent.length);
j++;
}
i++;
} while (true);
}
function assertThemeTokenization(themeName:string, theme: IRawTheme, resolver: Resolver): void {
describe('Theme suite ' + themeName, () => {
let registry = new Registry(resolver);
registry.setTheme(theme);
let colorMap = registry.getColorMap();
// Discover all tests
let testFiles = fs.readdirSync(path.join(THEMES_TEST_PATH, 'tests'));
testFiles = testFiles.filter(testFile => !/\.result$/.test(testFile));
testFiles.forEach((testFile) => {
it(testFile, (done) => {
let testFileContents = fs.readFileSync(path.join(THEMES_TEST_PATH, 'tests', testFile)).toString('utf8');
let testFileExpected: IExpected = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'tests', testFile + '.result')).toString('utf8'));
// Determine the language
let testFileExtension = path.extname(testFile);
let language = resolver.findLanguageByExtension(testFileExtension);
let grammar = resolver.findGrammarByLanguage(language);
let embeddedLanguages: { [scopeName: string]: number; } = Object.create(null);
if (grammar.embeddedLanguages) {
for (let scopeName in grammar.embeddedLanguages) {
embeddedLanguages[scopeName] = resolver.language2id[grammar.embeddedLanguages[scopeName]];
}
}
registry.loadGrammarWithEmbeddedLanguages(grammar.scopeName, resolver.language2id[language], embeddedLanguages, (err, grammar) => {
if (err) {
return done(err);
}
assertTokenization(theme, colorMap, testFileContents, grammar, testFileExpected[themeName]);
done();
});
});
});
});
}
(function() {
// Load all themes
let light_vs: IRawTheme = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'light_vs.json')).toString());
let light_plus: IRawTheme = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'light_plus.json')).toString());
(<any>light_plus).settings = light_vs.settings.concat(light_plus.settings);
let dark_vs: IRawTheme = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'dark_vs.json')).toString());
let dark_plus: IRawTheme = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'dark_plus.json')).toString());
(<any>dark_plus).settings = dark_vs.settings.concat(dark_plus.settings);
let hc_black: IRawTheme = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'hc_black.json')).toString());
// Load all language/grammar metadata
let _grammars: IGrammarRegistration[] = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'grammars.json')).toString('utf8'));
let _languages: ILanguageRegistration[] = JSON.parse(fs.readFileSync(path.join(THEMES_TEST_PATH, 'languages.json')).toString('utf8'));
let resolver = new Resolver(_grammars, _languages);
assertThemeTokenization('light_vs', light_vs, resolver);
assertThemeTokenization('light_plus', light_plus, resolver);
assertThemeTokenization('dark_vs', dark_vs, resolver);
assertThemeTokenization('dark_plus', dark_plus, resolver);
assertThemeTokenization('hc_black', hc_black, resolver);
})();
describe('Theme matching', () => {
it('can match', () => {

Просмотреть файл

@ -191,6 +191,7 @@ export class ColorMap {
if (color === null) {
return 0;
}
color = color.toUpperCase();
let value = this._color2id[color];
if (value) {
return value;
@ -201,6 +202,10 @@ export class ColorMap {
return value;
}
public getColorMap(): string[] {
return this._id2color.slice(0);
}
}
export class Theme {
@ -225,6 +230,10 @@ export class Theme {
this._cache = {};
}
public getColorMap(): string[] {
return this._colorMap.getColorMap();
}
public getDefaults(): ThemeTrieElementRule {
return this._defaults;
}
@ -347,10 +356,6 @@ export class ThemeTrieElement {
return [].concat(this._mainRule).concat(this._rulesWithParentScopes);
}
// public insert(rule: ParsedThemeRule): void {
// this._doInsert(rule.scope, rule.parentScopes, rule.fontStyle, rule.foreground, rule.background);
// }
public insert(scope: string, parentScopes: string[], fontStyle: number, foreground: number, background: number): void {
if (scope === '') {
this._doInsertHere(parentScopes, fontStyle, foreground, background);

Просмотреть файл

@ -1,6 +1,11 @@
{
"name": "Dark Visual Studio",
"settings": [
{
"settings": {
"foreground": "#D4D4D4"
}
},
{
"scope": "emphasis",
"settings": {

Просмотреть файл

@ -0,0 +1,265 @@
[
{
"language": "bat",
"scopeName": "source.dosbatch",
"path": "./syntaxes/Batch File.tmLanguage"
},
{
"language": "clojure",
"scopeName": "source.clojure",
"path": "./syntaxes/Clojure.tmLanguage"
},
{
"language": "coffeescript",
"scopeName": "source.coffee",
"path": "./syntaxes/coffeescript.json"
},
{
"language": "c",
"scopeName": "source.c",
"path": "./syntaxes/c.json"
},
{
"language": "cpp",
"scopeName": "source.cpp",
"path": "./syntaxes/c++.json"
},
{
"scopeName": "source.c.platform",
"path": "./syntaxes/Platform.tmLanguage"
},
{
"language": "css",
"scopeName": "source.css",
"path": "./syntaxes/css.plist"
},
{
"language": "diff",
"scopeName": "source.diff",
"path": "./syntaxes/diff.tmLanguage"
},
{
"language": "dockerfile",
"scopeName": "source.dockerfile",
"path": "./syntaxes/Dockerfile.tmLanguage"
},
{
"language": "fsharp",
"scopeName": "source.fsharp",
"path": "./syntaxes/fsharp.json"
},
{
"language": "git-commit",
"scopeName": "text.git-commit",
"path": "./syntaxes/git-commit.tmLanguage"
},
{
"language": "git-rebase",
"scopeName": "text.git-rebase",
"path": "./syntaxes/git-rebase.tmLanguage"
},
{
"language": "go",
"scopeName": "source.go",
"path": "./syntaxes/go.json"
},
{
"language": "groovy",
"scopeName": "source.groovy",
"path": "./syntaxes/Groovy.tmLanguage"
},
{
"language": "handlebars",
"scopeName": "text.html.handlebars",
"path": "./syntaxes/Handlebars.json"
},
{
"language": "html",
"scopeName": "text.html.basic",
"path": "./syntaxes/html.json",
"embeddedLanguages": {
"text.html": "html",
"source.css": "css",
"source.js": "javascript",
"source.python": "python",
"source.smarty": "smarty"
}
},
{
"language": "ini",
"scopeName": "source.properties",
"path": "./syntaxes/properties.plist"
},
{
"language": "properties",
"scopeName": "source.properties",
"path": "./syntaxes/properties.plist"
},
{
"language": "jade",
"scopeName": "text.jade",
"path": "./syntaxes/Jade.json"
},
{
"language": "java",
"scopeName": "source.java",
"path": "./syntaxes/java.json"
},
{
"language": "javascriptreact",
"scopeName": "source.js",
"path": "./syntaxes/JavaScript.tmLanguage.json"
},
{
"language": "javascript",
"scopeName": "source.js",
"path": "./syntaxes/JavaScript.tmLanguage.json"
},
{
"scopeName": "source.js.regexp",
"path": "./syntaxes/Regular Expressions (JavaScript).tmLanguage"
},
{
"language": "json",
"scopeName": "source.json",
"path": "./syntaxes/JSON.tmLanguage"
},
{
"language": "less",
"scopeName": "source.css.less",
"path": "./syntaxes/less.tmLanguage.json"
},
{
"language": "lua",
"scopeName": "source.lua",
"path": "./syntaxes/lua.json"
},
{
"language": "makefile",
"scopeName": "source.makefile",
"path": "./syntaxes/Makefile.json"
},
{
"language": "markdown",
"scopeName": "text.html.markdown",
"path": "./syntaxes/markdown.tmLanguage"
},
{
"language": "objective-c",
"scopeName": "source.objc",
"path": "./syntaxes/Objective-C.tmLanguage"
},
{
"language": "perl",
"scopeName": "source.perl",
"path": "./syntaxes/Perl.plist"
},
{
"language": "perl6",
"scopeName": "source.perl.6",
"path": "./syntaxes/Perl 6.tmLanguage"
},
{
"language": "php",
"scopeName": "text.html.php",
"path": "./syntaxes/php.json",
"embeddedLanguages": {
"text.html": "html",
"source.php": "php",
"source.sql": "sql",
"text.xml": "xml",
"source.js": "javascript",
"source.json": "json",
"source.css": "css"
}
},
{
"language": "powershell",
"scopeName": "source.powershell",
"path": "./syntaxes/PowershellSyntax.tmLanguage"
},
{
"language": "python",
"scopeName": "source.python",
"path": "./syntaxes/MagicPython.tmLanguage.json"
},
{
"scopeName": "source.regexp.python",
"path": "./syntaxes/MagicRegExp.tmLanguage.json"
},
{
"language": "r",
"scopeName": "source.r",
"path": "./syntaxes/R.plist"
},
{
"language": "razor",
"scopeName": "text.html.cshtml",
"path": "./syntaxes/cshtml.json"
},
{
"language": "ruby",
"scopeName": "source.ruby",
"path": "./syntaxes/Ruby.plist"
},
{
"language": "rust",
"path": "./syntaxes/rust.json",
"scopeName": "source.rust"
},
{
"language": "scss",
"scopeName": "source.css.scss",
"path": "./syntaxes/scss.json"
},
{
"language": "shaderlab",
"path": "./syntaxes/shaderlab.json",
"scopeName": "source.shaderlab"
},
{
"language": "shellscript",
"scopeName": "source.shell",
"path": "./syntaxes/Shell-Unix-Bash.tmLanguage.json"
},
{
"language": "sql",
"scopeName": "source.sql",
"path": "./syntaxes/SQL.plist"
},
{
"language": "swift",
"scopeName": "source.swift",
"path": "./syntaxes/swift.json"
},
{
"language": "typescript",
"scopeName": "source.ts",
"path": "./syntaxes/TypeScript.tmLanguage.json"
},
{
"language": "typescriptreact",
"scopeName": "source.tsx",
"path": "./syntaxes/TypeScriptReact.tmLanguage.json"
},
{
"language": "vb",
"scopeName": "source.asp.vb.net",
"path": "./syntaxes/ASPVBnet.plist"
},
{
"language": "xml",
"scopeName": "text.xml",
"path": "./syntaxes/xml.json"
},
{
"language": "xsl",
"scopeName": "text.xml.xsl",
"path": "./syntaxes/xsl.json"
},
{
"language": "yaml",
"scopeName": "source.yaml",
"path": "./syntaxes/yaml.json"
}
]

Просмотреть файл

@ -1,6 +1,11 @@
{
"name": "Dark Visual Studio",
"settings": [
{
"settings": {
"foreground": "#FFFFFF"
}
},
{
"scope": "emphasis",
"settings": {

Просмотреть файл

@ -0,0 +1,750 @@
[
{
"id": "bat",
"extensions": [
".bat",
".cmd"
],
"aliases": [
"Batch",
"bat"
],
"configuration": "./language-configuration.json"
},
{
"id": "clojure",
"aliases": [
"Clojure",
"clojure"
],
"extensions": [
".clj",
".cljs",
".cljx",
".clojure",
".edn"
],
"configuration": "./language-configuration.json"
},
{
"id": "coffeescript",
"extensions": [
".coffee",
".cson"
],
"aliases": [
"CoffeeScript",
"coffeescript",
"coffee"
],
"configuration": "./language-configuration.json"
},
{
"id": "c",
"extensions": [
".c"
],
"aliases": [
"C",
"c"
],
"configuration": "./language-configuration.json"
},
{
"id": "cpp",
"extensions": [
".cpp",
".cc",
".cxx",
".hpp",
".hh",
".hxx",
".h",
".mm",
".ino",
".inl"
],
"aliases": [
"C++",
"Cpp",
"cpp"
],
"configuration": "./language-configuration.json"
},
{
"id": "css",
"aliases": [
"CSS",
"css"
],
"extensions": [
".css"
],
"mimetypes": [
"text/css"
],
"configuration": "./language-configuration.json"
},
{
"id": "diff",
"aliases": [
"Diff",
"diff"
],
"extensions": [
".patch",
".diff",
".rej"
],
"configuration": "./language-configuration.json"
},
{
"id": "dockerfile",
"extensions": [
".dockerfile"
],
"filenames": [
"Dockerfile"
],
"aliases": [
"Dockerfile"
],
"configuration": "./language-configuration.json"
},
{
"id": "fsharp",
"extensions": [
".fs",
".fsi",
".fsx",
".fsscript"
],
"aliases": [
"F#",
"FSharp",
"fsharp"
],
"configuration": "./language-configuration.json"
},
{
"id": "git-commit",
"aliases": [
"Git Commit Message",
"git-commit"
],
"filenames": [
"COMMIT_EDITMSG",
"MERGE_MSG"
],
"configuration": "./git-commit.language-configuration.json"
},
{
"id": "git-rebase",
"aliases": [
"Git Rebase Message",
"git-rebase"
],
"filenames": [
"git-rebase-todo"
],
"configuration": "./git-rebase.language-configuration.json"
},
{
"id": "go",
"extensions": [
".go"
],
"aliases": [
"Go"
],
"configuration": "./language-configuration.json"
},
{
"id": "groovy",
"aliases": [
"Groovy",
"groovy"
],
"extensions": [
".groovy",
".gvy",
".gradle"
],
"firstLine": "^#!.*\\bgroovy\\b",
"configuration": "./language-configuration.json"
},
{
"id": "handlebars",
"extensions": [
".handlebars",
".hbs"
],
"aliases": [
"Handlebars",
"handlebars"
],
"mimetypes": [
"text/x-handlebars-template"
],
"configuration": "./language-configuration.json"
},
{
"id": "html",
"extensions": [
".html",
".htm",
".shtml",
".xhtml",
".mdoc",
".jsp",
".asp",
".aspx",
".jshtm",
".vue"
],
"aliases": [
"HTML",
"htm",
"html",
"xhtml"
],
"mimetypes": [
"text/html",
"text/x-jshtm",
"text/template",
"text/ng-template",
"application/xhtml+xml"
],
"configuration": "./language-configuration.json"
},
{
"id": "ini",
"extensions": [
".ini"
],
"aliases": [
"Ini",
"ini"
],
"configuration": "./ini.language-configuration.json"
},
{
"id": "properties",
"extensions": [
".properties",
".gitconfig"
],
"filenames": [
"config",
".gitattributes",
".gitconfig",
"gitconfig",
".editorconfig"
],
"aliases": [
"properties",
"properties"
],
"configuration": "./properties.language-configuration.json"
},
{
"id": "jade",
"extensions": [
".jade",
".pug"
],
"aliases": [
"Jade",
"jade"
],
"configuration": "./language-configuration.json"
},
{
"id": "java",
"extensions": [
".java",
".jav"
],
"aliases": [
"Java",
"java"
],
"configuration": "./language-configuration.json"
},
{
"id": "javascriptreact",
"aliases": [
"JavaScript React",
"jsx"
],
"extensions": [
".jsx"
],
"configuration": "./language-configuration.json"
},
{
"id": "javascript",
"aliases": [
"JavaScript",
"javascript",
"js"
],
"extensions": [
".js",
".es6"
],
"filenames": [
"jakefile"
],
"firstLine": "^#!.*\\bnode",
"mimetypes": [
"text/javascript"
],
"configuration": "./language-configuration.json"
},
{
"id": "json",
"aliases": [
"JSON",
"json"
],
"extensions": [
".json",
".bowerrc",
".jshintrc",
".jscsrc",
".eslintrc",
".babelrc",
".webmanifest"
],
"mimetypes": [
"application/json",
"application/manifest+json"
],
"configuration": "./language-configuration.json"
},
{
"id": "less",
"aliases": [
"Less",
"less"
],
"extensions": [
".less"
],
"mimetypes": [
"text/x-less",
"text/less"
],
"configuration": "./language-configuration.json"
},
{
"id": "lua",
"extensions": [
".lua"
],
"aliases": [
"Lua",
"lua"
],
"configuration": "./language-configuration.json"
},
{
"id": "makefile",
"aliases": [
"Makefile",
"makefile"
],
"filenames": [
"Makefile",
"makefile",
"GNUmakefile",
"OCamlMakefile"
],
"configuration": "./language-configuration.json"
},
{
"id": "markdown",
"aliases": [
"Markdown",
"markdown"
],
"extensions": [
".md",
".mdown",
".markdown",
".markdn"
],
"configuration": "./language-configuration.json"
},
{
"id": "objective-c",
"extensions": [
".m"
],
"aliases": [
"Objective-C"
],
"configuration": "./language-configuration.json"
},
{
"id": "perl",
"aliases": [
"Perl",
"perl"
],
"extensions": [
".pl",
".pm",
".pod",
".t",
".PL",
".psgi"
],
"firstLine": "^#!.*\\bperl\\b",
"configuration": "./perl.language-configuration.json"
},
{
"id": "perl6",
"aliases": [
"Perl 6",
"perl6"
],
"extensions": [
".p6",
".pl6",
".pm6",
".nqp"
],
"firstLine": "(^#!.*\\bperl6\\b)|use\\s+v6",
"configuration": "./perl6.language-configuration.json"
},
{
"id": "php",
"extensions": [
".php",
".php4",
".php5",
".phtml",
".ctp"
],
"aliases": [
"PHP",
"php"
],
"mimetypes": [
"application/x-php"
],
"configuration": "./language-configuration.json"
},
{
"id": "powershell",
"extensions": [
".ps1",
".psm1",
".psd1",
".pssc",
".psrc"
],
"aliases": [
"PowerShell",
"powershell",
"ps",
"ps1"
],
"configuration": "./language-configuration.json"
},
{
"id": "python",
"extensions": [
".py",
".rpy",
".pyw",
".cpy",
".gyp",
".gypi"
],
"aliases": [
"Python",
"py"
],
"firstLine": "^#!/.*\\bpython[0-9.-]*\\b",
"configuration": "./language-configuration.json"
},
{
"id": "r",
"extensions": [
".r",
".rhistory",
".rprofile",
".rt"
],
"aliases": [
"R",
"r"
],
"configuration": "./language-configuration.json"
},
{
"id": "razor",
"extensions": [
".cshtml"
],
"aliases": [
"Razor",
"razor"
],
"mimetypes": [
"text/x-cshtml"
],
"configuration": "./language-configuration.json"
},
{
"id": "ruby",
"extensions": [
".rb",
".rbx",
".rjs",
".gemspec",
".rake",
".ru"
],
"filenames": [
"rakefile",
"gemfile",
"guardfile"
],
"aliases": [
"Ruby",
"rb"
],
"firstLine": "^#!/.*\\bruby\\b",
"configuration": "./language-configuration.json"
},
{
"id": "rust",
"extensions": [
".rs"
],
"aliases": [
"Rust",
"rust"
],
"configuration": "./language-configuration.json"
},
{
"id": "scss",
"aliases": [
"Sass",
"scss"
],
"extensions": [
".scss"
],
"mimetypes": [
"text/x-scss",
"text/scss"
],
"configuration": "./language-configuration.json"
},
{
"id": "shaderlab",
"extensions": [
".shader",
".cginc"
],
"aliases": [
"ShaderLab",
"shaderlab"
],
"configuration": "./language-configuration.json"
},
{
"id": "shellscript",
"aliases": [
"Shell Script (Bash)",
"shellscript",
"bash",
"sh",
"zsh"
],
"extensions": [
".sh",
".bash",
".bashrc",
".bash_aliases",
".bash_profile",
".bash_login",
".ebuild",
".install",
".profile",
".bash_logout",
".zsh",
".zshrc",
".zprofile",
".zlogin",
".zlogout",
".zshenv"
],
"filenames": [
"PKGBUILD"
],
"firstLine": "^#!.*\\b(bash|zsh|sh|tcsh).*|^#\\s*-\\*-[^*]*mode:\\s*shell-script[^*]*-\\*-",
"configuration": "./language-configuration.json",
"mimetypes": [
"text/x-shellscript"
]
},
{
"id": "sql",
"extensions": [
".sql",
".dsql"
],
"aliases": [
"SQL"
],
"configuration": "./language-configuration.json"
},
{
"id": "swift",
"aliases": [
"Swift",
"swift"
],
"extensions": [
".swift"
],
"configuration": "./language-configuration.json"
},
{
"id": "typescript",
"aliases": [
"TypeScript",
"ts",
"typescript"
],
"extensions": [
".ts"
],
"configuration": "./language-configuration.json"
},
{
"id": "typescriptreact",
"aliases": [
"TypeScript React",
"tsx"
],
"extensions": [
".tsx"
],
"configuration": "./language-configuration.json"
},
{
"id": "vb",
"extensions": [
".vb",
".brs",
".vbs",
".bas"
],
"aliases": [
"Visual Basic",
"vb"
],
"configuration": "./language-configuration.json"
},
{
"id": "xml",
"extensions": [
".xml",
".xsd",
".ascx",
".atom",
".axml",
".bpmn",
".config",
".cpt",
".csl",
".csproj",
".csproj.user",
".dita",
".ditamap",
".dtd",
".dtml",
".fsproj",
".fxml",
".iml",
".isml",
".jmx",
".launch",
".menu",
".mxml",
".nuspec",
".opml",
".owl",
".proj",
".pt",
".pubxml",
".pubxml.user",
".rdf",
".rng",
".rss",
".shproj",
".storyboard",
".svg",
".targets",
".tld",
".tmx",
".vbproj",
".vbproj.user",
".vcxproj",
".vcxproj.filters",
".wsdl",
".wxi",
".wxl",
".wxs",
".xaml",
".xbl",
".xib",
".xlf",
".xliff",
".xpdl",
".xul",
".xoml"
],
"firstLine": "(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",
"aliases": [
"XML",
"xml"
],
"configuration": "./xml.language-configuration.json"
},
{
"id": "xsl",
"extensions": [
".xsl",
".xslt"
],
"aliases": [
"XSL",
"xsl"
],
"configuration": "./xsl.language-configuration.json"
},
{
"id": "yaml",
"aliases": [
"YAML",
"yaml"
],
"extensions": [
".eyaml",
".eyml",
".yaml",
".yml"
],
"firstLine": "^#cloud-config",
"configuration": "./language-configuration.json"
}
]

Просмотреть файл

@ -0,0 +1,372 @@
<?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">
<dict>
<key>comment</key>
<string>Modified from the original ASP bundle. Originally modified by Thomas Aylott subtleGradient.com</string>
<key>fileTypes</key>
<array>
<string>vb</string>
</array>
<key>keyEquivalent</key>
<string>^~A</string>
<key>name</key>
<string>ASP vb.NET</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\n</string>
<key>name</key>
<string>meta.ending-space</string>
</dict>
<dict>
<key>include</key>
<string>#round-brackets</string>
</dict>
<dict>
<key>begin</key>
<string>^(?=\t)</string>
<key>end</key>
<string>(?=[^\t])</string>
<key>name</key>
<string>meta.leading-space</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.odd-tab.tabs</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.even-tab.tabs</string>
</dict>
</dict>
<key>match</key>
<string>(\t)(\t)?</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(?= )</string>
<key>end</key>
<string>(?=[^ ])</string>
<key>name</key>
<string>meta.leading-space</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>meta.odd-tab.spaces</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.even-tab.spaces</string>
</dict>
</dict>
<key>match</key>
<string>( )( )?</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.function.asp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.function.asp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.asp</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>variable.parameter.function.asp</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>punctuation.definition.parameters.asp</string>
</dict>
</dict>
<key>match</key>
<string>^\s*((?i:function|sub))\s*([a-zA-Z_]\w*)\s*(\()([^)]*)(\)).*\n?</string>
<key>name</key>
<string>meta.function.asp</string>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=')</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.asp</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.asp</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.apostrophe.asp</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\b)</string>
<key>name</key>
<string>keyword.control.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Mod|And|Not|Or|Xor|as)\b)</string>
<key>name</key>
<string>keyword.operator.asp</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.asp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.bfeac.asp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.separator.comma.asp</string>
</dict>
</dict>
<key>match</key>
<string>(?i:(dim)\s*(?:(\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b)\s*(,?)))</string>
<key>name</key>
<string>variable.other.dim.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\s*\b(Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\b\s*)</string>
<key>name</key>
<string>storage.type.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Private|Public|Default)\b)</string>
<key>name</key>
<string>storage.modifier.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\s*\b(Empty|False|Nothing|Null|True)\b)</string>
<key>name</key>
<string>constant.language.asp</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.asp</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.asp</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.asp</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>""</string>
<key>name</key>
<string>constant.character.escape.apostrophe.asp</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.variable.asp</string>
</dict>
</dict>
<key>match</key>
<string>(\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b\s*</string>
<key>name</key>
<string>variable.other.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Application|ObjectContext|Request|Response|Server|Session)\b)</string>
<key>name</key>
<string>support.class.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\b)</string>
<key>name</key>
<string>support.class.collection.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\b)</string>
<key>name</key>
<string>support.constant.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\b)</string>
<key>name</key>
<string>support.function.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\b)</string>
<key>name</key>
<string>support.function.event.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:(?&lt;=as )(\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b))</string>
<key>name</key>
<string>support.type.vb.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\b)</string>
<key>name</key>
<string>support.function.vb.asp</string>
</dict>
<dict>
<key>match</key>
<string>-?\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\b</string>
<key>name</key>
<string>constant.numeric.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\b)</string>
<key>name</key>
<string>support.type.vb.asp</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.asp</string>
</dict>
</dict>
<key>match</key>
<string>(?i:(\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b)(?=\(\)?))</string>
<key>name</key>
<string>support.function.asp</string>
</dict>
<dict>
<key>match</key>
<string>(?i:((?&lt;=(\+|=|-|\&amp;|\\|/|&lt;|&gt;|\(|,))\s*\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\b(?!(\(|\.))|\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\b(?=\s*(\+|=|-|\&amp;|\\|/|&lt;|&gt;|\(|\)))))</string>
<key>name</key>
<string>variable.other.asp</string>
</dict>
<dict>
<key>match</key>
<string>!|\$|%|&amp;|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|&lt;=|&gt;=|&lt;&lt;=|&gt;&gt;=|&gt;&gt;&gt;=|&lt;&gt;|&lt;|&gt;|!|&amp;&amp;|\|\||\?\:|\*=|/=|%=|\+=|\-=|&amp;=|\^=|\b(in|instanceof|new|delete|typeof|void)\b</string>
<key>name</key>
<string>keyword.operator.js</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>round-brackets</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.round-brackets.begin.asp</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.round-brackets.end.asp</string>
</dict>
</dict>
<key>name</key>
<string>meta.round-brackets</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.asp.vb.net</string>
<key>uuid</key>
<string>7F9C9343-D48E-4E7D-BFE8-F680714DCD3E</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>uuid</key>
<string>E07EC438-7B75-4437-8AA1-DA94C1E6EACC</string>
<key>patterns</key>
<array>
<dict>
<key>name</key>
<string>keyword.command.dosbatch</string>
<key>match</key>
<string>\b(?i)(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.control.statement.dosbatch</string>
<key>match</key>
<string>\b(?i)(?:goto|call|exit)\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.control.conditional.if.dosbatch</string>
<key>match</key>
<string>\b(?i)if\s+((not)\s+)(exist|defined|errorlevel|cmdextversion)\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.control.conditional.dosbatch</string>
<key>match</key>
<string>\b(?i)(?:if|else)\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.control.repeat.dosbatch</string>
<key>match</key>
<string>\b(?i)for\b</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.dosbatch</string>
<key>match</key>
<string>\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\b</string>
</dict>
<dict>
<key>name</key>
<string>comment.line.rem.dosbatch</string>
<key>match</key>
<string>\b(?i)rem(?:$|\s.*$)</string>
</dict>
<dict>
<key>name</key>
<string>comment.line.colons.dosbatch</string>
<key>match</key>
<string>\s*:\s*:.*$</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.function.begin.shell</string>
</dict>
</dict>
<key>name</key>
<string>variable.parameter.function.dosbatch</string>
<key>match</key>
<string>(?i)(%)(~(?:f|d|p|n|x|s|a|t|z|\$[^:]*:)*)?\d</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.loop.begin.shell</string>
</dict>
</dict>
<key>name</key>
<string>variable.parameter.loop.dosbatch</string>
<key>match</key>
<string>(?i)(%%)(~(?:f|d|p|n|x|s|a|t|z|\$[^:]*:)*)?[a-z]</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.other.parsetime.begin.shell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.parsetime.end.shell</string>
</dict>
</dict>
<key>name</key>
<string>variable.other.parsetime.dosbatch</string>
<key>match</key>
<string>(%)[^%]+(%)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.other.delayed.begin.shell</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>variable.other.delayed.end.shell</string>
</dict>
</dict>
<key>name</key>
<string>variable.other.delayed.dosbatch</string>
<key>match</key>
<string>(!)[^!]+(!)</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.shell</string>
</dict>
</dict>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.shell</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.dosbatch</string>
<key>end</key>
<string>"|$</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.pipe.dosbatch</string>
<key>match</key>
<string>[|]</string>
</dict>
<dict>
<key>name</key>
<string>keyword.operator.redirect.shell</string>
<key>match</key>
<string>&amp;&gt;|\d*&gt;&amp;\d*|\d*(&gt;&gt;|&gt;|&lt;)|\d*&lt;&amp;|\d*&lt;&gt;</string>
</dict>
</array>
<key>name</key>
<string>Batch File</string>
<key>scopeName</key>
<string>source.dosbatch</string>
<key>fileTypes</key>
<array>
<string>bat</string>
</array>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,440 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>clj</string>
<string>cljs</string>
<string>clojure</string>
</array>
<key>foldingStartMarker</key>
<string>\(\s*$</string>
<key>foldingStopMarker</key>
<string>^\s*\)</string>
<key>keyEquivalent</key>
<string>^~C</string>
<key>name</key>
<string>Clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>include</key>
<string>#shebang-comment</string>
</dict>
<dict>
<key>include</key>
<string>#qouted-sexp</string>
</dict>
<dict>
<key>include</key>
<string>#sexp</string>
</dict>
<dict>
<key>include</key>
<string>#keyfn</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#vector</string>
</dict>
<dict>
<key>include</key>
<string>#set</string>
</dict>
<dict>
<key>include</key>
<string>#map</string>
</dict>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
<dict>
<key>include</key>
<string>#var</string>
</dict>
<dict>
<key>include</key>
<string>#constants</string>
</dict>
<dict>
<key>include</key>
<string>#symbol</string>
</dict>
<dict>
<key>include</key>
<string>#whitespace</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>comment</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.clojure</string>
</dict>
</dict>
<key>match</key>
<string>(;).*$\n?</string>
<key>name</key>
<string>comment.line.semicolon.clojure</string>
</dict>
<key>constants</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(nil)(?=(\s|\)|\]|\}))</string>
<key>name</key>
<string>constant.language.nil.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(true|false)</string>
<key>name</key>
<string>constant.language.boolean.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(\d+/\d+)</string>
<key>name</key>
<string>constant.numeric.ratio.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(\d+r\d+)</string>
<key>name</key>
<string>constant.numeric.arbitrary-radix.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(0x\d+)</string>
<key>name</key>
<string>constant.numeric.hexidecimal.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(0\d+)</string>
<key>name</key>
<string>constant.numeric.octal.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(\d+)</string>
<key>name</key>
<string>constant.numeric.decimal.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=(\s|\(|\[|\{)):[a-zA-Z0-9\#\.\-\_\:\+\=\&gt;\&lt;\/\!\?\*]+(?=(\s|\)|\]|\}))</string>
<key>name</key>
<string>constant.keyword.clojure</string>
</dict>
</array>
</dict>
<key>keyfn</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?&lt;=(\s|\(|\[|\{))(if(-[-a-z\?]*)?|when(-[-a-z]*)?|for(-[-a-z]*)?|cond|do|let(-[-a-z\?]*)?|binding|loop|recur|fn|throw[a-z\-]*|try|catch|finally|([a-z]*case))(?=(\s|\)|\]|\}))</string>
<key>name</key>
<string>storage.control.clojure</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=(\s|\(|\[|\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[a-z\-]*))(?=(\s|\)|\]|\}))</string>
<key>name</key>
<string>keyword.control.clojure</string>
</dict>
</array>
</dict>
<key>map</key>
<dict>
<key>begin</key>
<string>(\{)</string>
<key>end</key>
<string>(\})</string>
<key>name</key>
<string>meta.map.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>qouted-sexp</key>
<dict>
<key>begin</key>
<string>(['``]\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.expression.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(\))(\n)?</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.expression.end.clojure</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.after-expression.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.qouted-expression.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>regexp</key>
<dict>
<key>begin</key>
<string>#\"</string>
<key>end</key>
<string>\"</string>
<key>name</key>
<string>string.regexp.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp_escaped_char</string>
</dict>
</array>
</dict>
<key>regexp_escaped_char</key>
<dict>
<key>match</key>
<string>\\(\")</string>
<key>name</key>
<string>string.regexp.clojure</string>
</dict>
<key>set</key>
<dict>
<key>begin</key>
<string>(\#\{)</string>
<key>end</key>
<string>(\})</string>
<key>name</key>
<string>meta.set.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>sexp</key>
<dict>
<key>begin</key>
<string>(\()</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.expression.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(\))(\n)?</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.expression.end.clojure</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.after-expression.clojure</string>
</dict>
</dict>
<key>name</key>
<string>meta.expression.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?&lt;=\()(ns|def|def-|defn|defn-|defvar|defvar-|defmacro|defmacro-|deftest)\s+(.+?)(?=\s)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.clojure</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.global.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(?=\))</string>
<key>name</key>
<string>meta.definition.global.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>shebang-comment</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.shebang.clojure</string>
</dict>
</dict>
<key>match</key>
<string>^(\#!).*$\n?</string>
<key>name</key>
<string>comment.line.semicolon.clojure</string>
</dict>
<key>string</key>
<dict>
<key>begin</key>
<string>(")</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.clojure</string>
</dict>
</dict>
<key>end</key>
<string>(")</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.clojure</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.clojure</string>
</dict>
</array>
</dict>
<key>symbol</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(\w[\w\d]+)</string>
<key>name</key>
<string>meta.symbol.clojure</string>
</dict>
</array>
</dict>
<key>var</key>
<dict>
<key>match</key>
<string>(?&lt;=(\s|\(|\[|\{)\#)'[a-zA-Z0-9\.\-\_\:\+\=\&gt;\&lt;\/\!\?\*]+(?=(\s|\)|\]|\}))</string>
<key>name</key>
<string>meta.var.clojure</string>
</dict>
<key>vector</key>
<dict>
<key>begin</key>
<string>(\[)</string>
<key>end</key>
<string>(\])</string>
<key>name</key>
<string>meta.vector.clojure</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
</dict>
<key>whitespace</key>
<dict>
<key>match</key>
<string>\s+$</string>
<key>name</key>
<string>invalid.trailing-whitespace</string>
</dict>
</dict>
<key>scopeName</key>
<string>source.clojure</string>
<key>smartTypingPairs</key>
<array>
<array>
<string>"</string>
<string>"</string>
</array>
<array>
<string>(</string>
<string>)</string>
</array>
<array>
<string>{</string>
<string>}</string>
</array>
<array>
<string>[</string>
<string>]</string>
</array>
</array>
<key>uuid</key>
<string>6A87759F-F746-4E84-B788-965B46363202</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>Dockerfile</string>
</array>
<key>name</key>
<string>Dockerfile</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.dockerfile</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.special-method.dockerfile</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(?:(ONBUILD)\s+)?(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|VOLUME|USER|WORKDIR|COPY|LABEL|STOPSIGNAL|ARG)\s</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.operator.dockerfile</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.special-method.dockerfile</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(?:(ONBUILD)\s+)?(CMD|ENTRYPOINT)\s</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.dockerfile</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.dockerfile</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.dockerfile</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escaped.dockerfile</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.dockerfile</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.dockerfile</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.dockerfile</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escaped.dockerfile</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.dockerfile</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>comment.line.number-sign.dockerfile</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.dockerfile</string>
</dict>
</dict>
<key>comment</key>
<string>comment.line</string>
<key>match</key>
<string>^(\s*)((#).*$\n?)</string>
</dict>
</array>
<key>scopeName</key>
<string>source.dockerfile</string>
<key>uuid</key>
<string>a39d8795-59d2-49af-aa00-fe74ee29576e</string>
</dict>
</plist>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,854 @@
{
"name": "Handlebars",
"repository": {
"html_tags": {
"patterns": [
{
"begin": "(<)([a-zA-Z0-9:-]+)(?=[^>]*></\\2>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.html"
}
},
"end": "(>(<)/)(\\2)(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "meta.scope.between-tag-pair.html"
},
"3": {
"name": "entity.name.tag.html"
},
"4": {
"name": "punctuation.definition.tag.html"
}
},
"name": "meta.tag.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(<\\?)(xml)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.xml.html"
}
},
"end": "(\\?>)",
"name": "meta.tag.preprocessor.xml.html",
"patterns": [
{
"include": "#tag_generic_attribute"
},
{
"include": "#string"
}
]
},
{
"begin": "<!--",
"captures": {
"0": {
"name": "punctuation.definition.comment.html"
}
},
"end": "--\\s*>",
"name": "comment.block.html",
"patterns": [
{
"match": "--",
"name": "invalid.illegal.bad-comments-or-CDATA.html"
}
]
},
{
"begin": "<!",
"captures": {
"0": {
"name": "punctuation.definition.tag.html"
}
},
"end": ">",
"name": "meta.tag.sgml.html",
"patterns": [
{
"begin": "(DOCTYPE|doctype)",
"captures": {
"1": {
"name": "entity.name.tag.doctype.html"
}
},
"end": "(?=>)",
"name": "meta.tag.sgml.doctype.html",
"patterns": [
{
"match": "\"[^\">]*\"",
"name": "string.quoted.double.doctype.identifiers-and-DTDs.html"
}
]
},
{
"begin": "\\[CDATA\\[",
"end": "]](?=>)",
"name": "constant.other.inline-data.html"
},
{
"match": "(\\s*)(?!--|>)\\S(\\s*)",
"name": "invalid.illegal.bad-comments-or-CDATA.html"
}
]
},
{
"begin": "(?:^\\s+)?(<)((?i:style))\\b(?![^>]*/>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.style.html"
},
"3": {
"name": "punctuation.definition.tag.html"
}
},
"end": "(</)((?i:style))(>)(?:\\s*\\n)?",
"name": "source.css.embedded.html",
"patterns": [
{
"include": "#tag-stuff"
},
{
"begin": "(>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
}
},
"end": "(?=</(?i:style))",
"patterns": [
{
"include": "source.css"
}
]
}
]
},
{
"begin": "(?:^\\s+)?(<)((?i:script))\\b(?![^>]*/>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
}
},
"end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
"endCaptures": {
"2": {
"name": "punctuation.definition.tag.html"
}
},
"name": "source.js.embedded.html",
"patterns": [
{
"include": "#tag-stuff"
},
{
"begin": "(?<!</(?:script|SCRIPT))(>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
}
},
"end": "(</)((?i:script))",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.js"
}
},
"match": "(//).*?((?=</script)|$\\n?)",
"name": "comment.line.double-slash.js"
},
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.js"
}
},
"end": "\\*/|(?=</script)",
"name": "comment.block.js"
},
{
"include": "source.js"
}
]
}
]
},
{
"begin": "(</?)((?i:body|head|html)\\b)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.structure.any.html"
}
},
"end": "(>)",
"name": "meta.tag.structure.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)((?i:address|blockquote|dd|div|header|section|footer|aside|nav|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\b)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.block.any.html"
}
},
"end": "(>)",
"name": "meta.tag.block.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\b)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.inline.any.html"
}
},
"end": "((?: ?/)?>)",
"name": "meta.tag.inline.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)([a-zA-Z0-9:-]+)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.other.html"
}
},
"end": "(>)",
"name": "meta.tag.other.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)([a-zA-Z0-9{}:-]+)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.tokenised.html"
}
},
"end": "(>)",
"name": "meta.tag.tokenised.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"include": "#entities"
},
{
"match": "<>",
"name": "invalid.illegal.incomplete.html"
},
{
"match": "<",
"name": "invalid.illegal.bad-angle-bracket.html"
}
]
},
"entities": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.entity.html"
},
"3": {
"name": "punctuation.definition.entity.html"
}
},
"name": "constant.character.entity.html",
"match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
},
{
"name": "invalid.illegal.bad-ampersand.html",
"match": "&"
}
]
},
"end_block": {
"begin": "(\\{\\{~?/)([a-zA-Z0-9_\\.-]+)\\s*",
"end": "(~?\\}\\})",
"name": "meta.function.block.end.handlebars",
"endCaptures": {
"1": {
"name": "support.constant.handlebars"
}
},
"beginCaptures": {
"1": {
"name": "support.constant.handlebars"
},
"2": {
"name": "support.constant.handlebars"
}
},
"patterns": []
},
"yfm": {
"patterns": [
{
"patterns": [
{
"include": "source.yaml"
}
],
"begin": "(?<!\\s)---\\n$",
"end": "^---\\s",
"name": "markup.raw.yaml.front-matter"
}
]
},
"comments": {
"patterns": [
{
"patterns": [
{
"name": "keyword.annotation.handlebars",
"match": "@\\w*"
},
{
"include": "#comments"
}
],
"begin": "\\{\\{!",
"end": "\\}\\}",
"name": "comment.block.handlebars"
},
{
"captures": {
"0": {
"name": "punctuation.definition.comment.html"
}
},
"begin": "<!--",
"end": "-{2,3}\\s*>",
"name": "comment.block.html",
"patterns": [
{
"name": "invalid.illegal.bad-comments-or-CDATA.html",
"match": "--"
}
]
}
]
},
"block_comments": {
"patterns": [
{
"patterns": [
{
"name": "keyword.annotation.handlebars",
"match": "@\\w*"
},
{
"include": "#comments"
}
],
"begin": "\\{\\{!--",
"end": "--\\}\\}",
"name": "comment.block.handlebars"
},
{
"captures": {
"0": {
"name": "punctuation.definition.comment.html"
}
},
"begin": "<!--",
"end": "-{2,3}\\s*>",
"name": "comment.block.html",
"patterns": [
{
"name": "invalid.illegal.bad-comments-or-CDATA.html",
"match": "--"
}
]
}
]
},
"block_helper": {
"begin": "(\\{\\{~?\\#)([-a-zA-Z0-9_\\./]+)\\s?(@?[-a-zA-Z0-9_\\./]+)*\\s?(@?[-a-zA-Z0-9_\\./]+)*\\s?(@?[-a-zA-Z0-9_\\./]+)*",
"end": "(~?\\}\\})",
"name": "meta.function.block.start.handlebars",
"endCaptures": {
"1": {
"name": "support.constant.handlebars"
}
},
"beginCaptures": {
"1": {
"name": "support.constant.handlebars"
},
"2": {
"name": "support.constant.handlebars"
},
"3": {
"name": "variable.parameter.handlebars"
},
"4": {
"name": "support.constant.handlebars"
},
"5": {
"name": "variable.parameter.handlebars"
},
"6": {
"name": "support.constant.handlebars"
}
},
"patterns": [
{
"include": "#string"
},
{
"include": "#handlebars_attribute"
}
]
},
"string-single-quoted": {
"begin": "'",
"end": "'",
"name": "string.quoted.single.handlebars",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"patterns": [
{
"include": "#escaped-single-quote"
},
{
"include": "#block_comments"
},
{
"include": "#comments"
},
{
"include": "#block_helper"
},
{
"include": "#else_token"
},
{
"include": "#end_block"
},
{
"include": "#partial_and_var"
}
]
},
"string": {
"patterns": [
{
"include": "#string-single-quoted"
},
{
"include": "#string-double-quoted"
}
]
},
"escaped-single-quote": {
"name": "constant.character.escape.js",
"match": "\\\\'"
},
"escaped-double-quote": {
"name": "constant.character.escape.js",
"match": "\\\\\""
},
"partial_and_var": {
"begin": "(\\{\\{~?\\{*(>|!<)*)\\s*(@?[-a-zA-Z0-9_\\./]+)*",
"end": "(~?\\}\\}\\}*)",
"name": "meta.function.inline.other.handlebars",
"beginCaptures": {
"1": {
"name": "support.constant.handlebars"
},
"3": {
"name": "variable.parameter.handlebars"
}
},
"endCaptures": {
"1": {
"name": "support.constant.handlebars"
}
},
"patterns": [
{
"include": "#string"
},
{
"include": "#handlebars_attribute"
}
]
},
"handlebars_attribute_name": {
"begin": "\\b([-a-zA-Z0-9_\\.]+)\\b=",
"captures": {
"1": {
"name": "variable.parameter.handlebars"
}
},
"end": "(?='|\"|)",
"name": "entity.other.attribute-name.handlebars"
},
"handlebars_attribute_value": {
"begin": "([-a-zA-Z0-9_\\./]+)\\b\\s*",
"captures": {
"1": {
"name": "variable.parameter.handlebars"
}
},
"end": "('|\"|)",
"name": "entity.other.attribute-value.handlebars",
"patterns": [
{
"include": "#string"
}
]
},
"handlebars_attribute": {
"patterns": [
{
"include": "#handlebars_attribute_name"
},
{
"include": "#handlebars_attribute_value"
}
]
},
"extends": {
"patterns": [
{
"end": "(\\}\\})",
"begin": "(\\{\\{!<)\\s([-a-zA-Z0-9_\\./]+)",
"beginCaptures": {
"1": {
"name": "support.function.handlebars"
},
"2": {
"name": "support.class.handlebars"
}
},
"endCaptures": {
"1": {
"name": "support.function.handlebars"
}
},
"name": "meta.preprocessor.handlebars"
}
]
},
"else_token": {
"begin": "(\\{\\{~?else)(@?\\s(if)\\s([-a-zA-Z0-9_\\./]+))?",
"end": "(~?\\}\\}\\}*)",
"name": "meta.function.inline.else.handlebars",
"beginCaptures": {
"1": {
"name": "support.constant.handlebars"
},
"3": {
"name": "support.constant.handlebars"
},
"4": {
"name": "variable.parameter.handlebars"
}
},
"endCaptures": {
"1": {
"name": "support.constant.handlebars"
}
}
},
"string-double-quoted": {
"begin": "\"",
"end": "\"",
"name": "string.quoted.double.handlebars",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"patterns": [
{
"include": "#escaped-double-quote"
},
{
"include": "#block_comments"
},
{
"include": "#comments"
},
{
"include": "#block_helper"
},
{
"include": "#else_token"
},
{
"include": "#end_block"
},
{
"include": "#partial_and_var"
}
]
},
"inline_script": {
"begin": "(?:^\\s+)?(<)((?i:script))\\b(?:.*(type)=([\"'](?:text/x-handlebars-template|text/x-handlebars|text/template|x-tmpl-handlebars)[\"']))(?![^>]*/>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
},
"3": {
"name": "entity.other.attribute-name.html"
},
"4": {
"name": "string.quoted.double.html"
}
},
"end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
"endCaptures": {
"2": {
"name": "punctuation.definition.tag.html"
}
},
"name": "source.handlebars.embedded.html",
"patterns": [
{
"include": "#tag-stuff"
},
{
"begin": "(?<!</(?:script|SCRIPT))(>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
}
},
"end": "(</)((?i:script))",
"patterns": [
{
"include": "#block_comments"
},
{
"include": "#comments"
},
{
"include": "#block_helper"
},
{
"include": "#end_block"
},
{
"include": "#else_token"
},
{
"include": "#partial_and_var"
},
{
"include": "#html_tags"
},
{
"include": "text.html.basic"
}
]
}
]
},
"tag_generic_attribute": {
"begin": "\\b([a-zA-Z0-9_-]+)\\b\\s*(=)",
"captures": {
"1": {
"name": "entity.other.attribute-name.generic.html"
},
"2": {
"name": "punctuation.separator.key-value.html"
}
},
"patterns": [
{
"include": "#string"
}
],
"name": "entity.other.attribute-name.html",
"end": "(?<='|\"|)"
},
"tag_id_attribute": {
"begin": "\\b(id)\\b\\s*(=)",
"captures": {
"1": {
"name": "entity.other.attribute-name.id.html"
},
"2": {
"name": "punctuation.separator.key-value.html"
}
},
"end": "(?<='|\"|)",
"name": "meta.attribute-with-value.id.html",
"patterns": [
{
"include": "#string"
}
]
},
"tag-stuff": {
"patterns": [
{
"include": "#tag_id_attribute"
},
{
"include": "#tag_generic_attribute"
},
{
"include": "#string"
},
{
"include": "#block_comments"
},
{
"include": "#comments"
},
{
"include": "#block_helper"
},
{
"include": "#end_block"
},
{
"include": "#else_token"
},
{
"include": "#partial_and_var"
}
]
}
},
"scopeName": "text.html.handlebars",
"patterns": [
{
"include": "#yfm"
},
{
"include": "#extends"
},
{
"include": "#block_comments"
},
{
"include": "#comments"
},
{
"include": "#block_helper"
},
{
"include": "#end_block"
},
{
"include": "#else_token"
},
{
"include": "#partial_and_var"
},
{
"include": "#inline_script"
},
{
"include": "#html_tags"
},
{
"include": "text.html.basic"
}
],
"fileTypes": [
"handlebars",
"handlebars.html",
"hbr",
"hbrs",
"hbs",
"hdbs",
"hjs",
"mu",
"mustache",
"rac",
"stache",
"template",
"tmpl"
],
"uuid": "70E91676-DE0A-4266-A2B9-3AD2E535E484",
"version": "https://github.com/daaain/Handlebars/commit/bdaec7aaf5eaac45d1878096110d1db7975fb100"
}

Просмотреть файл

@ -0,0 +1,387 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>json</string>
<string>sublime-settings</string>
<string>sublime-menu</string>
<string>sublime-keymap</string>
<string>sublime-mousemap</string>
<string>sublime-theme</string>
<string>sublime-build</string>
<string>sublime-project</string>
<string>sublime-completions</string>
</array>
<key>foldingStartMarker</key>
<string>(?x) # turn on extended mode
^ # a line beginning with
\s* # some optional space
[{\[] # the start of an object or array
(?! # but not followed by
.* # whatever
[}\]] # and the close of an object or array
,? # an optional comma
\s* # some optional space
$ # at the end of the line
)
| # ...or...
[{\[] # the start of an object or array
\s* # some optional space
$ # at the end of the line</string>
<key>foldingStopMarker</key>
<string>(?x) # turn on extended mode
^ # a line beginning with
\s* # some optional space
[}\]] # and the close of an object or array</string>
<key>keyEquivalent</key>
<string>^~J</string>
<key>name</key>
<string>JSON (Javascript Next)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#value</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>array</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.begin.json</string>
</dict>
</dict>
<key>end</key>
<string>\]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.array.end.json</string>
</dict>
</dict>
<key>name</key>
<string>meta.structure.array.json</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#value</string>
</dict>
<dict>
<key>match</key>
<string>,</string>
<key>name</key>
<string>punctuation.separator.array.json</string>
</dict>
<dict>
<key>match</key>
<string>[^\s\]]</string>
<key>name</key>
<string>invalid.illegal.expected-array-separator.json</string>
</dict>
</array>
</dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>/\*\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.json</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.documentation.json</string>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.json</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.json</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.json</string>
</dict>
</dict>
<key>match</key>
<string>(//).*$\n?</string>
<key>name</key>
<string>comment.line.double-slash.js</string>
</dict>
</array>
</dict>
<key>constant</key>
<dict>
<key>match</key>
<string>\b(?:true|false|null)\b</string>
<key>name</key>
<string>constant.language.json</string>
</dict>
<key>number</key>
<dict>
<key>match</key>
<string>(?x) # turn on extended mode
-? # an optional minus
(?:
0 # a zero
| # ...or...
[1-9] # a 1-9 character
\d* # followed by zero or more digits
)
(?:
(?:
\. # a period
\d+ # followed by one or more digits
)?
(?:
[eE] # an e character
[+-]? # followed by an option +/-
\d+ # followed by one or more digits
)? # make exponent optional
)? # make decimal portion optional</string>
<key>name</key>
<string>constant.numeric.json</string>
</dict>
<key>object</key>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.dictionary.begin.json</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.dictionary.end.json</string>
</dict>
</dict>
<key>name</key>
<string>meta.structure.dictionary.json</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>the JSON object key</string>
<key>include</key>
<string>#objectkey</string>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>begin</key>
<string>:</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.separator.dictionary.key-value.json</string>
</dict>
</dict>
<key>end</key>
<string>(,)|(?=\})</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.dictionary.pair.json</string>
</dict>
</dict>
<key>name</key>
<string>meta.structure.dictionary.value.json</string>
<key>patterns</key>
<array>
<dict>
<key>comment</key>
<string>the JSON object value</string>
<key>include</key>
<string>#value</string>
</dict>
<dict>
<key>match</key>
<string>[^\s,]</string>
<key>name</key>
<string>invalid.illegal.expected-dictionary-separator.json</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>[^\s\}]</string>
<key>name</key>
<string>invalid.illegal.expected-dictionary-separator.json</string>
</dict>
</array>
</dict>
<key>string</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.json</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.json</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.json</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#stringcontent</string>
</dict>
</array>
</dict>
<key>objectkey</key>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.support.type.property-name.begin.json</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.support.type.property-name.end.json</string>
</dict>
</dict>
<key>name</key>
<string>support.type.property-name.json</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#stringcontent</string>
</dict>
</array>
</dict>
<key>stringcontent</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x) # turn on extended mode
\\ # a literal backslash
(?: # ...followed by...
["\\/bfnrt] # one of these characters
| # ...or...
u # a u
[0-9a-fA-F]{4}) # and four hex digits</string>
<key>name</key>
<string>constant.character.escape.json</string>
</dict>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>invalid.illegal.unrecognized-string-escape.json</string>
</dict>
</array>
</dict>
<key>value</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#constant</string>
</dict>
<dict>
<key>include</key>
<string>#number</string>
</dict>
<dict>
<key>include</key>
<string>#string</string>
</dict>
<dict>
<key>include</key>
<string>#array</string>
</dict>
<dict>
<key>include</key>
<string>#object</string>
</dict>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.json</string>
<key>uuid</key>
<string>8f97457b-516e-48ce-83c7-08ae12fb327a</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,964 @@
{
"fileTypes": [
"jade"
],
"name": "Jade",
"patterns": [
{
"comment": "Doctype declaration.",
"match": "^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",
"name": "meta.tag.sgml.doctype.html"
},
{
"begin": "^(\\s*)//-",
"comment": "Unbuffered (jade-only) comments.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "comment.unbuffered.block.jade"
},
{
"begin": "^(\\s*)//",
"comment": "Buffered (html) comments.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "string.comment.buffered.block.jade",
"patterns": [
{
"captures": {
"1": {
"name": "invalid.illegal.comment.comment.block.jade"
}
},
"comment": "Buffered comments inside buffered comments will generate invalid html.",
"match": "^\\s*(//)(?!-)",
"name": "string.comment.buffered.block.jade"
}
]
},
{
"begin": "^(\\s*)-$",
"comment": "Unbuffered code block.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.js",
"patterns": [
{
"include": "source.js"
}
]
},
{
"begin": "^(\\s*)(script)(?=[.#(\\s])((?![^\\n]*type=)|(?=[^\\n]*(text|application)/javascript))",
"beginCaptures": {
"2": {
"name": "entity.name.tag.script.jade"
}
},
"comment": "Script tag with JavaScript code.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "meta.tag.other",
"patterns": [
{
"begin": "\\G(?=\\()",
"end": "$",
"name": "stuff.tag.script.jade",
"patterns": [
{
"include": "#tag_attributes"
}
]
},
{
"begin": "\\G(?=[.#])",
"end": "$",
"name": "stuff.tag.script.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
},
{
"include": "source.js"
}
]
},
{
"begin": "^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",
"beginCaptures": {
"2": {
"name": "entity.name.tag.script.jade"
}
},
"comment": "Style tag with CSS code.",
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "meta.tag.other",
"patterns": [
{
"begin": "\\G(?=\\()",
"end": "$",
"name": "stuff.tag.style.jade",
"patterns": [
{
"include": "#tag_attributes"
}
]
},
{
"begin": "\\G(?=[.#])",
"end": "$",
"name": "stuff.tag.style.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
},
{
"include": "source.css"
}
]
},
{
"begin": "^(\\s*):(sass)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.sass.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.sass.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.sass"
}
]
},
{
"begin": "^(\\s*):(less)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.less.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.less.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.less"
}
]
},
{
"begin": "^(\\s*):(stylus)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.stylus.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.stylus"
}
]
},
{
"begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
"beginCaptures": {
"2": {
"name": "constant.language.name.coffeescript.filter.jade"
}
},
"end": "^(?!(\\1\\s)|\\s*$)",
"name": "source.coffeescript.filter.jade",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "source.coffee"
}
]
},
{
"begin": "^(\\s*)((:(?=.))|(:$))",
"beginCaptures": {
"4": {
"name": "invalid.illegal.empty.generic.filter.jade"
}
},
"comment": "Generic Jade filter.",
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"begin": "\\G(?<=:)(?=.)",
"end": "$",
"name": "name.generic.filter.jade",
"patterns": [
{
"match": "\\G\\(",
"name": "invalid.illegal.name.generic.filter.jade"
},
{
"match": "[\\w-]",
"name": "constant.language.name.generic.filter.jade"
},
{
"include": "#tag_attributes"
},
{
"match": "\\W",
"name": "invalid.illegal.name.generic.filter.jade"
}
]
}
]
},
{
"begin": "^(\\s*)(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))",
"beginCaptures": {
"2": {
"name": "constant.id.tag.jade"
},
"3": {
"name": "constant.language.js"
},
"4": {
"name": "meta.tag.other entity.name.tag.jade"
}
},
"comment": "Generated from dot_block_tag.py",
"end": "^(?!(\\1\\s)|\\s*$)",
"patterns": [
{
"include": "#tag_attributes"
},
{
"include": "#complete_tag"
},
{
"begin": "^(?=.)",
"end": "$",
"name": "text.block.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
}
]
},
{
"begin": "^\\s*",
"comment": "All constructs that generally span a single line starting with any number of white-spaces.",
"end": "$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#blocks_and_includes"
},
{
"include": "#unbuffered_code"
},
{
"include": "#mixin_definition"
},
{
"include": "#mixin_call"
},
{
"include": "#flow_control"
},
{
"include": "#case_conds"
},
{
"begin": "\\|",
"comment": "Tag pipe text line.",
"end": "$",
"name": "text.block.pipe.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#printed_expression"
},
{
"begin": "\\G(?=(#[^\\{\\w-])|[^\\w.#])",
"comment": "Line starting with characters incompatible with tag name/id/class is standalone text.",
"end": "$",
"patterns": [
{
"begin": "</?(?=[!#])",
"end": ">|$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
{
"include": "#complete_tag"
}
]
}
],
"repository": {
"blocks_and_includes": {
"captures": {
"1": {
"name": "storage.type.import.include.jade"
},
"4": {
"name": "variable.control.import.include.jade"
}
},
"comment": "Template blocks and includes.",
"match": "(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",
"name": "meta.first-class.jade"
},
"case_conds": {
"begin": "(default|when)((\\s+|(?=:))|$)",
"captures": {
"1": {
"name": "storage.type.function.jade"
}
},
"comment": "Jade case conditionals.",
"end": "$",
"name": "meta.control.flow.jade",
"patterns": [
{
"begin": "\\G(?!:)",
"end": "(?=:\\s+)|$",
"name": "js.embedded.control.flow.jade",
"patterns": [
{
"include": "#case_when_paren"
},
{
"include": "source.js"
}
]
},
{
"begin": ":\\s+",
"end": "$",
"name": "tag.case.control.flow.jade",
"patterns": [
{
"include": "#complete_tag"
}
]
}
]
},
"case_when_paren": {
"begin": "\\(",
"end": "\\)",
"name": "js.when.control.flow.jade",
"patterns": [
{
"include": "#case_when_paren"
},
{
"match": ":",
"name": "invalid.illegal.name.tag.jade"
},
{
"include": "source.js"
}
]
},
"complete_tag": {
"begin": "(?=[\\w.#])|(:\\s*)",
"end": "(\\.?$)|(?=:.)",
"patterns": [
{
"include": "#blocks_and_includes"
},
{
"include": "#unbuffered_code"
},
{
"include": "#mixin_call"
},
{
"include": "#flow_control"
},
{
"match": "(?<=:)\\w.*$",
"name": "invalid.illegal.name.tag.jade"
},
{
"include": "#tag_name"
},
{
"include": "#tag_id"
},
{
"include": "#tag_classes"
},
{
"include": "#tag_attributes"
},
{
"include": "#tag_mixin_attributes"
},
{
"captures": {
"2": {
"name": "invalid.illegal.end.tag.jade"
},
"4": {
"name": "invalid.illegal.end.tag.jade"
}
},
"match": "((\\.)\\s+$)|((:)\\s*$)"
},
{
"include": "#printed_expression"
},
{
"include": "#tag_text"
}
]
},
"embedded_html": {
"begin": "(?=<[^>]*>)",
"end": "$|(?=>)",
"name": "html",
"patterns": [
{
"include": "text.html.basic"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"flow_control": {
"begin": "(for|if|else if|else|each|until|while|unless|case)(\\s+|$)",
"captures": {
"1": {
"name": "storage.type.function.jade"
}
},
"comment": "Jade control flow.",
"end": "$",
"name": "meta.control.flow.jade",
"patterns": [
{
"begin": "",
"end": "$",
"name": "js.embedded.control.flow.jade",
"patterns": [
{
"include": "source.js"
}
]
}
]
},
"html_entity": {
"patterns": [
{
"match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
"name": "constant.character.entity.html.text.jade"
},
{
"match": "[<>&]",
"name": "invalid.illegal.html_entity.text.jade"
}
]
},
"inline_jade": {
"begin": "(?<!\\\\)(#\\[)",
"captures": {
"1": {
"name": "entity.name.function.jade"
},
"2": {
"name": "entity.name.function.jade"
}
},
"end": "(\\])",
"name": "inline.jade",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#mixin_call"
},
{
"begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
"end": "(?=\\]|(:.)|=|\\s)",
"name": "tag.inline.jade",
"patterns": [
{
"include": "#tag_name"
},
{
"include": "#tag_id"
},
{
"include": "#tag_classes"
},
{
"include": "#tag_attributes"
},
{
"include": "#tag_mixin_attributes"
},
{
"include": "#inline_jade"
},
{
"match": "\\[",
"name": "invalid.illegal.tag.jade"
}
]
},
{
"include": "#unbuffered_code"
},
{
"include": "#printed_expression"
},
{
"match": "\\[",
"name": "invalid.illegal.tag.jade"
},
{
"include": "#inline_jade_text"
}
]
},
"inline_jade_text": {
"begin": "",
"end": "(?=\\])",
"patterns": [
{
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#inline_jade_text"
}
]
},
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"interpolated_error": {
"match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
"name": "invalid.illegal.tag.jade"
},
"interpolated_value": {
"begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
"end": "\\}",
"name": "string.interpolated.jade",
"patterns": [
{
"match": "{",
"name": "invalid.illegal.tag.jade"
},
{
"include": "source.js"
}
]
},
"js_braces": {
"begin": "\\{",
"end": "\\}",
"patterns": [
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
},
"js_brackets": {
"begin": "\\[",
"end": "\\]",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
},
"js_parens": {
"begin": "\\(",
"end": "\\)",
"patterns": [
{
"include": "#js_parens"
},
{
"include": "source.js"
}
]
},
"mixin_call": {
"begin": "((?:mixin\\s+)|\\+)([\\w-]+)",
"beginCaptures": {
"1": {
"name": "storage.type.function.jade"
},
"2": {
"name": "meta.tag.other entity.name.function.jade"
}
},
"end": "(?!\\()|$",
"patterns": [
{
"begin": "(?<!\\))\\(",
"end": "\\)",
"name": "args.mixin.jade",
"patterns": [
{
"include": "#js_parens"
},
{
"include": "#string"
},
{
"captures": {
"1": {
"name": "meta.tag.other entity.other.attribute-name.tag.jade"
}
},
"match": "([^\\s(),=/]+)\\s*=\\s*"
},
{
"include": "source.js"
}
]
},
{
"include": "#tag_attributes"
}
]
},
"mixin_definition": {
"captures": {
"1": {
"name": "storage.type.function.jade"
},
"2": {
"name": "meta.tag.other entity.name.function.jade"
},
"3": {
"name": "punctuation.definition.parameters.begin.js"
},
"4": {
"name": "variable.parameter.function.js"
},
"5": {
"name": "punctuation.definition.parameters.begin.js"
}
},
"match": "(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$"
},
"printed_expression": {
"begin": "(!?\\=)\\s*",
"captures": {
"1": {
"name": "constant"
}
},
"end": "(?=\\])|$",
"name": "source.js",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
},
"string": {
"begin": "(['\"])",
"end": "(?<!\\\\)\\1",
"name": "string.quoted.jade",
"patterns": [
{
"match": "\\\\((x[0-9a-fA-F]{2})|(u[0-9]{4})|.)",
"name": "constant.character.quoted.jade"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"tag_attribute_name": {
"captures": {
"1": {
"name": "entity.other.attribute-name.tag.jade"
}
},
"match": "([^\\s(),=/!]+)\\s*"
},
"tag_attribute_name_paren": {
"begin": "\\(\\s*",
"end": "\\)",
"name": "entity.other.attribute-name.tag.jade",
"patterns": [
{
"include": "#tag_attribute_name_paren"
},
{
"include": "#tag_attribute_name"
}
]
},
"tag_attributes": {
"begin": "(\\(\\s*)",
"captures": {
"1": {
"name": "constant.name.attribute.tag.jade"
}
},
"end": "(\\))",
"name": "meta.tag.other",
"patterns": [
{
"include": "#tag_attribute_name_paren"
},
{
"include": "#tag_attribute_name"
},
{
"match": "!(?!=)",
"name": "invalid.illegal.tag.jade"
},
{
"begin": "=\\s*",
"end": "$|(?=,|(?:\\s+[^!%&*-+~|<>:?/])|\\))",
"name": "attribute_value",
"patterns": [
{
"include": "#string"
},
{
"include": "#js_parens"
},
{
"include": "#js_brackets"
},
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
},
{
"begin": "(?<=[%&*-+~|<>:?/])\\s+",
"end": "$|(?=,|(?:\\s+[^!%&*-+~|<>:?/])|\\))",
"name": "attribute_value2",
"patterns": [
{
"include": "#string"
},
{
"include": "#js_parens"
},
{
"include": "#js_brackets"
},
{
"include": "#js_braces"
},
{
"include": "source.js"
}
]
}
]
},
"tag_classes": {
"captures": {
"1": {
"name": "invalid.illegal.tag.jade"
}
},
"match": "\\.([^\\w-])?[\\w-]*",
"name": "constant.language.js"
},
"tag_id": {
"match": "#[\\w-]+",
"name": "constant.id.tag.jade"
},
"tag_mixin_attributes": {
"begin": "(&attributes\\()",
"captures": {
"1": {
"name": "entity.name.function.jade"
}
},
"end": "(\\))",
"name": "meta.tag.other",
"patterns": [
{
"match": "attributes(?=\\))",
"name": "storage.type.keyword.jade"
},
{
"include": "source.js"
}
]
},
"tag_name": {
"begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
"end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
"name": "meta.tag.other entity.name.tag.jade",
"patterns": [
{
"begin": "\\G(?<=\\{)",
"end": "(?=\\})",
"name": "meta.tag.other entity.name.tag.jade",
"patterns": [
{
"match": "{",
"name": "invalid.illegal.tag.jade"
},
{
"include": "source.js"
}
]
}
]
},
"tag_text": {
"begin": "(?=.)",
"end": "$",
"patterns": [
{
"include": "#inline_jade"
},
{
"include": "#embedded_html"
},
{
"include": "#html_entity"
},
{
"include": "#interpolated_value"
},
{
"include": "#interpolated_error"
}
]
},
"unbuffered_code": {
"begin": "(-|(([a-zA-Z0-9_]+)\\s+=))",
"beginCaptures": {
"3": {
"name": "variable.parameter.javascript.embedded.jade"
}
},
"comment": "name = function() {}",
"end": "(?=\\])|$",
"name": "source.js",
"patterns": [
{
"include": "#js_brackets"
},
{
"include": "source.js"
}
]
}
},
"scopeName": "text.jade",
"uuid": "eee6ba25-6ac2-4f7e-9c70-cddf2bd3448b",
"version": "https://github.com/davidrios/jade-tmbundle/commit/7c1304aa5a0d916a93fd296d3dd994219ecdc90f"
}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,435 @@
{
"name": "MagicRegExp",
"scopeName": "source.regexp.python",
"fileTypes": [
"re"
],
"uuid": "39e15186-71e6-11e5-b82c-7c6d62900c7c",
"patterns": [
{
"include": "#regexp-expression"
}
],
"repository": {
"regexp-base-expression": {
"patterns": [
{
"name": "support.other.match.any.regexp",
"match": "\\."
},
{
"name": "support.other.match.begin.regexp",
"match": "\\^"
},
{
"name": "support.other.match.end.regexp",
"match": "\\$"
},
{
"name": "keyword.operator.quantifier.regexp",
"match": "[+*?]\\??"
},
{
"name": "keyword.operator.disjunction.regexp",
"match": "\\|"
},
{
"name": "keyword.operator.quantifier.regexp",
"match": "(?x)\n \\{(\n \\d+ | \\d+,(\\d+)? | ,\\d+\n )\\}\n"
},
{
"include": "#regexp-escape-sequence"
}
]
},
"regexp-backreference-number": {
"name": "meta.backreference.regexp",
"match": "(\\\\[1-9]\\d?)",
"captures": {
"1": {
"name": "entity.name.tag.backreference.regexp"
}
}
},
"regexp-backreference": {
"name": "meta.backreference.named.regexp",
"match": "(?x)\n (\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\))\n",
"captures": {
"1": {
"name": "punctuation.parenthesis.backreference.named.begin.regexp support.other.parenthesis.regexp"
},
"2": {
"name": "entity.name.tag.named.backreference.regexp"
},
"3": {
"name": "punctuation.parenthesis.backreference.named.end.regexp support.other.parenthesis.regexp"
}
}
},
"regexp-flags": {
"name": "storage.modifier.flag.regexp",
"match": "\\(\\?[aiLmsux]+\\)"
},
"regexp-escape-special": {
"name": "support.other.escape.special.regexp",
"match": "\\\\([AbBdDsSwWZ])"
},
"regexp-escape-character": {
"name": "constant.character.escape.regexp",
"match": "(?x)\n \\\\ (\n x[0-9A-Fa-f]{2}\n | 0[0-7]{1,2}\n | [0-7]{3}\n )\n"
},
"regexp-escape-unicode": {
"name": "constant.character.unicode.regexp",
"match": "(?x)\n \\\\ (\n u[0-9A-Fa-f]{4}\n | U[0-9A-Fa-f]{8}\n )\n"
},
"regexp-escape-catchall": {
"name": "constant.character.escape.regexp",
"match": "\\\\(.|\\n)"
},
"regexp-escape-sequence": {
"patterns": [
{
"include": "#regexp-escape-special"
},
{
"include": "#regexp-escape-character"
},
{
"include": "#regexp-escape-unicode"
},
{
"include": "#regexp-backreference-number"
},
{
"include": "#regexp-escape-catchall"
}
]
},
"regexp-charecter-set-escapes": {
"patterns": [
{
"name": "constant.character.escape.regexp",
"match": "\\\\[abfnrtv\\\\]"
},
{
"include": "#regexp-escape-special"
},
{
"name": "constant.character.escape.regexp",
"match": "\\\\([0-7]{1,3})"
},
{
"include": "#regexp-escape-character"
},
{
"include": "#regexp-escape-unicode"
},
{
"include": "#regexp-escape-catchall"
}
]
},
"regexp-expression": {
"patterns": [
{
"include": "#regexp-base-expression"
},
{
"include": "#regexp-character-set"
},
{
"include": "#regexp-comments"
},
{
"include": "#regexp-flags"
},
{
"include": "#regexp-named-group"
},
{
"include": "#regexp-backreference"
},
{
"include": "#regexp-lookahead"
},
{
"include": "#regexp-lookahead-negative"
},
{
"include": "#regexp-lookbehind"
},
{
"include": "#regexp-lookbehind-negative"
},
{
"include": "#regexp-conditional"
},
{
"include": "#regexp-parentheses-non-capturing"
},
{
"include": "#regexp-parentheses"
}
]
},
"regexp-character-set": {
"patterns": [
{
"match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
},
{
"name": "meta.character.set.regexp",
"begin": "(\\[)(\\^)?(\\])?",
"end": "(\\])",
"beginCaptures": {
"1": {
"name": "constant.other.set.regexp punctuation.character.set.begin.regexp"
},
"2": {
"name": "keyword.operator.negation.regexp"
},
"3": {
"name": "constant.character.set.regexp"
}
},
"endCaptures": {
"1": {
"name": "constant.other.set.regexp punctuation.character.set.end.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-charecter-set-escapes"
},
{
"name": "constant.character.set.regexp",
"match": "[^\\n]"
}
]
}
]
},
"regexp-named-group": {
"name": "meta.named.regexp",
"begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
"end": "(\\))",
"beginCaptures": {
"1": {
"name": "punctuation.parenthesis.named.begin.regexp support.other.parenthesis.regexp"
},
"2": {
"name": "entity.name.tag.named.group.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.named.end.regexp support.other.parenthesis.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-comments": {
"name": "comment.regexp",
"begin": "\\(\\?#",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "punctuation.comment.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.comment.end.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#codetags"
}
]
},
"regexp-lookahead": {
"begin": "(\\()\\?=",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "keyword.operator.lookahead.regexp"
},
"1": {
"name": "punctuation.parenthesis.lookahead.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.lookahead.end.regexp keyword.operator.lookahead.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-lookahead-negative": {
"begin": "(\\()\\?!",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "keyword.operator.lookahead.negative.regexp"
},
"1": {
"name": "punctuation.parenthesis.lookahead.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.lookahead.end.regexp keyword.operator.lookahead.negative.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-lookbehind": {
"begin": "(\\()\\?<=",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "keyword.operator.lookbehind.regexp"
},
"1": {
"name": "punctuation.parenthesis.lookbehind.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.lookbehind.end.regexp keyword.operator.lookbehind.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-lookbehind-negative": {
"begin": "(\\()\\?<!",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "keyword.operator.lookbehind.negative.regexp"
},
"1": {
"name": "punctuation.parenthesis.lookbehind.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.lookbehind.end.regexp keyword.operator.lookbehind.negative.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-conditional": {
"begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "keyword.operator.conditional.regexp"
},
"1": {
"name": "punctuation.parenthesis.conditional.begin.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.conditional.end.regexp keyword.operator.conditional.negative.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-parentheses-non-capturing": {
"begin": "\\(\\?:",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "punctuation.parenthesis.non-capturing.begin.regexp support.other.parenthesis.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.non-capturing.end.regexp support.other.parenthesis.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
},
"regexp-parentheses": {
"begin": "\\(",
"end": "(\\))",
"beginCaptures": {
"0": {
"name": "punctuation.parenthesis.begin.regexp support.other.parenthesis.regexp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.parenthesis.end.regexp support.other.parenthesis.regexp"
},
"2": {
"name": "invalid.illegal.newline.python"
}
},
"patterns": [
{
"include": "#regexp-expression"
}
]
}
},
"version": "https://github.com/MagicStack/MagicPython/commit/a45287d159f82256c768ad2e1114ca9751d28670"
}

Просмотреть файл

@ -0,0 +1,475 @@
{
"fileTypes": [
"Makefile",
"makefile",
"GNUmakefile",
"OCamlMakefile"
],
"name": "Makefile",
"patterns": [
{
"include": "#comment"
},
{
"include": "#variable-assignment"
},
{
"include": "#recipe"
},
{
"include": "#directives"
}
],
"repository": {
"comment": {
"begin": "(^[ \\t]+)?(?=#)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.makefile"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.makefile"
}
},
"end": "\\n",
"name": "comment.line.number-sign.makefile",
"patterns": [
{
"match": "\\\\\\n",
"name": "constant.character.escape.continuation.makefile"
}
]
}
]
},
"directives": {
"patterns": [
{
"begin": "^[ ]*([s\\-]?include)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.include.makefile"
}
},
"end": "^",
"patterns": [
{
"include": "#comment"
},
{
"include": "#variables"
},
{
"match": "%",
"name": "constant.other.placeholder.makefile"
}
]
},
{
"begin": "^[ ]*(vpath)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.vpath.makefile"
}
},
"end": "^",
"patterns": [
{
"include": "#comment"
},
{
"include": "#variables"
},
{
"match": "%",
"name": "constant.other.placeholder.makefile"
}
]
},
{
"begin": "^(?:(override)\\s*)?(define)\\s*([^\\s]+)\\s*(=|\\?=|:=|\\+=)?(?=\\s)",
"captures": {
"1": {
"name": "keyword.control.override.makefile"
},
"2": {
"name": "keyword.control.define.makefile"
},
"3": {
"name": "variable.other.makefile"
},
"4": {
"name": "punctuation.separator.key-value.makefile"
}
},
"end": "^(endef)\\b",
"name": "meta.scope.conditional.makefile",
"patterns": [
{
"begin": "\\G(?!\\n)",
"end": "^",
"patterns": [
{
"include": "#comment"
}
]
},
{
"include": "#variables"
},
{
"include": "#comment"
}
]
},
{
"begin": "^[ ]*(export)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.$1.makefile"
}
},
"end": "^",
"patterns": [
{
"include": "#comment"
},
{
"include": "#variable-assignment"
},
{
"match": "[^\\s]+",
"name": "variable.other.makefile"
}
]
},
{
"begin": "^[ ]*(override|private)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.$1.makefile"
}
},
"end": "^",
"patterns": [
{
"include": "#comment"
},
{
"include": "#variable-assignment"
}
]
},
{
"begin": "^[ ]*(unexport|undefine)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.$1.makefile"
}
},
"end": "^",
"patterns": [
{
"include": "#comment"
},
{
"match": "[^\\s]+",
"name": "variable.other.makefile"
}
]
},
{
"begin": "^(ifdef|ifndef)\\s*([^\\s]+)(?=\\s)",
"captures": {
"1": {
"name": "keyword.control.$1.makefile"
},
"2": {
"name": "variable.other.makefile"
},
"3": {
"name": "punctuation.separator.key-value.makefile"
}
},
"end": "^(endif)\\b",
"name": "meta.scope.conditional.makefile",
"patterns": [
{
"begin": "\\G(?!\\n)",
"end": "^",
"patterns": [
{
"include": "#comment"
}
]
},
{
"include": "$self"
}
]
},
{
"begin": "^(ifeq|ifneq)(?=\\s)",
"captures": {
"1": {
"name": "keyword.control.$1.makefile"
}
},
"end": "^(endif)\\b",
"name": "meta.scope.conditional.makefile",
"patterns": [
{
"begin": "\\G",
"end": "^",
"name": "meta.scope.condition.makefile",
"patterns": [
{
"include": "#variables"
},
{
"include": "#comment"
}
]
},
{
"begin": "^else(?=\\s)",
"beginCaptures": {
"0": {
"name": "keyword.control.else.makefile"
}
},
"end": "^"
},
{
"include": "$self"
}
]
}
]
},
"interpolation": {
"begin": "(?=`)",
"end": "(?!\\G)",
"name": "meta.embedded.line.shell",
"patterns": [
{
"begin": "`",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.makefile"
}
},
"contentName": "source.shell",
"end": "(`)",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.makefile"
},
"1": {
"name": "source.shell"
}
},
"name": "string.interpolated.backtick.makefile",
"patterns": [
{
"include": "source.shell"
}
]
}
]
},
"recipe": {
"begin": "^(?!\\t)([^:]*)(:)(?!\\=)",
"beginCaptures": {
"1": {
"patterns": [
{
"captures": {
"1": {
"name": "support.function.target.$1.makefile"
}
},
"match": "^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$"
},
{
"begin": "(?=\\S)",
"end": "(?=\\s|$)",
"name": "entity.name.function.target.makefile",
"patterns": [
{
"include": "#variables"
},
{
"match": "%",
"name": "constant.other.placeholder.makefile"
}
]
}
]
},
"2": {
"name": "punctuation.separator.key-value.makefile"
}
},
"end": "^(?!\\t)",
"name": "meta.scope.target.makefile",
"patterns": [
{
"begin": "\\G",
"end": "^",
"name": "meta.scope.prerequisites.makefile",
"patterns": [
{
"match": "\\\\\\n",
"name": "constant.character.escape.continuation.makefile"
},
{
"match": "%|\\*",
"name": "constant.other.placeholder.makefile"
},
{
"include": "#comment"
},
{
"include": "#variables"
}
]
},
{
"begin": "^\\t",
"name": "meta.scope.recipe.makefile",
"patterns": [
{
"captures": {
"0": {
"patterns": [
{
"match": "\\\\\\n",
"name": "constant.character.escape.continuation.makefile"
},
{
"include": "#variables"
},
{
"include": "source.shell"
}
]
}
},
"match": ".+\\n?"
}
],
"while": "^\\t"
}
]
},
"variable-assignment": {
"begin": "(^[ ]*|\\G\\s*)([^\\s]+)\\s*(=|\\?=|:=|\\+=)",
"beginCaptures": {
"2": {
"name": "variable.other.makefile"
},
"3": {
"name": "punctuation.separator.key-value.makefile"
}
},
"end": "\\n",
"patterns": [
{
"match": "\\\\\\n",
"name": "constant.character.escape.continuation.makefile"
},
{
"include": "#comment"
},
{
"include": "#variables"
},
{
"include": "#interpolation"
}
]
},
"variables": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.variable.makefile"
}
},
"match": "(\\$?\\$)[@%<?^+*]",
"name": "variable.language.makefile"
},
{
"begin": "\\$?\\$\\(",
"captures": {
"0": {
"name": "punctuation.definition.variable.makefile"
}
},
"end": "\\)",
"name": "string.interpolated.makefile",
"patterns": [
{
"include": "#variables"
},
{
"match": "\\G(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*\\))",
"name": "variable.language.makefile"
},
{
"begin": "\\G(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s",
"beginCaptures": {
"1": {
"name": "support.function.$1.makefile"
}
},
"end": "(?=\\))",
"name": "meta.scope.function-call.makefile",
"patterns": [
{
"include": "#variables"
},
{
"match": "%|\\*",
"name": "constant.other.placeholder.makefile"
}
]
},
{
"begin": "\\G(origin|flavor)\\s(?=[^\\s)]+\\s*\\))",
"contentName": "variable.other.makefile",
"end": "(?=\\))",
"name": "meta.scope.function-call.makefile",
"patterns": [
{
"include": "#variables"
}
]
},
{
"begin": "\\G(?!\\))",
"end": "(?=\\))",
"name": "variable.other.makefile",
"patterns": [
{
"include": "#variables"
}
]
}
]
}
]
}
},
"scopeName": "source.makefile",
"uuid": "FF1825E8-6B1C-11D9-B883-000D93589AF6",
"version": "https://github.com/textmate/make.tmbundle/commit/1a1827da81e20fdce56e2658451340c070ca44b7"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,490 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>p6</string>
<string>pl6</string>
<string>pm6</string>
<string>nqp</string>
</array>
<key>firstLineMatch</key>
<string>(^#!.*\b(perl6|nqp)\b)|use\s+v6</string>
<key>keyEquivalent</key>
<string>^~P</string>
<key>name</key>
<string>Perl 6</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>^=begin</string>
<key>end</key>
<string>^=end</string>
<key>name</key>
<string>comment.block.perl</string>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.perl</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.perl</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.perl</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.class.perl.6</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.type.class.perl.6</string>
</dict>
</dict>
<key>match</key>
<string>(class|enum|grammar|knowhow|module|package|role|slang|subset)(\s+)(((?:::|')?(?:([a-zA-Z_\x{C0}-\x{FF}\$])([a-zA-Z0-9_\x{C0}-\x{FF}\\$]|[\-'][a-zA-Z0-9_\x{C0}-\x{FF}\$])*))+)</string>
<key>name</key>
<string>meta.class.perl.6</string>
</dict>
<dict>
<key>begin</key>
<string>(?&lt;=\s)'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.perl</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\['\\]</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.perl</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.perl</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.perl</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[abtnfre"\\]</string>
<key>name</key>
<string>constant.character.escape.perl</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>q(q|to|heredoc)*\s*:?(q|to|heredoc)*\s*/(.+)/</string>
<key>end</key>
<string>\3</string>
<key>name</key>
<string>string.quoted.single.heredoc.perl</string>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*{{</string>
<key>end</key>
<string>}}</string>
<key>name</key>
<string>string.quoted.double.heredoc.brace.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_brace_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*\(\(</string>
<key>end</key>
<string>\)\)</string>
<key>name</key>
<string>string.quoted.double.heredoc.paren.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_paren_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*\[\[</string>
<key>end</key>
<string>\]\]</string>
<key>name</key>
<string>string.quoted.double.heredoc.bracket.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_bracket_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*{</string>
<key>end</key>
<string>}</string>
<key>name</key>
<string>string.quoted.single.heredoc.brace.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_brace_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*/</string>
<key>end</key>
<string>/</string>
<key>name</key>
<string>string.quoted.single.heredoc.slash.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_slash_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*\(</string>
<key>end</key>
<string>\)</string>
<key>name</key>
<string>string.quoted.single.heredoc.paren.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_paren_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*\[</string>
<key>end</key>
<string>\]</string>
<key>name</key>
<string>string.quoted.single.heredoc.bracket.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_bracket_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*'</string>
<key>end</key>
<string>'</string>
<key>name</key>
<string>string.quoted.single.heredoc.single.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_single_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\s*"</string>
<key>end</key>
<string>"</string>
<key>name</key>
<string>string.quoted.single.heredoc.double.perl</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_double_string_content</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b\$\w+\b</string>
<key>name</key>
<string>variable.other.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(macro|sub|submethod|method|multi|proto|only|rule|token|regex|category)\b</string>
<key>name</key>
<string>storage.type.declare.routine.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(self)\b</string>
<key>name</key>
<string>variable.language.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(use|require)\b</string>
<key>name</key>
<string>keyword.other.include.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(if|else|elsif|unless)\b</string>
<key>name</key>
<string>keyword.control.conditional.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(let|my|our|state|temp|has|constant)\b</string>
<key>name</key>
<string>storage.type.variable.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(for|loop|repeat|while|until|gather|given)\b</string>
<key>name</key>
<string>keyword.control.repeat.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(take|do|when|next|last|redo|return|contend|maybe|defer|default|exit|make|continue|break|goto|leave|async|lift)\b</string>
<key>name</key>
<string>keyword.control.flowcontrol.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(is|as|but|trusts|of|returns|handles|where|augment|supersede)\b</string>
<key>name</key>
<string>storage.modifier.type.constraints.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(BEGIN|CHECK|INIT|START|FIRST|ENTER|LEAVE|KEEP|UNDO|NEXT|LAST|PRE|POST|END|CATCH|CONTROL|TEMP)\b</string>
<key>name</key>
<string>meta.function.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(die|fail|try|warn)\b</string>
<key>name</key>
<string>keyword.control.control-handlers.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(prec|irs|ofs|ors|export|deep|binary|unary|reparsed|rw|parsed|cached|readonly|defequiv|will|ref|copy|inline|tighter|looser|equiv|assoc|required)\b</string>
<key>name</key>
<string>storage.modifier.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(NaN|Inf)\b</string>
<key>name</key>
<string>constant.numeric.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(oo|fatal)\b</string>
<key>name</key>
<string>keyword.other.pragma.perl</string>
</dict>
<dict>
<key>match</key>
<string>\b(Object|Any|Junction|Whatever|Capture|MatchSignature|Proxy|Matcher|Package|Module|ClassGrammar|Scalar|Array|Hash|KeyHash|KeySet|KeyBagPair|List|Seq|Range|Set|Bag|Mapping|Void|UndefFailure|Exception|Code|Block|Routine|Sub|MacroMethod|Submethod|Regex|Str|str|Blob|Char|ByteCodepoint|Grapheme|StrPos|StrLen|Version|NumComplex|num|complex|Bit|bit|bool|True|FalseIncreasing|Decreasing|Ordered|Callable|AnyCharPositional|Associative|Ordering|KeyExtractorComparator|OrderingPair|IO|KitchenSink|RoleInt|int|int1|int2|int4|int8|int16|int32|int64Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32uint64|Abstraction|utf8|utf16|utf32)\b</string>
<key>name</key>
<string>support.type.perl6</string>
</dict>
<dict>
<key>match</key>
<string>\b(div|xx|x|mod|also|leg|cmp|before|after|eq|ne|le|lt|not|gt|ge|eqv|ff|fff|and|andthen|or|xor|orelse|extra|lcm|gcd)\b</string>
<key>name</key>
<string>keyword.operator.perl</string>
</dict>
<dict>
<key>match</key>
<string>(\$|@|%|&amp;)(\*|:|!|\^|~|=|\?|(&lt;(?=.+&gt;)))?([a-zA-Z_\x{C0}-\x{FF}\$])([a-zA-Z0-9_\x{C0}-\x{FF}\$]|[\-'][a-zA-Z0-9_\x{C0}-\x{FF}\$])*</string>
<key>name</key>
<string>variable.other.identifier.perl.6</string>
</dict>
<dict>
<key>match</key>
<string>\b(eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints|chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin|classify|first|sum|keys|values|pairs|defined|delete|exists|elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push|shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign|sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2|pick|chop|p5chop|chomp|p5chomp|lc|lcfirst|uc|ucfirst|capitalize|normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars|nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead|nothing|want|bless|chr|ord|gmtime|time|eof|localtime|gethost|getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs|codes|bytes|clone|print|open|read|write|readline|say|seek|close|opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink|symlink|uniq|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan|sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh|sech|acosech|acotanh|asech|ok|nok|plan_ok|dies_ok|lives_ok|skip|todo|pass|flunk|force_todo|use_ok|isa_ok|diag|is_deeply|isnt|like|skip_rest|unlike|cmp_ok|eval_dies_ok|nok_error|eval_lives_ok|approx|is_approx|throws_ok|version_lt|plan|EVAL|succ|pred|times|nonce|once|signature|new|connect|operator|undef|undefine|sleep|from|to|infix|postfix|prefix|circumfix|postcircumfix|minmax|lazy|count|unwrap|getc|pi|e|context|void|quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity|assuming|rewind|callwith|callsame|nextwith|nextsame|attr|eval_elsewhere|none|srand|trim|trim_start|trim_end|lastcall|WHAT|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not|true|iterator|by|re|im|invert|flip|gist|flat|tree|is-prime|throws_like|trans)\b</string>
<key>name</key>
<string>support.function.perl</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>qq_brace_string_content</key>
<dict>
<key>begin</key>
<string>{</string>
<key>end</key>
<string>}</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_brace_string_content</string>
</dict>
</array>
</dict>
<key>qq_bracket_string_content</key>
<dict>
<key>begin</key>
<string>\[</string>
<key>end</key>
<string>\]</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_bracket_string_content</string>
</dict>
</array>
</dict>
<key>qq_double_string_content</key>
<dict>
<key>begin</key>
<string>"</string>
<key>end</key>
<string>"</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_double_string_content</string>
</dict>
</array>
</dict>
<key>qq_paren_string_content</key>
<dict>
<key>begin</key>
<string>\(</string>
<key>end</key>
<string>\)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_paren_string_content</string>
</dict>
</array>
</dict>
<key>qq_single_string_content</key>
<dict>
<key>begin</key>
<string>'</string>
<key>end</key>
<string>'</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_single_string_content</string>
</dict>
</array>
</dict>
<key>qq_slash_string_content</key>
<dict>
<key>begin</key>
<string>\\/</string>
<key>end</key>
<string>\\/</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#qq_slash_string_content</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.perl.6</string>
<key>uuid</key>
<string>E685440C-0E20-4424-9693-864D5240A269</string>
</dict>
</plist>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,316 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>R</string>
<string>r</string>
<string>s</string>
<string>S</string>
<string>Rprofile</string>
</array>
<key>keyEquivalent</key>
<string>^~R</string>
<key>name</key>
<string>R</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>comment.line.pragma.r</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>entity.name.pragma.name.r</string>
</dict>
</dict>
<key>match</key>
<string>^(#pragma[ \t]+mark)[ \t](.*)</string>
<key>name</key>
<string>comment.line.pragma-mark.r</string>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.r</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.r</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.r</string>
</dict>
</array>
</dict>
<dict>
<key>match</key>
<string>\b(logical|numeric|character|complex|matrix|array|data\.frame|list|factor)(?=\s*\()</string>
<key>name</key>
<string>storage.type.r</string>
</dict>
<dict>
<key>match</key>
<string>\b(function|if|break|next|repeat|else|for|return|switch|while|in|invisible)\b</string>
<key>name</key>
<string>keyword.control.r</string>
</dict>
<dict>
<key>match</key>
<string>\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(i|L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\b</string>
<key>name</key>
<string>constant.numeric.r</string>
</dict>
<dict>
<key>match</key>
<string>\b(T|F|TRUE|FALSE|NULL|NA|Inf|NaN)\b</string>
<key>name</key>
<string>constant.language.r</string>
</dict>
<dict>
<key>match</key>
<string>\b(pi|letters|LETTERS|month\.abb|month\.name)\b</string>
<key>name</key>
<string>support.constant.misc.r</string>
</dict>
<dict>
<key>match</key>
<string>(\-|\+|\*|\/|%\/%|%%|%\*%|%in%|%o%|%x%|\^)</string>
<key>name</key>
<string>keyword.operator.arithmetic.r</string>
</dict>
<dict>
<key>match</key>
<string>(=|&lt;-|&lt;&lt;-|-&gt;|-&gt;&gt;)</string>
<key>name</key>
<string>keyword.operator.assignment.r</string>
</dict>
<dict>
<key>match</key>
<string>(==|!=|&lt;&gt;|&lt;|&gt;|&lt;=|&gt;=)</string>
<key>name</key>
<string>keyword.operator.comparison.r</string>
</dict>
<dict>
<key>match</key>
<string>(!|&amp;{1,2}|[|]{1,2})</string>
<key>name</key>
<string>keyword.operator.logical.r</string>
</dict>
<dict>
<key>match</key>
<string>(\.\.\.|\$|@|:|\~)</string>
<key>name</key>
<string>keyword.other.r</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.r</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.r</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.r</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.r</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.r</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.r</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.r</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.r</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.function.r</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.r</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>keyword.control.r</string>
</dict>
</dict>
<key>match</key>
<string>([[:alpha:].][[:alnum:]._]*)\s*(&lt;-)\s*(function)</string>
<key>name</key>
<string>meta.function.r</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.tag.r</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>entity.name.type.r</string>
</dict>
</dict>
<key>match</key>
<string>(setMethod|setReplaceMethod|setGeneric|setGroupGeneric|setClass)\s*\(\s*([[:alpha:]\d]+\s*=\s*)?("|\x{27})([a-zA-Z._\[\$@][a-zA-Z0-9._\[]*?)\3.*</string>
<key>name</key>
<string>meta.method.declaration.r</string>
</dict>
<dict>
<key>match</key>
<string>([[:alpha:].][[:alnum:]._]*)\s*\(</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>variable.parameter.r</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.r</string>
</dict>
</dict>
<key>match</key>
<string>([[:alpha:].][[:alnum:]._]*)\s*(=)(?=[^=])</string>
</dict>
<dict>
<key>match</key>
<string>\b([\d_][[:alnum:]._]+)\b</string>
<key>name</key>
<string>invalid.illegal.variable.other.r</string>
</dict>
<dict>
<key>match</key>
<string>\b([[:alnum:]_]+)(?=::)</string>
<key>name</key>
<string>entity.namespace.r</string>
</dict>
<dict>
<key>match</key>
<string>\b([[:alnum:]._]+)\b</string>
<key>name</key>
<string>variable.other.r</string>
</dict>
<dict>
<key>begin</key>
<string>\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.block.begin.r</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.section.block.end.r</string>
</dict>
</dict>
<key>name</key>
<string>meta.block.r</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.r</string>
</dict>
</array>
</dict>
</array>
<key>scopeName</key>
<string>source.r</string>
<key>uuid</key>
<string>B2E6B78D-6E70-11D9-A369-000D93B3A10E</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,237 @@
<?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">
<dict>
<key>fileTypes</key>
<array/>
<key>hideFromUser</key>
<true/>
<key>name</key>
<string>Regular Expressions (JavaScript)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>regex-character-class</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[wWsSdD]|\.</string>
<key>name</key>
<string>constant.character.character-class.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\\([0-7]{3}|x\h\h|u\h\h\h\h)</string>
<key>name</key>
<string>constant.character.numeric.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\\c[A-Z]</string>
<key>name</key>
<string>constant.character.control.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.backslash.regexp</string>
</dict>
</array>
</dict>
<key>regexp</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\[bB]|\^|\$</string>
<key>name</key>
<string>keyword.control.anchor.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\\[1-9]\d*</string>
<key>name</key>
<string>keyword.other.back-reference.regexp</string>
</dict>
<dict>
<key>match</key>
<string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string>
<key>name</key>
<string>keyword.operator.quantifier.regexp</string>
</dict>
<dict>
<key>match</key>
<string>\|</string>
<key>name</key>
<string>keyword.operator.or.regexp</string>
</dict>
<dict>
<key>begin</key>
<string>(\()((\?=)|(\?!))</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.group.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.assertion.look-ahead.regexp</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>meta.assertion.negative-look-ahead.regexp</string>
</dict>
</dict>
<key>end</key>
<string>(\))</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.group.regexp</string>
</dict>
</dict>
<key>name</key>
<string>meta.group.assertion.regexp</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\((\?:)?</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.group.regexp</string>
</dict>
</dict>
<key>end</key>
<string>\)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.group.regexp</string>
</dict>
</dict>
<key>name</key>
<string>meta.group.regexp</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#regexp</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(\[)(\^)?</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.character-class.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.operator.negation.regexp</string>
</dict>
</dict>
<key>end</key>
<string>(\])</string>
<key>endCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.character-class.regexp</string>
</dict>
</dict>
<key>name</key>
<string>constant.other.character-class.set.regexp</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.character.numeric.regexp</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.character.control.regexp</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.character.escape.backslash.regexp</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>constant.character.numeric.regexp</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.character.control.regexp</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>constant.character.escape.backslash.regexp</string>
</dict>
</dict>
<key>match</key>
<string>(?:.|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))</string>
<key>name</key>
<string>constant.other.character-class.range.regexp</string>
</dict>
<dict>
<key>include</key>
<string>#regex-character-class</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#regex-character-class</string>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.js.regexp</string>
<key>uuid</key>
<string>AC8679DE-3AC7-4056-84F9-69A7ADC29DDD</string>
</dict>
</plist>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,767 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>sql</string>
<string>ddl</string>
<string>dml</string>
<string>dsql</string>
<string>psql</string>
</array>
<key>keyEquivalent</key>
<string>^~S</string>
<key>name</key>
<string>SQL</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comments</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.create.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.sql</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>entity.name.function.sql</string>
</dict>
</dict>
<key>match</key>
<string>(?i:^\s*(create(?:\s+or\s+replace)?)\s+(aggregate|conversion|database|domain|function|group|(unique\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+)(['"`]?)(\w+)\4</string>
<key>name</key>
<string>meta.create.sql</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.create.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.sql</string>
</dict>
</dict>
<key>match</key>
<string>(?i:^\s*(drop)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))</string>
<key>name</key>
<string>meta.drop.sql</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.create.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.table.sql</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>entity.name.function.sql</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>keyword.other.cascade.sql</string>
</dict>
</dict>
<key>match</key>
<string>(?i:\s*(drop)\s+(table)\s+(\w+)(\s+cascade)?\b)</string>
<key>name</key>
<string>meta.drop.sql</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.create.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>keyword.other.table.sql</string>
</dict>
</dict>
<key>match</key>
<string>(?i:^\s*(alter)\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\s+)</string>
<key>name</key>
<string>meta.alter.sql</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>10</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>11</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>12</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>13</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>14</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>15</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>5</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>8</key>
<dict>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<key>9</key>
<dict>
<key>name</key>
<string>storage.type.sql</string>
</dict>
</dict>
<key>match</key>
<string>(?xi)
# normal stuff, capture 1
\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\b
# numeric suffix, capture 2 + 3i
|\b(bit\svarying|character\s(?:varying)?|tinyint|var\schar|float|interval)\((\d+)\)
# optional numeric suffix, capture 4 + 5i
|\b(char|number|varchar\d?)\b(?:\((\d+)\))?
# special case, capture 6 + 7i + 8i
|\b(numeric|decimal)\b(?:\((\d+),(\d+)\))?
# special case, captures 9, 10i, 11
|\b(times?)\b(?:\((\d+)\))?(\swith(?:out)?\stime\szone\b)?
# special case, captures 12, 13, 14i, 15
|\b(timestamp)(?:(s|tz))?\b(?:\((\d+)\))?(\s(with|without)\stime\szone\b)?
</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b((?:primary|foreign)\s+key|references|on\sdelete(\s+cascade)?|check|constraint)\b)</string>
<key>name</key>
<string>storage.modifier.sql</string>
</dict>
<dict>
<key>match</key>
<string>\b\d+\b</string>
<key>name</key>
<string>constant.numeric.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(select(\s+distinct)?|insert\s+(ignore\s+)?into|update|delete|from|declare|set|where|group\sby|or|like|and|union(\s+all)?|having|order\sby|limit|(inner|cross)\s+join|join|straight_join|(left|right)(\s+outer)?\s+join|natural(\s+(left|right)(\s+outer)?)?\s+join)\b)</string>
<key>name</key>
<string>keyword.other.DML.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(on|((is\s+)?not\s+)?null)\b)</string>
<key>name</key>
<string>keyword.other.DDL.create.II.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(values|go|use|into|exec|execute|openquery)\b)</string>
<key>name</key>
<string>keyword.other.DML.II.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(begin(\s+work)?|start\s+transaction|commit(\s+work)?|rollback(\s+work)?)\b)</string>
<key>name</key>
<string>keyword.other.LUW.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\b(grant(\swith\sgrant\soption)?|revoke)\b)</string>
<key>name</key>
<string>keyword.other.authorization.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:\bin\b)</string>
<key>name</key>
<string>keyword.other.data-integrity.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i:^\s*(comment\s+on\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\s+.*?\s+(is)\s+)</string>
<key>name</key>
<string>keyword.other.object-comments.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\bAS\b</string>
<key>name</key>
<string>keyword.other.alias.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(DESC|ASC)\b</string>
<key>name</key>
<string>keyword.other.order.sql</string>
</dict>
<dict>
<key>match</key>
<string>\*</string>
<key>name</key>
<string>keyword.operator.star.sql</string>
</dict>
<dict>
<key>match</key>
<string>[!&lt;&gt;]?=|&lt;&gt;|&lt;|&gt;</string>
<key>name</key>
<string>keyword.operator.comparison.sql</string>
</dict>
<dict>
<key>match</key>
<string>-|\+|/</string>
<key>name</key>
<string>keyword.operator.math.sql</string>
</dict>
<dict>
<key>match</key>
<string>\|\|</string>
<key>name</key>
<string>keyword.operator.concatenator.sql</string>
</dict>
<dict>
<key>comment</key>
<string>List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html</string>
<key>match</key>
<string>(?i)\b(CURRENT_(DATE|TIME(STAMP)?|USER)|(SESSION|SYSTEM)_USER)\b</string>
<key>name</key>
<string>support.function.scalar.sql</string>
</dict>
<dict>
<key>comment</key>
<string>List of SQL99 built-in functions from http://www.oreilly.com/catalog/sqlnut/chapter/ch04.html</string>
<key>match</key>
<string>(?i)\b(AVG|COUNT|MIN|MAX|SUM)(?=\s*\()</string>
<key>name</key>
<string>support.function.aggregate.sql</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(CONCATENATE|CONVERT|LOWER|SUBSTRING|TRANSLATE|TRIM|UPPER)\b</string>
<key>name</key>
<string>support.function.string.sql</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.other.database-name.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.other.table-name.sql</string>
</dict>
</dict>
<key>match</key>
<string>(\w+?)\.(\w+)</string>
</dict>
<dict>
<key>include</key>
<string>#strings</string>
</dict>
<dict>
<key>include</key>
<string>#regexps</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.section.scope.begin.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.section.scope.end.sql</string>
</dict>
</dict>
<key>comment</key>
<string>Allow for special ↩ behavior</string>
<key>match</key>
<string>(\()(\))</string>
<key>name</key>
<string>meta.block.sql</string>
</dict>
</array>
<key>repository</key>
<dict>
<key>comments</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=--)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.sql</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>--</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.sql</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.double-dash.sql</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.sql</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.sql</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.sql</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>/\*</string>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.sql</string>
</dict>
</dict>
<key>end</key>
<string>\*/</string>
<key>name</key>
<string>comment.block.c</string>
</dict>
</array>
</dict>
<key>regexps</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>/(?=\S.*/)</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>end</key>
<string>/</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_interpolation</string>
</dict>
<dict>
<key>match</key>
<string>\\/</string>
<key>name</key>
<string>constant.character.escape.slash.sql</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>%r\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>comment</key>
<string>We should probably handle nested bracket pairs!?! -- Allan</string>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.regexp.modr.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_interpolation</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>string_escape</key>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.sql</string>
</dict>
<key>string_interpolation</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>match</key>
<string>(#\{)([^\}]*)(\})</string>
<key>name</key>
<string>string.interpolated.sql</string>
</dict>
<key>strings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>comment</key>
<string>this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.</string>
<key>match</key>
<string>(')[^'\\]*(')</string>
<key>name</key>
<string>string.quoted.single.sql</string>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_escape</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>comment</key>
<string>this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.</string>
<key>match</key>
<string>(`)[^`\\]*(`)</string>
<key>name</key>
<string>string.quoted.other.backtick.sql</string>
</dict>
<dict>
<key>begin</key>
<string>`</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>end</key>
<string>`</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.other.backtick.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_escape</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>comment</key>
<string>this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.</string>
<key>match</key>
<string>(")[^"#]*(")</string>
<key>name</key>
<string>string.quoted.double.sql</string>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_interpolation</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>%\{</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.sql</string>
</dict>
</dict>
<key>end</key>
<string>\}</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.sql</string>
</dict>
</dict>
<key>name</key>
<string>string.other.quoted.brackets.sql</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#string_interpolation</string>
</dict>
</array>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>source.sql</string>
<key>uuid</key>
<string>C49120AC-6ECC-11D9-ACC8-000D93589AF6</string>
</dict>
</plist>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,455 @@
{
"scopeName": "source.cpp",
"fileTypes": [
"cc",
"cpp",
"cp",
"cxx",
"c++",
"cu",
"cuh",
"h",
"hh",
"hpp",
"hxx",
"h++",
"inl",
"ino",
"ipp",
"tcc",
"tpp"
],
"firstLineMatch": "(?i)-\\*-[^*]*(Mode:\\s*)?C\\+\\+(\\s*;.*?)?\\s*-\\*-",
"name": "C++",
"patterns": [
{
"include": "#special_block"
},
{
"include": "#strings"
},
{
"match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b",
"name": "storage.modifier.cpp"
},
{
"match": "\\b(private:|protected:|public:)",
"name": "storage.modifier.cpp"
},
{
"match": "\\b(catch|operator|try|throw|using)\\b",
"name": "keyword.control.cpp"
},
{
"match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])",
"name": "keyword.control.cpp"
},
{
"match": "\\b(f|m)[A-Z]\\w*\\b",
"name": "variable.other.readwrite.member.cpp"
},
{
"match": "\\bthis\\b",
"name": "variable.language.this.cpp"
},
{
"match": "\\bnullptr\\b",
"name": "variable.language.cpp"
},
{
"match": "\\btemplate\\b\\s*",
"name": "storage.type.template.cpp"
},
{
"match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",
"name": "keyword.operator.cast.cpp"
},
{
"match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b",
"name": "keyword.operator.cpp"
},
{
"match": "\\b(class|decltype|wchar_t|char16_t|char32_t)\\b",
"name": "storage.type.cpp"
},
{
"match": "\\b(constexpr|export|mutable|typename|thread_local)\\b",
"name": "storage.modifier.cpp"
},
{
"begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.destructor.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.destructor.prototype.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"include": "source.c"
}
],
"repository": {
"angle_brackets": {
"begin": "<",
"end": ">",
"name": "meta.angle-brackets.cpp",
"patterns": [
{
"include": "#angle_brackets"
},
{
"include": "$base"
}
]
},
"block": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.c"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.block.end.c"
}
},
"name": "meta.block.cpp",
"patterns": [
{
"captures": {
"1": {
"name": "support.function.any-method.c"
},
"2": {
"name": "punctuation.definition.parameters.c"
}
},
"match": "(?x)\n(\n (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\n (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name\n)\n\\s*(\\() # opening bracket",
"name": "meta.function-call.c"
},
{
"include": "$base"
}
]
},
"constructor": {
"patterns": [
{
"begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket",
"beginCaptures": {
"1": {
"name": "entity.name.function.cpp"
},
"2": {
"name": "punctuation.definition.parameters.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.parameters.end.c"
}
},
"name": "meta.function.constructor.cpp",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.parameters.c"
}
},
"end": "(?=\\{)",
"name": "meta.function.constructor.initializer-list.cpp",
"patterns": [
{
"include": "$base"
}
]
}
]
},
"special_block": {
"patterns": [
{
"begin": "\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)",
"beginCaptures": {
"1": {
"name": "keyword.control.cpp"
},
"2": {
"name": "storage.type.cpp"
},
"3": {
"name": "entity.name.type.cpp"
}
},
"end": "(;)",
"name": "meta.using-namespace-declaration.cpp"
},
{
"begin": "\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+",
"beginCaptures": {
"1": {
"name": "storage.type.cpp"
},
"2": {
"name": "entity.name.type.cpp"
}
},
"captures": {
"1": {
"name": "keyword.control.namespace.$2"
}
},
"end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",
"name": "meta.namespace-block.cpp",
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.scope.cpp"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.scope.cpp"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "#constructor"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
},
{
"begin": "\\b(class|struct)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",
"beginCaptures": {
"1": {
"name": "storage.type.cpp"
},
"2": {
"name": "entity.name.type.cpp"
},
"4": {
"name": "storage.type.modifier.cpp"
},
"5": {
"name": "entity.name.type.inherited.cpp"
},
"6": {
"patterns": [
{
"match": "(public|protected|private)",
"name": "storage.type.modifier.cpp"
},
{
"match": "[_A-Za-z][_A-Za-z0-9]*",
"name": "entity.name.type.inherited.cpp"
}
]
}
},
"end": "(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))",
"name": "meta.class-struct-block.cpp",
"patterns": [
{
"include": "#angle_brackets"
},
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.cpp"
}
},
"end": "(\\})(\\s*\\n)?",
"endCaptures": {
"1": {
"name": "punctuation.section.block.end.cpp"
},
"2": {
"name": "invalid.illegal.you-forgot-semicolon.cpp"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "#constructor"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
},
{
"begin": "\\b(extern)(?=\\s*\")",
"beginCaptures": {
"1": {
"name": "storage.modifier.cpp"
}
},
"end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",
"name": "meta.extern-block.cpp",
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.c"
}
},
"end": "\\}|(?=\\s*#\\s*endif\\b)",
"endCaptures": {
"0": {
"name": "punctuation.section.block.end.c"
}
},
"patterns": [
{
"include": "#special_block"
},
{
"include": "$base"
}
]
},
{
"include": "$base"
}
]
}
]
},
"strings": {
"patterns": [
{
"begin": "(u|u8|U|L)?\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.cpp"
},
"1": {
"name": "meta.encoding.cpp"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.cpp"
}
},
"name": "string.quoted.double.cpp",
"patterns": [
{
"match": "\\\\u\\h{4}|\\\\U\\h{8}",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\['\"?\\\\abfnrtv]",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\[0-7]{1,3}",
"name": "constant.character.escape.cpp"
},
{
"match": "\\\\x\\h+",
"name": "constant.character.escape.cpp"
}
]
},
{
"begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.cpp"
},
"1": {
"name": "meta.encoding.cpp"
},
"3": {
"name": "invalid.illegal.delimiter-too-long.cpp"
}
},
"end": "\\)\\2(\\3)\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.cpp"
},
"1": {
"name": "invalid.illegal.delimiter-too-long.cpp"
}
},
"name": "string.quoted.double.raw.cpp"
}
]
}
},
"version": "https://github.com/atom/language-c/commit/80db38512efabb3030d600a8d8f8b6d91abbc96b"
}

Просмотреть файл

@ -0,0 +1,980 @@
{
"scopeName": "source.c",
"fileTypes": [
"c",
"h.in"
],
"firstLineMatch": "(?i)-\\*-[^*]*(Mode:\\s*)?C(\\s*;.*?)?\\s*-\\*-",
"name": "C",
"patterns": [
{
"include": "#preprocessor-rule-enabled"
},
{
"include": "#preprocessor-rule-disabled"
},
{
"include": "#preprocessor-rule-other"
},
{
"include": "#comments"
},
{
"match": "\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b",
"name": "keyword.control.c"
},
{
"match": "\\b(asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\b",
"name": "storage.type.c"
},
{
"match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b",
"name": "storage.modifier.c"
},
{
"match": "\\bk[A-Z]\\w*\\b",
"name": "constant.other.variable.mac-classic.c"
},
{
"match": "\\bg[A-Z]\\w*\\b",
"name": "variable.other.readwrite.global.mac-classic.c"
},
{
"match": "\\bs[A-Z]\\w*\\b",
"name": "variable.other.readwrite.static.mac-classic.c"
},
{
"match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
"name": "constant.language.c"
},
{
"include": "#operators"
},
{
"include": "#numbers"
},
{
"include": "#strings"
},
{
"begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+ # define\n((?<id>[a-zA-Z_$][\\w$]*)) # macro name\n(?:\n (\\()\n (\n \\s* \\g<id> \\s* # first argument\n ((,) \\s* \\g<id> \\s*)* # additional arguments\n (?:\\.\\.\\.)? # varargs ellipsis?\n )\n (\\))\n)?",
"beginCaptures": {
"1": {
"name": "keyword.control.directive.define.c"
},
"2": {
"name": "punctuation.definition.directive.c"
},
"3": {
"name": "entity.name.function.preprocessor.c"
},
"5": {
"name": "punctuation.definition.parameters.begin.c"
},
"6": {
"name": "variable.parameter.preprocessor.c"
},
"8": {
"name": "punctuation.separator.parameters.c"
},
"9": {
"name": "punctuation.definition.parameters.end.c"
}
},
"end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
"name": "meta.preprocessor.macro.c",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "^\\s*((#)\\s*(error|warning))\\b",
"captures": {
"1": {
"name": "keyword.control.directive.diagnostic.$3.c"
},
"2": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?<!\\\\)(?=\\n)",
"name": "meta.preprocessor.diagnostic.c",
"patterns": [
{
"include": "#line_continuation_character"
}
]
},
{
"begin": "^\\s*((#)\\s*(include|import))\\b\\s*",
"beginCaptures": {
"1": {
"name": "keyword.control.directive.$3.c"
},
"2": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
"name": "meta.preprocessor.include.c",
"patterns": [
{
"include": "#line_continuation_character"
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.c"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.c"
}
},
"name": "string.quoted.double.include.c"
},
{
"begin": "<",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.c"
}
},
"end": ">",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.c"
}
},
"name": "string.quoted.other.lt-gt.include.c"
}
]
},
{
"include": "#pragma-mark"
},
{
"begin": "^\\s*((#)\\s*line)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.directive.line.c"
},
"2": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
"name": "meta.preprocessor.c",
"patterns": [
{
"include": "#strings"
},
{
"include": "#numbers"
},
{
"include": "#line_continuation_character"
}
]
},
{
"begin": "^\\s*(?:((#)\\s*(?:elif|else|if|ifdef|ifndef))|((#)\\s*(pragma|undef)))\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.directive.conditional.c"
},
"2": {
"name": "punctuation.definition.directive.c"
},
"3": {
"name": "keyword.control.directive.$5.c"
},
"4": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
"name": "meta.preprocessor.c",
"patterns": [
{
"include": "#line_continuation_character"
}
]
},
{
"match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",
"name": "support.type.sys-types.c"
},
{
"match": "\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",
"name": "support.type.pthread.c"
},
{
"match": "(?x) \\b\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\n|uintmax_t|uintmax_t)\n\\b",
"name": "support.type.stdint.c"
},
{
"match": "\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",
"name": "support.constant.mac-classic.c"
},
{
"match": "(?x) \\b\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\n\\b",
"name": "support.type.mac-classic.c"
},
{
"match": "\\b([A-Za-z0-9_]+_t)\\b",
"name": "support.type.posix-reserved.c"
},
{
"include": "#block"
},
{
"begin": "(?x)\n(?:\n ^ |\n (?:\n (?=\\s)(?<!else|new|return)(?<=\\w) # word + space before name\n |\n (?=\\s*[A-Za-z_])(?<!&&)(?<=[*&>]) # type modifier before name\n )\n)\n(\\s*)(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate)\\s*\\()\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(?=\\()",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.function.leading.c"
},
"3": {
"name": "entity.name.function.c"
},
"4": {
"name": "punctuation.definition.parameters.c"
}
},
"end": "(?<=\\})|(?=#)|(;)",
"name": "meta.function.c",
"patterns": [
{
"include": "#comments"
},
{
"include": "#parens"
},
{
"match": "\\b(const)\\b",
"name": "storage.modifier.c"
},
{
"include": "#block"
}
]
},
{
"include": "#line_continuation_character"
}
],
"repository": {
"access": {
"captures": {
"2": {
"name": "punctuation.separator.dot-access.c"
},
"3": {
"name": "punctuation.separator.pointer-access.c"
},
"4": {
"name": "variable.other.member.c"
}
},
"match": "((\\.)|(->))([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\()"
},
"block": {
"patterns": [
{
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.block.begin.c"
}
},
"end": "\\}|(?=\\s*#\\s*endif\\b)",
"endCaptures": {
"0": {
"name": "punctuation.section.block.end.c"
}
},
"name": "meta.block.c",
"patterns": [
{
"include": "#block_innards"
}
]
}
]
},
"block_innards": {
"patterns": [
{
"include": "#preprocessor-rule-enabled-block"
},
{
"include": "#preprocessor-rule-disabled-block"
},
{
"include": "#preprocessor-rule-other-block"
},
{
"include": "#sizeof"
},
{
"include": "#access"
},
{
"include": "#libc"
},
{
"include": "#c_function_call"
},
{
"captures": {
"1": {
"name": "variable.other.c"
},
"2": {
"name": "punctuation.definition.parameters.c"
}
},
"match": "(?x)\n(?:\n (?:\n (?=\\s)(?<!else|new|return)\n (?<=\\w) \\s+ # or word + space before name\n )\n)\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name\n |\n (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
"name": "meta.initialization.c"
},
{
"include": "#block"
},
{
"include": "$base"
}
]
},
"c_function_call": {
"captures": {
"1": {
"name": "punctuation.whitespace.function-call.leading.c"
},
"2": {
"name": "support.function.any-method.c"
},
"4": {
"name": "punctuation.definition.parameters.c"
}
},
"match": "(?x)\n(?:\n (?=\\s)\n (?:(?<=else|new|return) | (?<!\\w)) (\\s+)\n)?\n\n# Actual name\n(\n \\b\n (?!\n (while|for|do|if|else|switch|catch|enumerate|return|sizeof|r?iterate)\n \\s* \\(\n )\n (?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | ::)++\n)\n\\s*(\\() # Opening bracket",
"name": "meta.function-call.c"
},
"comments": {
"patterns": [
{
"captures": {
"1": {
"name": "meta.toc-list.banner.block.c"
}
},
"match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
"name": "comment.block.c"
},
{
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.c"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.c"
}
},
"name": "comment.block.c"
},
{
"match": "\\*/.*\\n",
"name": "invalid.illegal.stray-comment-end.c"
},
{
"captures": {
"1": {
"name": "meta.toc-list.banner.line.c"
}
},
"match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
"name": "comment.line.banner.cpp"
},
{
"begin": "(^[ \\t]+)?(?=//)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.cpp"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "//",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.cpp"
}
},
"end": "\\n",
"name": "comment.line.double-slash.cpp",
"patterns": [
{
"include": "#line_continuation_character"
}
]
}
]
}
]
},
"disabled": {
"begin": "^\\s*#\\s*if(n?def)?\\b.*$",
"end": "^\\s*#\\s*endif\\b",
"patterns": [
{
"include": "#disabled"
},
{
"include": "#pragma-mark"
}
]
},
"libc": {
"captures": {
"1": {
"name": "punctuation.whitespace.support.function.leading.c"
},
"2": {
"name": "support.function.C99.c"
}
},
"match": "(?x) (\\s*) \\b\n(_Exit|(?:nearbyint|nextafter|nexttoward|netoward|nan)[fl]?|a(?:cos|sin)h?[fl]?|abort|abs|asctime|assert\n|atan(?:[h2]?[fl]?)?|atexit|ato[ifl]|atoll|bsearch|btowc|cabs[fl]?|cacos|cacos[fl]|cacosh[fl]?\n|calloc|carg[fl]?|casinh?[fl]?|catanh?[fl]?|cbrt[fl]?|ccosh?[fl]?|ceil[fl]?|cexp[fl]?|cimag[fl]?\n|clearerr|clock|clog[fl]?|conj[fl]?|copysign[fl]?|cosh?[fl]?|cpow[fl]?|cproj[fl]?|creal[fl]?\n|csinh?[fl]?|csqrt[fl]?|ctanh?[fl]?|ctime|difftime|div|erfc?[fl]?|exit|fabs[fl]?\n|exp(?:2[fl]?|[fl]|m1[fl]?)?|fclose|fdim[fl]?|fe[gs]et(?:env|exceptflag|round)|feclearexcept\n|feholdexcept|feof|feraiseexcept|ferror|fetestexcept|feupdateenv|fflush|fgetpos|fgetw?[sc]\n|floor[fl]?|fmax?[fl]?|fmin[fl]?|fmod[fl]?|fopen|fpclassify|fprintf|fputw?[sc]|fread|free|freopen\n|frexp[fl]?|fscanf|fseek|fsetpos|ftell|fwide|fwprintf|fwrite|fwscanf|genv|get[sc]|getchar|gmtime\n|gwc|gwchar|hypot[fl]?|ilogb[fl]?|imaxabs|imaxdiv|isalnum|isalpha|isblank|iscntrl|isdigit|isfinite\n|isgraph|isgreater|isgreaterequal|isinf|isless(?:equal|greater)?|isw?lower|isnan|isnormal|isw?print\n|isw?punct|isw?space|isunordered|isw?upper|iswalnum|iswalpha|iswblank|iswcntrl|iswctype|iswdigit|iswgraph\n|isw?xdigit|labs|ldexp[fl]?|ldiv|lgamma[fl]?|llabs|lldiv|llrint[fl]?|llround[fl]?|localeconv|localtime\n|log[2b]?[fl]?|log1[p0][fl]?|longjmp|lrint[fl]?|lround[fl]?|malloc|mbr?len|mbr?towc|mbsinit|mbsrtowcs\n|mbstowcs|memchr|memcmp|memcpy|memmove|memset|mktime|modf[fl]?|perror|pow[fl]?|printf|puts|putw?c(?:har)?\n|qsort|raise|rand|remainder[fl]?|realloc|remove|remquo[fl]?|rename|rewind|rint[fl]?|round[fl]?|scalbl?n[fl]?\n|scanf|setbuf|setjmp|setlocale|setvbuf|signal|signbit|sinh?[fl]?|snprintf|sprintf|sqrt[fl]?|srand|sscanf\n|strcat|strchr|strcmp|strcoll|strcpy|strcspn|strerror|strftime|strlen|strncat|strncmp|strncpy|strpbrk\n|strrchr|strspn|strstr|strto[kdf]|strtoimax|strtol[dl]?|strtoull?|strtoumax|strxfrm|swprintf|swscanf\n|system|tan|tan[fl]|tanh[fl]?|tgamma[fl]?|time|tmpfile|tmpnam|tolower|toupper|trunc[fl]?|ungetw?c|va_arg\n|va_copy|va_end|va_start|vfw?printf|vfw?scanf|vprintf|vscanf|vsnprintf|vsprintf|vsscanf|vswprintf|vswscanf\n|vwprintf|vwscanf|wcrtomb|wcscat|wcschr|wcscmp|wcscoll|wcscpy|wcscspn|wcsftime|wcslen|wcsncat|wcsncmp|wcsncpy\n|wcspbrk|wcsrchr|wcsrtombs|wcsspn|wcsstr|wcsto[dkf]|wcstoimax|wcstol[dl]?|wcstombs|wcstoull?|wcstoumax|wcsxfrm\n|wctom?b|wmem(?:set|chr|cpy|cmp|move)|wprintf|wscanf)\\b"
},
"line_continuation_character": {
"patterns": [
{
"match": "(\\\\)\\s*\\n",
"captures": {
"1": {
"name": "constant.character.escape.line-continuation.c"
}
}
}
]
},
"numbers": {
"patterns": [
{
"match": "\\b((0(x|X)[0-9a-fA-F]*)|(0(b|B)[01]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
"name": "constant.numeric.c"
}
]
},
"parens": {
"begin": "\\(",
"beginCaptures": {
"0": {
"name": "punctuation.section.parens.begin.c"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.section.parens.end.c"
}
},
"name": "meta.parens.c",
"patterns": [
{
"include": "$base"
}
]
},
"pragma-mark": {
"captures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.pragma.pragma-mark.c"
},
"3": {
"name": "punctuation.definition.directive.c"
},
"4": {
"name": "meta.toc-list.pragma-mark.c"
}
},
"match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",
"name": "meta.section"
},
"preprocessor-rule-disabled": {
"begin": "^\\s*(((#)if)\\s+(0)\\b).*",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
},
"4": {
"name": "constant.numeric.preprocessor.c"
}
},
"end": "^\\s*(((#)\\s*endif)\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"begin": "^\\s*(((#)\\s*else)\\b)",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?=^\\s*#\\s*endif\\b)",
"patterns": [
{
"include": "$base"
}
]
},
{
"begin": "\\G",
"end": "(?=^\\s*#\\s*(else|endif)\\b)",
"contentName": "comment.block.preprocessor.if-branch",
"patterns": [
{
"include": "#disabled"
},
{
"include": "#pragma-mark"
}
]
}
]
},
"preprocessor-rule-disabled-block": {
"begin": "^\\s*(((#)if)\\s+(0)\\b).*",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
},
"4": {
"name": "constant.numeric.preprocessor.c"
}
},
"end": "^\\s*(((#)\\s*endif)\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"begin": "^\\s*(((#)\\s*else\\b))",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"end": "(?=^\\s*#\\s*endif\\b)",
"patterns": [
{
"include": "#block_innards"
}
]
},
{
"begin": "\\G",
"end": "(?=^\\s*#\\s*(else|endif)\\b)",
"contentName": "comment.block.preprocessor.if-branch.in-block",
"patterns": [
{
"include": "#disabled"
},
{
"include": "#pragma-mark"
}
]
}
]
},
"preprocessor-rule-enabled": {
"begin": "^\\s*(((#)if)\\s+(0*1)\\b)",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
},
"4": {
"name": "constant.numeric.preprocessor.c"
}
},
"end": "^\\s*(((#)\\s*endif)\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"begin": "^\\s*(((#)\\s*else)\\b).*",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"contentName": "comment.block.preprocessor.else-branch",
"end": "(?=^\\s*#\\s*endif\\b)",
"patterns": [
{
"include": "#disabled"
},
{
"include": "#pragma-mark"
}
]
},
{
"begin": "\\G",
"end": "(?=^\\s*#\\s*(else|endif)\\b)",
"patterns": [
{
"include": "$base"
}
]
}
]
},
"preprocessor-rule-enabled-block": {
"begin": "^\\s*(((#)if)\\s+(0*1)\\b)",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
},
"4": {
"name": "constant.numeric.preprocessor.c"
}
},
"end": "^\\s*(((#)\\s*endif)\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"begin": "^\\s*(((#)\\s*else)\\b).*",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"contentName": "comment.block.preprocessor.else-branch.in-block",
"end": "(?=^\\s*#\\s*endif\\b)",
"patterns": [
{
"include": "#disabled"
},
{
"include": "#pragma-mark"
}
]
},
{
"begin": "\\G",
"end": "(?=^\\s*#\\s*(else|endif)\\b)",
"patterns": [
{
"include": "#block_innards"
}
]
}
]
},
"preprocessor-rule-other": {
"begin": "^\\s*(((#)\\s*if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"end": "^\\s*(((#)\\s*(endif))\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"include": "$base"
}
]
},
"preprocessor-rule-other-block": {
"begin": "^\\s*(((#)\\s*if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
"beginCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"end": "^\\s*(((#)\\s*endif)\\b)",
"endCaptures": {
"1": {
"name": "meta.preprocessor.c"
},
"2": {
"name": "keyword.control.directive.conditional.c"
},
"3": {
"name": "punctuation.definition.directive.c"
}
},
"patterns": [
{
"include": "#block_innards"
}
]
},
"operators": {
"patterns": [
{
"match": "(?<![\\w$])(sizeof)(?![\\w$])",
"name": "keyword.operator.sizeof.c"
},
{
"match": "--",
"name": "keyword.operator.decrement.c"
},
{
"match": "\\+\\+",
"name": "keyword.operator.increment.c"
},
{
"match": "%=|\\+=|-=|\\*=|(?<!\\()/=",
"name": "keyword.operator.assignment.compound.c"
},
{
"match": "&=|\\^=|<<=|>>=|\\|=",
"name": "keyword.operator.assignment.compound.bitwise.c"
},
{
"match": "<<|>>",
"name": "keyword.operator.bitwise.shift.c"
},
{
"match": "!=|<=|>=|==|<|>",
"name": "keyword.operator.comparison.c"
},
{
"match": "&&|!|\\|\\|",
"name": "keyword.operator.logical.c"
},
{
"match": "&|\\||\\^|~",
"name": "keyword.operator.c"
},
{
"match": "=",
"name": "keyword.operator.assignment.c"
},
{
"match": "%|\\*|/|-|\\+",
"name": "keyword.operator.c"
},
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "keyword.operator.ternary.c"
}
},
"end": ":",
"endCaptures": {
"0": {
"name": "keyword.operator.ternary.c"
}
},
"patterns": [
{
"include": "$self"
}
]
}
]
},
"strings": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.c"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.c"
}
},
"name": "string.quoted.double.c",
"patterns": [
{
"include": "#string_escaped_char"
},
{
"include": "#string_placeholder"
},
{
"include": "#line_continuation_character"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.c"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.c"
}
},
"name": "string.quoted.single.c",
"patterns": [
{
"include": "#string_escaped_char"
},
{
"include": "#line_continuation_character"
}
]
}
]
},
"string_escaped_char": {
"patterns": [
{
"match": "(?x)\\\\ (\n\\\\ |\n[abefnprtv'\"?] |\n[0-3]\\d{,2} |\n[4-7]\\d? |\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )",
"name": "constant.character.escape.c"
},
{
"match": "\\\\.",
"name": "invalid.illegal.unknown-escape.c"
}
]
},
"string_placeholder": {
"patterns": [
{
"match": "(?x) %\n(\\d+\\$)? # field (argument #)\n[#0\\- +']* # flags\n[,;:_]? # separator character (AltiVec)\n((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n[diouxXDOUeEfFgGaACcSspn%] # conversion type",
"name": "constant.other.placeholder.c"
},
{
"match": "%",
"name": "invalid.illegal.placeholder.c"
}
]
}
},
"version": "https://github.com/atom/language-c/commit/2a5fafe1d86f690b5ab2c877cea2fc6a598e001a"
}

Просмотреть файл

@ -0,0 +1,668 @@
{
"comment": "CoffeeScript",
"fileTypes": [
"coffee",
"Cakefile",
"coffee.erb",
"cake",
"cjsx",
"cson",
"iced"
],
"injections": {
"string.regexp.block.coffee": {
"patterns": [
{
"include": "#interpolated_coffee"
},
{
"include": "#embedded_comment"
}
]
}
},
"keyEquivalent": "^~C",
"name": "CoffeeScript",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.parameters.begin.coffee"
},
"2": {
"patterns": [
{
"captures": {
"1": {
"name": "variable.parameter.function.coffee"
},
"2": {
"name": "punctuation.separator.key-value.coffee"
},
"3": {
"name": "string.quoted.double.coffee"
},
"4": {
"name": "punctuation.definition.string.begin.coffee"
},
"5": {
"name": "punctuation.definition.string.end.coffee"
},
"6": {
"name": "string.quoted.single.coffee"
},
"7": {
"name": "punctuation.definition.string.begin.coffee"
},
"8": {
"name": "punctuation.definition.string.end.coffee"
}
},
"match": "(?x)\n\t\t\t\t\t\t\t\t([^()\\s,]+)\n\t\t\t\t\t\t\t\t\\s+(=)\\s+\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t((\")[^\"]*(\"))\n\t\t\t\t\t\t\t\t | ((')[^']*('))\n\t\t\t\t\t\t\t\t)"
},
{
"match": "[^()\\s,]+",
"name": "variable.parameter.function.coffee"
},
{
"match": ",",
"name": "punctuation.separator.arguments.coffee"
}
]
},
"3": {
"name": "punctuation.definition.parameters.begin.coffee"
},
"4": {
"name": "storage.type.function.coffee"
}
},
"comment": "match stuff like: a -> … ",
"match": "(\\()([^()]*?)(\\))\\s*([=-]>)",
"name": "meta.inline.function.coffee"
},
{
"captures": {
"1": {
"name": "keyword.operator.new.coffee"
},
"4": {
"name": "storage.type.class.coffee"
},
"6": {
"name": "entity.name.type.instance.coffee"
},
"7": {
"name": "entity.name.type.instance.coffee"
}
},
"match": "(new)\\s+(((class)(\\s+(\\w+(?:\\.\\w*)*))?)|(\\w+(?:\\.\\w*)*))",
"name": "meta.class.instance.constructor"
},
{
"begin": "'''",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "'''",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.unquoted.heredoc.coffee"
},
{
"begin": "\"\"\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "\"\"\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.quoted.double.heredoc.coffee",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.coffee"
},
{
"include": "#interpolated_coffee"
}
]
},
{
"begin": "(?=`)",
"end": "(?<=`)",
"name": "meta.embedded.line.coffee",
"patterns": [
{
"begin": "`",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"contentName": "source.js",
"end": "(`)",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.coffee"
},
"1": {
"name": "source.js"
}
},
"name": "string.other.embedded.javascript.coffee",
"patterns": [
{
"include": "source.js"
}
]
}
]
},
{
"begin": "(?<!#)###(?!#)",
"captures": {
"0": {
"name": "punctuation.definition.comment.coffee"
}
},
"end": "###(?:[ \\t]*\\n)",
"name": "comment.block.coffee",
"patterns": [
{
"match": "(?<=^|\\s)@\\w*(?=\\s)",
"name": "storage.type.annotation.coffeescript"
}
]
},
{
"begin": "(^[ \\t]+)?(?=#)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.coffee"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.coffee"
}
},
"end": "\\n",
"name": "comment.line.number-sign.coffee"
}
]
},
{
"begin": "/{3}",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "(/{3})[imgy]{0,4}",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.regexp.block.coffee",
"patterns": [
{
"include": "source.js.regexp"
}
]
},
{
"begin": "/(?![\\s=/*+{}?])",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "(/)[igmy]{0,4}(?![a-zA-Z0-9])",
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.regexp.coffee",
"patterns": [
{
"include": "source.js.regexp"
}
]
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<![\\.\\$])\n\t\t\t\t(\n\t\t\t\t\tbreak\n\t\t\t\t | by\n\t\t\t\t | catch\n\t\t\t\t | continue\n\t\t\t\t | else\n\t\t\t\t | finally\n\t\t\t\t | for\n\t\t\t\t | in\n\t\t\t\t | of\n\t\t\t\t | if\n\t\t\t\t | return\n\t\t\t\t | switch\n\t\t\t\t | then\n\t\t\t\t | throw\n\t\t\t\t | try\n\t\t\t\t | unless\n\t\t\t\t | when\n\t\t\t\t | while\n\t\t\t\t | until\n\t\t\t\t | loop\n\t\t\t\t | do\n\t\t\t\t | (?<=for)\\s+own\n\t\t\t\t)\n\t\t\t\t(?!\\s*:)\n\t\t\t\t\\b\n\t\t\t",
"name": "keyword.control.coffee"
},
{
"match": "(?x)\n (and|or|<<|>>>?|(?<!\\()\\/|[=!<>*%+\\-&^])?=(?!>)\n | [!%^*\\/~?:]\n | \\-?\\-(?!>)\n | \\+\\+?\n | <>\n | <\n | >\n | &&?\n | \\.\\.\\.?\n | \\|\\|?\n | \\b(?<![\\.\\$])(instanceof|new|delete|typeof|and|or|is|isnt|not|super)(?!\\s*:)\\b\n\t\t\t",
"name": "keyword.operator.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<![\\.\\$])\n\t\t\t\t(\n\t\t\t\t\t case\n | default\n | function\n | var\n | void\n | with\n | const\n | let\n | enum\n | export\n | import\n | native\n | __hasProp\n | __extends\n | __slice\n | __bind\n | __indexOf\n | implements\n | interface\n | package\n | private\n | protected\n | public\n | static\n | yield\n )\n\t\t\t\t(?!\\s*:)\n\t\t\t\t\\b\n\t\t\t",
"name": "keyword.other.reserved.coffee"
},
{
"captures": {
"1": {
"name": "variable.other.assignment.coffee"
},
"4": {
"name": "punctuation.separator.key-value"
},
"5": {
"name": "keyword.operator.coffee"
}
},
"match": "(?x)\n\t\t\t\t(?:\n\t\t\t\t\t([a-zA-Z\\$_](\\w|\\$|\\.)*)\n\t\t\t\t\t\\s*\n\t\t\t\t\t(?!\\::)\n\t\t\t\t\t((:)|((?:or|and|[-+/&%*?])?=)(?![>=]))\n\t\t\t\t\t(?!\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\\s*\\(.*\\)\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t([=-]>)\n\t\t\t\t\t)\n\t\t\t\t)"
},
{
"begin": "(?<=\\s|^)(\\{)(?=.+?\\}\\s+[:=])",
"beginCaptures": {
"0": {
"name": "keyword.operator.coffee"
}
},
"end": "(\\}\\s*[:=])",
"endCaptures": {
"0": {
"name": "keyword.operator.coffee"
}
},
"name": "meta.variable.assignment.destructured.object.coffee",
"patterns": [
{
"include": "#variable_name"
},
{
"include": "#instance_variable"
},
{
"include": "#single_quoted_string"
},
{
"include": "#double_quoted_string"
},
{
"include": "#numeric"
}
]
},
{
"begin": "(?<=\\s|^)(\\[)(?=.+?\\]\\s+[:=])",
"beginCaptures": {
"0": {
"name": "keyword.operator.coffee"
}
},
"end": "(\\]\\s*[:=])",
"endCaptures": {
"0": {
"name": "keyword.operator.coffee"
}
},
"name": "meta.variable.assignment.destructured.array.coffee",
"patterns": [
{
"include": "#variable_name"
},
{
"include": "#instance_variable"
},
{
"include": "#single_quoted_string"
},
{
"include": "#double_quoted_string"
},
{
"include": "#numeric"
}
]
},
{
"captures": {
"1": {
"name": "entity.name.function.coffee"
},
"4": {
"name": "punctuation.definition.parameters.begin.coffee"
},
"5": {
"patterns": [
{
"captures": {
"1": {
"name": "variable.parameter.function.coffee"
},
"2": {
"name": "punctuation.separator.key-value.coffee"
},
"3": {
"name": "string.quoted.double.coffee"
},
"4": {
"name": "punctuation.definition.string.begin.coffee"
},
"5": {
"name": "punctuation.definition.string.end.coffee"
},
"6": {
"name": "string.quoted.single.coffee"
},
"7": {
"name": "punctuation.definition.string.begin.coffee"
},
"8": {
"name": "punctuation.definition.string.end.coffee"
}
},
"match": "(?x)\n\t\t\t\t\t\t\t\t([^()\\s,]+)\n\t\t\t\t\t\t\t\t\\s+(=)\\s+\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t((\")[^\"]*(\"))\n\t\t\t\t\t\t\t\t | ((')[^']*('))\n\t\t\t\t\t\t\t\t)"
},
{
"match": "[^()\\s,]+",
"name": "variable.parameter.function.coffee"
},
{
"match": ",",
"name": "punctuation.separator.arguments.coffee"
}
]
},
"6": {
"name": "punctuation.definition.parameters.begin.coffee"
},
"7": {
"name": "storage.type.function.coffee"
}
},
"match": "(?x)\n\t\t\t\t(?<=^|\\s)\n\t\t\t\t(?=@?[a-zA-Z\\$_])\n\t\t\t\t(\n\t\t\t\t\t@?[a-zA-Z\\$_](\\w|\\$|:|\\.)*\n\t\t\t\t\t\\s*\n\t\t\t\t\t(?=\n\t\t\t\t\t\t[:=]\n\t\t\t\t\t\t(\\s*(\\()(.*)(\\)))?\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t([=-]>)\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t",
"name": "meta.function.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<!\\.|::)\n\t\t\t\t(true|on|yes)\n\t\t\t\t(?!\\s*[:=][^=])\n\t\t\t\t\\b",
"name": "constant.language.boolean.true.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<!\\.|::)\n\t\t\t\t(false|off|no)\n\t\t\t\t(?!\\s*[:=][^=])\n\t\t\t\t\\b",
"name": "constant.language.boolean.false.coffee"
},
{
"match": "@?\\b(?!class|subclass|extends|decodeURI(Component)?|encodeURI(Component)?|eval|parse(Float|Int)|require)\\w+(?=\\s+(?!(of|in|then|is|isnt|and|or|for|else|when|not|if)\\s)(?=(@?\\w+|\\->|\\-\\d|\\[|\\{|\"|'))|(?=\\())",
"name": "entity.name.function.coffee"
},
{
"match": "[=-]>",
"name": "storage.type.function.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<!\\.|::)\n\t\t\t\tnull\n\t\t\t\t(?!\\s*[:=][^=])\n\t\t\t\t\\b",
"name": "constant.language.null.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b\n\t\t\t\t(?<!\\.|::)\n\t\t\t\t(extends)\n\t\t\t\t(?!\\s*[:=][^=])\n\t\t\t\t\\b",
"name": "variable.language.coffee"
},
{
"match": "\\b(?<!\\.)this(?!\\s*[:=])\\b",
"name": "variable.language.this.coffee"
},
{
"captures": {
"1": {
"name": "storage.type.class.coffee"
},
"2": {
"name": "keyword.control.inheritance.coffee"
},
"3": {
"name": "entity.other.inherited-class.coffee"
}
},
"match": "(?x)\n\t\t\t\t\t(?<=\\s|^|\\[|\\()\n (class\\b)\n\t\t\t\t\t(?:\n\t\t\t\t\t\t\\s+(extends)\\s+\n\t\t\t\t\t\t(@?[a-zA-Z\\$\\._][\\w\\.]*)\n\t\t\t\t\t)",
"name": "meta.class.coffee"
},
{
"captures": {
"1": {
"name": "storage.type.class.coffee"
},
"2": {
"name": "entity.name.type.class.coffee"
},
"3": {
"name": "keyword.control.inheritance.coffee"
},
"4": {
"name": "entity.other.inherited-class.coffee"
}
},
"match": "(?x)\n\t\t\t (?<=\\s|^|\\[|\\()\n\t\t\t\t\t(class\\b)\n\t\t\t\t\t\\s+\n\t\t\t\t\t(@?[a-zA-Z\\$_][\\w\\.]*)?\n\t\t\t\t\t(?:\n\t\t\t\t\t\t\\s+(extends)\\s+\n\t\t\t\t\t\t(@?[a-zA-Z\\$\\._][\\w\\.]*)\n\t\t\t\t\t)?",
"name": "meta.class.coffee"
},
{
"match": "\\b(debugger|\\\\)\\b",
"name": "keyword.other.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b(\n\t\t\t\t\tArray\n\t\t\t\t | ArrayBuffer\n\t\t\t\t | Blob\n\t\t\t\t | Boolean\n\t\t\t\t | Date\n\t\t\t\t | document\n\t\t\t\t | Function\n\t\t\t\t | Int(8|16|32|64)Array\n\t\t\t\t | Math\n\t\t\t\t | Map\n\t\t\t\t | Number\n\t\t\t\t | Object\n\t\t\t\t | Proxy\n\t\t\t\t | RegExp\n\t\t\t\t | Set\n\t\t\t\t | String\n\t\t\t\t | WeakMap\n\t\t\t\t | window\n\t\t\t\t | Uint(8|16|32|64)Array\n\t\t\t\t | XMLHttpRequest\n\t\t\t\t)\\b",
"name": "support.class.coffee"
},
{
"match": "\\b(console)\\b",
"name": "entity.name.type.object.coffee"
},
{
"match": "((?<=console\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\b",
"name": "support.function.console.coffee"
},
{
"match": "(?x)\n\t\t\t\t\\b(\n\t\t\t\t\tdecodeURI(Component)?\n\t\t\t\t | encodeURI(Component)?\n\t\t\t\t | eval\n\t\t\t\t | parse(Float|Int)\n\t\t\t\t | require\n\t\t\t\t)\\b",
"name": "support.function.coffee"
},
{
"match": "(?x)\n\t\t\t\t(\n\t\t\t\t\t(?<=\\.)\n\t\t\t\t\t(\n\t\t\t\t\t\tapply\n\t\t\t\t\t | call\n\t\t\t\t\t | concat\n\t\t\t\t\t | every\n\t\t\t\t\t | filter\n\t\t\t\t\t | forEach\n\t\t\t\t\t | from\n\t\t\t\t\t | hasOwnProperty\n\t\t\t\t\t | indexOf\n\t\t\t\t\t | isPrototypeOf\n\t\t\t\t\t | join\n\t\t\t\t\t | lastIndexOf\n\t\t\t\t\t | map\n\t\t\t\t\t | of\n\t\t\t\t\t | pop\n\t\t\t\t\t | propertyIsEnumerable\n\t\t\t\t\t | push\n\t\t\t\t\t | reduce(Right)?\n\t\t\t\t\t | reverse\n\t\t\t\t\t | shift\n\t\t\t\t\t | slice\n\t\t\t\t\t | some\n\t\t\t\t\t | sort\n\t\t\t\t\t | splice\n\t\t\t\t\t | to(Locale)?String\n\t\t\t\t\t | unshift\n\t\t\t\t\t | valueOf\n\t\t\t\t\t)\n\t\t\t\t)\\b",
"name": "support.function.method.array.coffee"
},
{
"match": "((?<=Array\\.)(isArray))\\b",
"name": "support.function.static.array.coffee"
},
{
"match": "(?x)\n\t\t\t\t(\n\t\t\t\t\t(?<=Object\\.)\n\t\t\t\t\t(\n\t\t\t\t\t\tcreate\n\t\t\t\t\t | definePropert(ies|y)\n\t\t\t\t\t | freeze\n\t\t\t\t\t | getOwnProperty(Descriptors?|Names)\n\t\t\t\t\t | getProperty(Descriptor|Names)\n\t\t\t\t\t | getPrototypeOf\n\t\t\t\t\t | is(Extensible|Frozen|Sealed)?\n\t\t\t\t\t | isnt\n\t\t\t\t\t | keys\n\t\t\t\t\t | preventExtensions\n\t\t\t\t\t | seal\n\t\t\t\t\t)\n\t\t\t\t)\\b",
"name": "support.function.static.object.coffee"
},
{
"match": "(?x)\n\t\t\t\t(\n\t\t\t\t\t(?<=Math\\.)\n\t\t\t\t\t(\n\t\t\t\t\t\tabs\n\t\t\t\t\t | acos\n\t\t\t\t\t | acosh\n\t\t\t\t\t | asin\n\t\t\t\t\t | asinh\n\t\t\t\t\t | atan\n\t\t\t\t\t | atan2\n\t\t\t\t\t | atanh\n\t\t\t\t\t | ceil\n\t\t\t\t\t | cos\n\t\t\t\t\t | cosh\n\t\t\t\t\t | exp\n\t\t\t\t\t | expm1\n\t\t\t\t\t | floor\n\t\t\t\t\t | hypot\n\t\t\t\t\t | log\n\t\t\t\t\t | log10\n\t\t\t\t\t | log1p\n\t\t\t\t\t | log2\n\t\t\t\t\t | max\n\t\t\t\t\t | min\n\t\t\t\t\t | pow\n\t\t\t\t\t | random\n\t\t\t\t\t | round\n\t\t\t\t\t | sign\n\t\t\t\t\t | sin\n\t\t\t\t\t | sinh\n\t\t\t\t\t | sqrt\n\t\t\t\t\t | tan\n\t\t\t\t\t | tanh\n\t\t\t\t\t | trunc\n\t\t\t\t\t)\n\t\t\t\t)\\b",
"name": "support.function.static.math.coffee"
},
{
"match": "(?x)\n\t\t\t\t(\n\t\t\t\t\t(?<=Number\\.)\n\t\t\t\t\t(\n\t\t\t\t\t\tis(Finite|Integer|NaN)\n\t\t\t\t\t | toInteger\n\t\t\t\t\t)\n\t\t\t\t)\\b",
"name": "support.function.static.number.coffee"
},
{
"match": "\\b(Infinity|NaN|undefined)\\b",
"name": "constant.language.coffee"
},
{
"match": "\\;",
"name": "punctuation.terminator.statement.coffee"
},
{
"match": ",",
"name": "meta.delimiter.object.comma.coffee"
},
{
"match": "\\.",
"name": "meta.delimiter.method.period.coffee"
},
{
"match": "\\{|\\}",
"name": "meta.brace.curly.coffee"
},
{
"match": "\\(|\\)",
"name": "meta.brace.round.coffee"
},
{
"match": "\\[|\\]\\s*",
"name": "meta.brace.square.coffee"
},
{
"include": "#instance_variable"
},
{
"include": "#single_quoted_string"
},
{
"include": "#double_quoted_string"
},
{
"include": "#numeric"
}
],
"repository": {
"double_quoted_string": {
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.quoted.double.coffee",
"patterns": [
{
"match": "(?x)\n\t\t\t\t\t\t\t\t\\\\(\n\t\t\t\t\t\t\t\t\tx\\h{2}\n\t\t\t\t\t\t\t\t | [0-2][0-7]{0,2}\n\t\t\t\t\t\t\t\t | 3[0-6][0-7]\n\t\t\t\t\t\t\t\t | 37[0-7]?\n\t\t\t\t\t\t\t\t | [4-7][0-7]?\n\t\t\t\t\t\t\t\t | .\n\t\t\t\t\t\t\t\t)",
"name": "constant.character.escape.coffee"
},
{
"include": "#interpolated_coffee"
}
]
}
]
},
"embedded_comment": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.coffee"
}
},
"match": "(?<!\\\\)(#).*$\\n?",
"name": "comment.line.number-sign.coffee"
}
]
},
"instance_variable": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.variable.coffee"
}
},
"match": "(@)([a-zA-Z_\\$]\\w*)?",
"name": "variable.other.readwrite.instance.coffee"
}
]
},
"interpolated_coffee": {
"patterns": [
{
"begin": "#\\{",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.coffee"
}
},
"contentName": "source.coffee",
"end": "(\\})",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.coffee"
},
"1": {
"name": "source.coffee"
}
},
"name": "meta.embedded.line.coffee",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"numeric": {
"patterns": [
{
"match": "(?x)\n\t\t\t\t\t\t(?<!\\$)\\b\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(0([box])[0-9a-fA-F]+)\n\t\t\t\t\t\t | ([0-9]+(\\.[0-9]+)?(e[+\\-]?[0-9]+)?)\n\t\t\t\t\t\t)\\b",
"name": "constant.numeric.coffee"
}
]
},
"single_quoted_string": {
"patterns": [
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.coffee"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.coffee"
}
},
"name": "string.quoted.single.coffee",
"patterns": [
{
"match": "(?x)\n\t\t\t\t\t\t\t\t\\\\(\n\t\t\t\t\t\t\t\t\tx\\h{2}\n\t\t\t\t\t\t\t\t | [0-2][0-7]{0,2}\n\t\t\t\t\t\t\t\t | 3[0-6][0-7]?\n\t\t\t\t\t\t\t\t | 37[0-7]?\n\t\t\t\t\t\t\t\t | [4-7][0-7]?\n\t\t\t\t\t\t\t\t | .\n\t\t\t\t\t\t\t\t)",
"name": "constant.character.escape.coffee"
}
]
}
]
},
"variable_name": {
"patterns": [
{
"match": "([a-zA-Z\\$_]\\w*(\\.\\w+)*)",
"name": "variable.other.assignment.coffee"
}
]
}
},
"scopeName": "source.coffee",
"uuid": "5B520980-A7D5-4E10-8582-1A4C889A8DE5",
"version": "https://github.com/textmate/coffee-script.tmbundle/commit/da28450cf18a73595e298535c93c8370ae06994c"
}

Просмотреть файл

@ -0,0 +1,153 @@
{
"name": "ASP.NET Razor",
"scopeName": "text.html.cshtml",
"fileTypes": [
"cshtml",
"gohtml"
],
"patterns": [
{
"name": "section.embedded.source.cshtml",
"begin": "(@?([a-zA-Z0-9]+)?)(\\s[a-zA-Z0-9]+)?(\n|\r)?(\\{)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.cshtml"
},
"1": {
"name": "keyword.control.cshtml"
}
},
"patterns": [
{
"name": "section.embedded.source.cshtml",
"begin": "(@?([a-zA-Z0-9]+)?)(\\s[a-zA-Z0-9]+)?(\n|\r)?(\\{)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.cshtml"
},
"1": {
"name": "keyword.control.cshtml"
}
},
"patterns": [
{
"name": "string.quoted.single.cshtml",
"match": "'"
},
{
"include": "#embedded-code"
},
{
"include": "#comments"
},
{
"include": "source.cs"
},
{
"include": "text.html.basic"
}
],
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.cshtml"
}
}
},
{
"name": "string.quoted.single.cshtml",
"match": "'"
},
{
"include": "#embedded-code"
},
{
"include": "#comments"
},
{
"include": "text.html.basic"
}
],
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.cshtml"
}
},
"comments": "Simple multi-line code section"
},
{
"begin": "(@[a-zA-Z0-9]+)(\\s?)",
"captures": {
"0": {
"name": "section.embedded.begin.cshtml"
},
"1": {
"name": "keyword.control.cshtml"
}
},
"patterns": [
{
"match": "(([a-zA-Z0-9]+)(\\.)?)+?",
"captures": {
"2": {
"name": "entity.name.tag.source.cshtml"
},
"3": {
"name": "punctuation.separator.namespace.source.cshtml"
}
}
},
{
"include": "#embedded-code"
},
{
"include": "#comments"
},
{
"include": "source.cs"
},
{
"include": "text.html.basic"
}
],
"end": "(\\n|\\s)",
"comments": "Covers single line Razor tags"
},
{
"include": "#comments"
},
{
"include": "text.html.basic"
}
],
"repository": {
"embedded-code": {
"match": "(@?[a-zA-Z0-9]+)(\\.([a-zA-Z0-9]+))?",
"captures": {
"1": {
"name": "keyword.control.cshtml"
},
"3": {
"name": "entity.name.tag.source.cshtml"
}
},
"patterns": [
{
"include": "#comments"
}
]
},
"comments": {
"begin": "@\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.source.cshtml"
}
},
"end": "\\*@",
"name": "comment.block.cshtml"
}
},
"version": "https://github.com/demyte/language-cshtml/commit/a49735dc7aef56ae772a3bcfd8e42c89895dcff4"
}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,268 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>patch</string>
<string>diff</string>
<string>rej</string>
</array>
<key>firstLineMatch</key>
<string>(?x)^
(===\ modified\ file
|==== \s* // .+ \s - \s .+ \s+ ====
|Index:\
|---\ [^%\n]
|\*\*\*.*\d{4}\s*$
|\d+(,\d+)* (a|d|c) \d+(,\d+)* $
|diff\ --git\
|commit\ [0-9a-f]{40}$
)</string>
<key>keyEquivalent</key>
<string>^~D</string>
<key>name</key>
<string>Diff</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.separator.diff</string>
</dict>
</dict>
<key>match</key>
<string>^((\*{15})|(={67})|(-{3}))$\n?</string>
<key>name</key>
<string>meta.separator.diff</string>
</dict>
<dict>
<key>match</key>
<string>^\d+(,\d+)*(a|d|c)\d+(,\d+)*$\n?</string>
<key>name</key>
<string>meta.diff.range.normal</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.toc-list.line-number.diff</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
</dict>
<key>match</key>
<string>^(@@)\s*(.+?)\s*(@@)($\n?)?</string>
<key>name</key>
<string>meta.diff.range.unified</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.range.diff</string>
</dict>
</dict>
<key>match</key>
<string>^(((\-{3}) .+ (\-{4}))|((\*{3}) .+ (\*{4})))$\n?</string>
<key>name</key>
<string>meta.diff.range.context</string>
</dict>
<dict>
<key>match</key>
<string>^diff --git a/.*$\n?</string>
<key>name</key>
<string>meta.diff.header.git</string>
</dict>
<dict>
<key>match</key>
<string>^diff (-|\S+\s+\S+).*$\n?</string>
<key>name</key>
<string>meta.diff.header.command</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.from-file.diff</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.from-file.diff</string>
</dict>
<key>7</key>
<dict>
<key>name</key>
<string>punctuation.definition.from-file.diff</string>
</dict>
</dict>
<key>match</key>
<string>(^(((-{3}) .+)|((\*{3}) .+))$\n?|^(={4}) .+(?= - ))</string>
<key>name</key>
<string>meta.diff.header.from-file</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.definition.to-file.diff</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.to-file.diff</string>
</dict>
<key>4</key>
<dict>
<key>name</key>
<string>punctuation.definition.to-file.diff</string>
</dict>
</dict>
<key>match</key>
<string>(^(\+{3}) .+$\n?| (-) .* (={4})$\n?)</string>
<key>name</key>
<string>meta.diff.header.to-file</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.inserted.diff</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.inserted.diff</string>
</dict>
</dict>
<key>match</key>
<string>^(((&gt;)( .*)?)|((\+).*))$\n?</string>
<key>name</key>
<string>markup.inserted.diff</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.inserted.diff</string>
</dict>
</dict>
<key>match</key>
<string>^(!).*$\n?</string>
<key>name</key>
<string>markup.changed.diff</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.inserted.diff</string>
</dict>
<key>6</key>
<dict>
<key>name</key>
<string>punctuation.definition.inserted.diff</string>
</dict>
</dict>
<key>match</key>
<string>^(((&lt;)( .*)?)|((-).*))$\n?</string>
<key>name</key>
<string>markup.deleted.diff</string>
</dict>
<dict>
<key>begin</key>
<string>^(#)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.diff</string>
</dict>
</dict>
<key>comment</key>
<string>Git produces unified diffs with embedded comments"</string>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.diff</string>
</dict>
<dict>
<key>match</key>
<string>^index [0-9a-f]{7,40}\.\.[0-9a-f]{7,40}.*$\n?</string>
<key>name</key>
<string>meta.diff.index.git</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.separator.key-value.diff</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>meta.toc-list.file-name.diff</string>
</dict>
</dict>
<key>match</key>
<string>^Index(:) (.+)$\n?</string>
<key>name</key>
<string>meta.diff.index</string>
</dict>
<dict>
<key>match</key>
<string>^Only in .*: .*$\n?</string>
<key>name</key>
<string>meta.diff.only-in</string>
</dict>
</array>
<key>scopeName</key>
<string>source.diff</string>
<key>uuid</key>
<string>7E848FF4-708E-11D9-97B4-0011242E4184</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,533 @@
{
"name": "F#",
"scopeName": "source.fsharp",
"fileTypes": [
"fs"
],
"foldingStartMarker": "",
"foldingStopMarker": "",
"patterns": [
{
"include": "#comments"
},
{
"include": "#constants"
},
{
"include": "#structure"
},
{
"include": "#attributes"
},
{
"include": "#strings"
},
{
"include": "#chars"
},
{
"include": "#double_tick"
},
{
"include": "#definition"
},
{
"include": "#method_calls"
},
{
"include": "#modules"
},
{
"include": "#anonymous_functions"
},
{
"include": "#keywords"
},
{
"include": "#records"
},
{
"include": "#cexprs"
},
{
"include": "#text"
}
],
"repository": {
"anonymous_functions": {
"patterns": [
{
"name": "meta.function.anonymous",
"begin": "\\b(fun)\\b",
"end": "(->)",
"beginCaptures": {
"1": {
"name": "keyword.other.function-definition.fsharp"
}
},
"endCaptures": {
"1": {
"name": "keyword.other.fsharp"
}
},
"patterns": [
{
"include": "#variables"
}
]
}
]
},
"attributes": {
"patterns": [
{
"name": "support.function.attribute.fsharp",
"begin": "\\[\\<",
"end": "\\>\\]",
"patterns": [
{
"include": "$self"
}
]
}
]
},
"comments": {
"patterns": [
{
"name": "comment.block.fsharp",
"begin": "(\\(\\*(?!\\)))",
"end": "(\\*\\))",
"beginCaptures": {
"1": {
"name": "comment.block.fsharp"
}
},
"endCaptures": {
"1": {
"name": "comment.block.fsharp"
}
}
},
{
"name": "comment.line.double-slash.fsharp",
"match": "//.*$"
}
]
},
"constants": {
"patterns": [
{
"name": "constant.language.unit.fsharp",
"match": "\\(\\)"
},
{
"name": "constant.numeric.floating-point.fsharp",
"match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
},
{
"name": "constant.numeric.integer.nativeint.fsharp",
"match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))"
},
{
"name": "constant.others.fsharp",
"match": "\\b(true|false|null|unit)\\b"
}
]
},
"definition": {
"patterns": [
{
"name": "meta.binding.fsharp",
"begin": "(val mutable|val|let mutable|let|member|static member|override|let!)(\\s+rec|mutable)?(\\s+private|internal|public)?\\s+(\\([^\\s-]*\\)|[_a-zA-Z]([_a-zA-Z0-9,\\.]|(?<=,)\\s)*)",
"end": "((``.*``)|(with)|=|$)",
"beginCaptures": {
"1": {
"name": "keyword.other.binding.fsharp"
},
"2": {
"name": "keyword.other.function-recursive.fsharp"
},
"3": {
"name": "keyword.other.access.fsharp"
},
"4": {
"name": "variable.other.binding.fsharp"
}
},
"endCaptures": {
"1": {
"name": "keyword.other.fsharp"
},
"2": {
"name": "variable.other.binding.fsharp"
},
"3": {
"name": "keyword.other.fsharp"
}
},
"patterns": [
{
"include": "#variables"
}
]
}
]
},
"keywords": {
"patterns": [
{
"name": "keyword.other.fsharp",
"match": "\\b(function|yield!|yield|class|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|member|try|finally|and|when|use|use\\!)\\b"
},
{
"name": "meta.preprocessor.fsharp",
"begin": "^\\s*#\\s*(light)\\b",
"end": "(\\s|$)"
},
{
"name": "keyword.other.fsharp",
"match": "(\\|>|\\->|\\<\\-|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|{|}|\\||_|\\.\\.|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\<\\<)"
}
]
},
"modules": {
"patterns": [
{
"name": "entity.name.section.fsharp",
"begin": "\\b(namespace|module)(\\s+public|internal|private)?\\s+([a-zA-Z][a-zA-Z0-9'_. ]*)",
"end": "(\\s|$)",
"beginCaptures": {
"1": {
"name": "keyword.other.fsharp"
},
"2": {
"name": "keyword.other.fsharp"
},
"3": {
"name": "entity.name.section.fsharp"
}
},
"patterns": [
{
"name": "entity.name.section.fsharp",
"match": "(\\.)([A-Z][a-zA-Z0-9'_]*)",
"captures": {
"1": {
"name": "punctuation.separator.namespace-reference.fsharp"
},
"2": {
"name": "entity.name.section.fsharp"
}
}
}
]
},
{
"name": "meta.namespace.open.fsharp",
"begin": "\\b(open)\\s+([A-Z][a-zA-Z0-9'_]*)(?=(\\.[A-Z][a-zA-Z0-9_]*)*)",
"end": "(\\s|$)",
"beginCaptures": {
"1": {
"name": "keyword.other.fsharp"
},
"2": {
"name": "entity.name.section.fsharp"
}
},
"patterns": [
{
"name": "entity.name.section.fsharp",
"match": "(\\.)([a-zA-Z][a-zA-Z0-9'_]*)",
"captures": {
"1": {
"name": "punctuation.separator.namespace-reference.fsharp"
},
"2": {
"name": "entity.name.section.fsharp"
}
}
}
]
},
{
"name": "meta.namespace.alias.fsharp",
"begin": "^\\s*(module)\\s+([A-Z][a-zA-Z0-9'_]*)\\s*(=)\\s*([A-Z][a-zA-Z0-9'_]*)",
"end": "(\\s|$)",
"beginCaptures": {
"1": {
"name": "keyword.other.namespace-definition.fsharp"
},
"2": {
"name": "entity.name.type.namespace.fsharp"
},
"3": {
"name": "punctuation.separator.namespace-definition.fsharp"
},
"4": {
"name": "entity.name.section.fsharp"
}
},
"patterns": [
{
"name": "entity.name.section.fsharp",
"match": "(\\.)([A-Z][a-zA-Z0-9'_]*)",
"captures": {
"1": {
"name": "punctuation.separator.namespace-reference.fsharp"
},
"2": {
"name": "entity.name.section.fsharp"
}
}
}
]
}
]
},
"strings": {
"patterns": [
{
"contentName": "string.quoted.literalprintf.fsharp",
"begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(@\"))",
"end": "(\")",
"beginCaptures": {
"2": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
},
"patterns": [
{
"name": "constant.character.string.escape.fsharp",
"match": "\"(\")"
},
{
"name": "constant.character.string.escape.format.fsharp",
"match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)"
}
]
},
{
"name": "string.quoted.literal.fsharp",
"begin": "(?=[^\\\\])(@\")",
"end": "(\")",
"beginCaptures": {
"1": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
},
"patterns": [
{
"name": "constant.character.string.escape.fsharp",
"match": "\"(\")"
}
]
},
{
"contentName": "string.quoted.tripleprintf.fsharp",
"begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"\"\"))",
"end": "(\"\"\")",
"beginCaptures": {
"2": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
},
"patterns": [
{
"name": "constant.character.string.escape.format.fsharp",
"match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)"
}
]
},
{
"name": "string.quoted.triple.fsharp",
"begin": "(?=[^\\\\])(\"\"\")",
"end": "(\"\"\")",
"beginCaptures": {
"1": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
}
},
{
"contentName": "string.quoted.doubleprintf.fsharp",
"begin": "(sprintf|printf[n]|failwithf)\\s+((?=[^\\\\])(\"))",
"end": "(\")",
"beginCaptures": {
"2": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
},
"patterns": [
{
"name": "punctuation.separator.string.ignore-eol.fsharp",
"match": "\\\\$[ \\t]*"
},
{
"name": "constant.character.string.escape.format.fsharp",
"match": "%[0\\-\\+# ]{0,3}(\\*|[0-9]{0,2})(\\.[0-9]{1,2})?([bcsdiuxXoeEfFgGMOAt]|\\+A)"
},
{
"name": "constant.character.string.escape.fsharp",
"match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})"
},
{
"name": "invalid.illeagal.character.string.fsharp",
"match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})."
}
]
},
{
"name": "string.quoted.double.fsharp",
"begin": "(?=[^\\\\])(\")",
"end": "(\")",
"beginCaptures": {
"1": {
"name": "punctuation.definition.string.begin.fsharp"
}
},
"endCaptures": {
"1": {
"name": "punctuation.definition.string.end.fsharp"
}
},
"patterns": [
{
"name": "punctuation.separator.string.ignore-eol.fsharp",
"match": "\\\\$[ \\t]*"
},
{
"name": "constant.character.string.escape.fsharp",
"match": "\\\\([\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})"
},
{
"name": "invalid.illeagal.character.string.fsharp",
"match": "\\\\(?![\\\\''ntbr]|u[a-fA-F0-9]{4}|u[a-fA-F0-9]{8})."
}
]
}
]
},
"variables": {
"patterns": [
{
"name": "constant.language.unit.fsharp",
"match": "\\(\\)"
},
{
"name": "variable.parameter.fsharp",
"match": "[a-zA-Z']\\w*"
}
]
},
"double_tick": {
"patterns": [
{
"name": "variable.other.binding.fsharp",
"match": "(``)(.*)(``)",
"captures": {
"1": {
"name": "string.quoted.single.fsharp"
},
"1": {
"name": "variable.other.binding.fsharp"
},
"3": {
"name": "string.quoted.single.fsharp"
}
}
}
]
},
"records": {
"patterns": [
{
"name": "record.fsharp",
"match": "(type)[\\s]+(private|internal|public)?[\\s]*([a-zA-Z0-9'<>^:,. ]+)((with)|(=)|(\\(\\)))",
"captures": {
"1": {
"name": "keyword.other.fsharp"
},
"2": {
"name": "keyword.other.fsharp"
},
"3": {
"name": "entity.name.type.fsharp"
},
"5": {
"name": "keyword.other.fsharp"
},
"6": {
"name": "keyword.other.fsharp"
},
"7": {
"name": "constant.language.unit.fsharp"
}
}
}
]
},
"cexprs": {
"patterns": [
{
"name": "cexpr.fsharp",
"match": "\\b([a-zA-Z]*\\s+\\{)",
"captures": {
"1": {
"name": "keyword.other.fsharp"
}
}
}
]
},
"chars": {
"patterns": [
{
"name": "char.fsharp",
"match": "('\\\\?.')",
"captures": {
"1": {
"name": "string.quoted.single.fsharp"
}
}
}
]
},
"text": {
"patterns": [
{
"name": "text.fsharp",
"match": "\\\\"
}
]
}
}
}

Просмотреть файл

@ -0,0 +1,221 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>COMMIT_EDITMSG</string>
<string>MERGE_MSG</string>
</array>
<key>foldingStartMarker</key>
<string>^\+\+\+</string>
<key>foldingStopMarker</key>
<string>^---</string>
<key>name</key>
<string>Git Commit Message</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\A(?!# Please enter the commit message)</string>
<key>end</key>
<string>^(?=# Please enter the commit message)</string>
<key>name</key>
<string>meta.scope.message.git-commit</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\A(?=#)</string>
<key>end</key>
<string>^(?!#)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(?!# Please enter the commit message)</string>
<key>end</key>
<string>^(?=# Please enter the commit message)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>\G</string>
<key>end</key>
<string>^(?!\G)</string>
<key>name</key>
<string>meta.scope.subject.git-commit</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.$2.git-commit</string>
</dict>
</dict>
<key>match</key>
<string>\G((fixup|squash)!)\s*</string>
</dict>
<dict>
<key>match</key>
<string>.{66,}$</string>
<key>name</key>
<string>invalid.illegal.line-too-long.git-commit</string>
</dict>
<dict>
<key>match</key>
<string>.{51,}$</string>
<key>name</key>
<string>invalid.deprecated.line-too-long.git-commit</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(?!# Please enter the commit message)</string>
<key>end</key>
<string>^(?=# Please enter the commit message)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
</array>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>^(?=# Please enter the commit message)</string>
<key>end</key>
<string>\z</string>
<key>name</key>
<string>meta.scope.metadata.git-commit</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#metadata</string>
</dict>
</array>
</dict>
</array>
<key>repository</key>
<dict>
<key>comment</key>
<dict>
<key>begin</key>
<string>^(#)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.git-commit</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.git-commit</string>
</dict>
<key>metadata</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(?=^# Changes to be committed:)</string>
<key>end</key>
<string>(?!\G)((?=^# \w)|(?!^#))</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.git-commit</string>
</dict>
</dict>
<key>contentName</key>
<string>comment.line.number-sign.git-commit</string>
<key>end</key>
<string>(?!\G)^</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\G#</string>
<key>name</key>
<string>punctuation.definition.comment.git-commit</string>
</dict>
<dict>
<key>match</key>
<string>((modified|renamed):.*)$\n?</string>
<key>name</key>
<string>markup.changed.git-commit</string>
</dict>
<dict>
<key>match</key>
<string>(new file:.*)$\n?</string>
<key>name</key>
<string>markup.inserted.git-commit</string>
</dict>
<dict>
<key>match</key>
<string>(deleted:.*)$\n?</string>
<key>name</key>
<string>markup.deleted.git-commit</string>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#comment</string>
</dict>
<dict>
<key>begin</key>
<string>(?=diff\ \-\-git)</string>
<key>comment</key>
<string>diff presented at the end of the commit message when using commit -v.</string>
<key>contentName</key>
<string>source.diff</string>
<key>end</key>
<string>\z</string>
<key>name</key>
<string>meta.embedded.diff.git-commit</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>source.diff</string>
</dict>
</array>
</dict>
</array>
</dict>
</dict>
<key>scopeName</key>
<string>text.git-commit</string>
<key>uuid</key>
<string>BFE83C06-8508-44BE-A975-95A57BF619A7</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,57 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>git-rebase-todo</string>
</array>
<key>name</key>
<string>Git Rebase Message</string>
<key>patterns</key>
<array>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.git-rebase</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(#).*$\n?</string>
<key>name</key>
<string>comment.line.number-sign.git-rebase</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>support.function.git-rebase</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>constant.sha.git-rebase</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>meta.commit-message.git-rebase</string>
</dict>
</dict>
<key>match</key>
<string>^\s*(pick|p|reword|r|edit|e|squash|s|fixup|f|d|drop|x|exec)\s+([0-9a-f]+)\s+(.*)$</string>
<key>name</key>
<string>meta.commit-command.git-rebase</string>
</dict>
</array>
<key>scopeName</key>
<string>text.git-rebase</string>
<key>uuid</key>
<string>7F1CC209-5F6D-486A-8180-09FA282381A1</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,611 @@
{
"scopeName": "source.go",
"name": "Go",
"comment": "Go language",
"fileTypes": [
"go"
],
"foldingStartMarker": "({|\\()\\s*$",
"foldingStopMarker": "(}|\\))\\s*$",
"patterns": [
{
"comment": "Block comments",
"begin": "/\\*",
"end": "\\*/",
"captures": {
"0": {
"name": "punctuation.definition.comment.go"
}
},
"name": "comment.block.go"
},
{
"comment": "Line comments",
"begin": "//",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.go"
}
},
"end": "$",
"name": "comment.line.double-slash.go"
},
{
"comment": "Interpreted string literals",
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.go"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.go"
}
},
"name": "string.quoted.double.go",
"patterns": [
{
"include": "#string_escaped_char"
},
{
"include": "#string_placeholder"
}
]
},
{
"comment": "Raw string literals",
"begin": "`",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.go"
}
},
"end": "`",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.go"
}
},
"name": "string.quoted.raw.go",
"patterns": [
{
"include": "#string_placeholder"
}
]
},
{
"comment": "Syntax error receiving channels",
"match": "<\\-([\\t ]+)chan\\b",
"captures": {
"1": {
"name": "invalid.illegal.receive-channel.go"
}
}
},
{
"comment": "Syntax error sending channels",
"match": "\\bchan([\\t ]+)<-",
"captures": {
"1": {
"name": "invalid.illegal.send-channel.go"
}
}
},
{
"comment": "Syntax error using slices",
"match": "\\[\\](\\s+)",
"captures": {
"1": {
"name": "invalid.illegal.slice.go"
}
}
},
{
"comment": "Syntax error numeric literals",
"match": "\\b0[0-7]*[89]\\d*\\b",
"name": "invalid.illegal.numeric.go"
},
{
"comment": "Built-in functions",
"match": "\\b(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)\\b(?=\\()",
"name": "support.function.builtin.go"
},
{
"comment": "Function declarations",
"match": "^(\\bfunc\\b)(?:\\s+(\\([^\\)]+\\)\\s+)?([a-zA-Z_]\\w*)(?=\\())?",
"captures": {
"1": {
"name": "keyword.function.go"
},
"2": {
"patterns": [
{
"include": "#brackets"
},
{
"include": "#operators"
}
]
},
"3": {
"name": "entity.name.function"
}
}
},
{
"comment": "Functions",
"match": "(\\bfunc\\b)|([a-zA-Z_]\\w*)(?=\\()",
"captures": {
"1": {
"name": "keyword.function.go"
},
"2": {
"name": "support.function.go"
}
}
},
{
"comment": "Floating-point literals",
"match": "(\\.\\d+([Ee][-+]\\d+)?i?)\\b|\\b\\d+\\.\\d*(([Ee][-+]\\d+)?i?\\b)?",
"name": "constant.numeric.floating-point.go"
},
{
"comment": "Integers",
"match": "\\b((0x[0-9a-fA-F]+)|(0[0-7]+i?)|(\\d+([Ee]\\d+)?i?)|(\\d+[Ee][-+]\\d+i?))\\b",
"name": "constant.numeric.integer.go"
},
{
"comment": "Language constants",
"match": "\\b(true|false|nil|iota)\\b",
"name": "constant.language.go"
},
{
"comment": "Package declarations",
"match": "(?<=package)\\s+([a-zA-Z_]\\w*)",
"captures": {
"1": {
"name": "entity.name.package.go"
}
}
},
{
"comment": "Single line import declarations",
"match": "(?<=import)(\\s+((?!\\s+\")[^\\s]*)?\\s*)((\")([^\"]*)(\"))",
"captures": {
"2": {
"name": "entity.alias.import.go"
},
"3": {
"name": "string.quoted.double.go"
},
"4": {
"name": "punctuation.definition.string.begin.go"
},
"5": {
"name": "entity.name.import.go"
},
"6": {
"name": "punctuation.definition.string.end.go"
}
}
},
{
"comment": "Multiline import declarations",
"begin": "(?<=import)\\s+(\\()",
"beginCaptures": {
"1": {
"name": "punctuation.other.bracket.round.go"
}
},
"patterns": [
{
"match": "((?!\\s+\")[^\\s]*)?\\s+((\")([^\"]*)(\"))",
"captures": {
"1": {
"name": "entity.alias.import.go"
},
"2": {
"name": "string.quoted.double.go"
},
"3": {
"name": "punctuation.definition.string.begin.go"
},
"4": {
"name": "entity.name.import.go"
},
"5": {
"name": "punctuation.definition.string.end.go"
}
}
}
],
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.other.bracket.round.go"
}
}
},
{
"comment": "Type declarations",
"match": "(?<=type)\\s+([a-zA-Z_]\\w*)",
"captures": {
"1": {
"name": "entity.name.type.go"
}
}
},
{
"comment": "Shorthand variable declaration and assignments",
"match": "[a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*(?=\\s*:=)",
"captures": {
"0": {
"patterns": [
{
"match": "[a-zA-Z_]\\w*",
"name": "variable.other.assignment.go"
},
{
"include": "#delimiters"
}
]
}
}
},
{
"comment": "Assignments to existing variables",
"match": "(?<!var )\\s*([a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*)(?=\\s*=[^=])",
"captures": {
"1": {
"patterns": [
{
"match": "[a-zA-Z_]\\w*",
"name": "variable.other.assignment.go"
},
{
"include": "#delimiters"
}
]
}
}
},
{
"comment": "Single line variable declarations/assignments",
"match": "(?<=var)\\s+(.*)$",
"captures": {
"1": {
"patterns": [
{
"include": "#variables"
}
]
}
}
},
{
"comment": "Multiline variable declarations/assignments",
"begin": "(\\bvar\\b)\\s+(\\()",
"beginCaptures": {
"1": {
"name": "keyword.var.go"
},
"2": {
"name": "punctuation.other.bracket.round.go"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.other.bracket.round.go"
}
},
"patterns": [
{
"include": "#variables"
},
{
"include": "$self"
}
]
},
{
"comment": "Terminators",
"match": ";",
"name": "punctuation.terminator.go"
},
{
"include": "#brackets"
},
{
"include": "#delimiters"
},
{
"include": "#keywords"
},
{
"include": "#operators"
},
{
"include": "#runes"
},
{
"include": "#storage_types"
}
],
"repository": {
"brackets": {
"patterns": [
{
"match": "\\{|\\}",
"name": "punctuation.other.bracket.curly.go"
},
{
"match": "\\(|\\)",
"name": "punctuation.other.bracket.round.go"
},
{
"match": "\\[|\\]",
"name": "punctuation.other.bracket.square.go"
}
]
},
"delimiters": {
"patterns": [
{
"match": ",",
"name": "punctuation.other.comma.go"
},
{
"match": "\\.(?!\\.\\.)",
"name": "punctuation.other.period.go"
},
{
"match": ":(?!=)",
"name": "punctuation.other.colon.go"
}
]
},
"keywords": {
"patterns": [
{
"comment": "Flow control keywords",
"match": "\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\b",
"name": "keyword.control.go"
},
{
"match": "\\bchan\\b",
"name": "keyword.channel.go"
},
{
"match": "\\bconst\\b",
"name": "keyword.const.go"
},
{
"match": "\\bfunc\\b",
"name": "keyword.function.go"
},
{
"match": "\\binterface\\b",
"name": "keyword.interface.go"
},
{
"match": "\\bimport\\b",
"name": "keyword.import.go"
},
{
"match": "\\bmap\\b",
"name": "keyword.map.go"
},
{
"match": "\\bpackage\\b",
"name": "keyword.package.go"
},
{
"match": "\\bstruct\\b",
"name": "keyword.struct.go"
},
{
"match": "\\btype\\b",
"name": "keyword.type.go"
},
{
"match": "\\bvar\\b",
"name": "keyword.var.go"
}
]
},
"operators": {
"comment": "Note that the order here is very important!",
"patterns": [
{
"match": "(\\*|&)(?=\\w)",
"name": "keyword.operator.address.go"
},
{
"match": "<\\-",
"name": "keyword.operator.channel.go"
},
{
"match": "\\-\\-",
"name": "keyword.operator.decrement.go"
},
{
"match": "\\+\\+",
"name": "keyword.operator.increment.go"
},
{
"match": "(==|!=|<=|>=|<[^<]|>[^>])",
"name": "keyword.operator.comparison.go"
},
{
"match": "(&&|\\|\\||!)",
"name": "keyword.operator.logical.go"
},
{
"match": "(=|\\+=|\\-=|\\|=|\\^=|\\*=|/=|:=|%=|<<=|>>=|&\\^=|&=)",
"name": "keyword.operator.assignment.go"
},
{
"match": "(\\+|\\-|\\*|/|%)",
"name": "keyword.operator.arithmetic.go"
},
{
"match": "(&(?!\\^)|\\||\\^|&\\^|<<|>>)",
"name": "keyword.operator.arithmetic.bitwise.go"
},
{
"match": "\\.\\.\\.",
"name": "keyword.operator.ellipsis.go"
}
]
},
"runes": {
"patterns": [
{
"match": "\\'(\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})|\\p{Any})\\'",
"name": "constant.other.rune.go"
},
{
"match": "\\'.*\\'",
"name": "invalid.illegal.unknown-rune.go"
}
]
},
"storage_types": {
"patterns": [
{
"match": "\\bbool\\b",
"name": "storage.type.boolean.go"
},
{
"match": "\\bbyte\\b",
"name": "storage.type.byte.go"
},
{
"match": "\\berror\\b",
"name": "storage.type.error.go"
},
{
"match": "\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\b",
"name": "storage.type.numeric.go"
},
{
"match": "\\brune\\b",
"name": "storage.type.rune.go"
},
{
"match": "\\bstring\\b",
"name": "storage.type.string.go"
},
{
"match": "\\buintptr\\b",
"name": "storage.type.uintptr.go"
}
]
},
"string_escaped_char": {
"patterns": [
{
"match": "\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",
"name": "constant.character.escape.go"
},
{
"match": "\\\\[^0-7xuUabfnrtv\\'\"]",
"name": "invalid.illegal.unknown-escape.go"
}
]
},
"string_placeholder": {
"patterns": [
{
"match": "%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGsp]",
"name": "constant.other.placeholder.go"
}
]
},
"variables": {
"comment": "First add tests and make sure existing tests still pass when changing anything here!",
"patterns": [
{
"match": "([a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*)\\s*(=.*)",
"captures": {
"1": {
"patterns": [
{
"match": "[a-zA-Z_]\\w*",
"name": "variable.other.assignment.go"
},
{
"include": "#delimiters"
}
]
},
"2": {
"patterns": [
{
"include": "$self"
}
]
}
}
},
{
"match": "([a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*)(\\s+[\\*]?[a-zA-Z_]\\w*\\s*)(=.*)",
"captures": {
"1": {
"patterns": [
{
"match": "[a-zA-Z_]\\w*",
"name": "variable.other.assignment.go"
},
{
"include": "#delimiters"
}
]
},
"2": {
"patterns": [
{
"include": "$self"
}
]
},
"3": {
"patterns": [
{
"include": "$self"
}
]
}
}
},
{
"match": "([a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*)(\\s+[\\[\\]\\*]{0,3}[a-zA-Z_]\\w*\\s*[^=].*)",
"captures": {
"1": {
"patterns": [
{
"match": "[a-zA-Z_]\\w*",
"name": "variable.other.declaration.go"
},
{
"include": "#delimiters"
}
]
},
"2": {
"patterns": [
{
"include": "$self"
}
]
}
}
}
]
}
},
"version": "https://github.com/atom/language-go/commit/d941ce3155b500e65b4d7fbc53ea51b9c92ec1cb"
}

Просмотреть файл

@ -0,0 +1,553 @@
{
"fileTypes": [
"html",
"htm",
"shtml",
"xhtml",
"inc",
"tmpl",
"tpl"
],
"firstLineMatch": "<(?i:(!DOCTYPE\\s*)?html)",
"injections": {
"R:text.html - comment.block": {
"comment": "Use R: to ensure this matches after any other injections.",
"patterns": [
{
"match": "<",
"name": "invalid.illegal.bad-angle-bracket.html"
}
]
}
},
"keyEquivalent": "^~H",
"name": "HTML",
"patterns": [
{
"begin": "(<)([a-zA-Z0-9:\\-]++)(?=[^>]*></\\2>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.html"
}
},
"end": "(>(<)/)(\\2)(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "meta.scope.between-tag-pair.html"
},
"3": {
"name": "entity.name.tag.html"
},
"4": {
"name": "punctuation.definition.tag.html"
}
},
"name": "meta.tag.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(<\\?)(xml)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.xml.html"
}
},
"end": "(\\?>)",
"name": "meta.tag.preprocessor.xml.html",
"patterns": [
{
"include": "#tag-generic-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
}
]
},
{
"begin": "<!--",
"captures": {
"0": {
"name": "punctuation.definition.comment.html"
}
},
"end": "--\\s*>",
"name": "comment.block.html",
"patterns": [
{
"match": "--",
"name": "invalid.illegal.bad-comments-or-CDATA.html"
},
{
"include": "#embedded-code"
}
]
},
{
"begin": "<!",
"captures": {
"0": {
"name": "punctuation.definition.tag.html"
}
},
"end": ">",
"name": "meta.tag.sgml.html",
"patterns": [
{
"begin": "(?i:DOCTYPE)",
"captures": {
"1": {
"name": "entity.name.tag.doctype.html"
}
},
"end": "(?=>)",
"name": "meta.tag.sgml.doctype.html",
"patterns": [
{
"match": "\"[^\">]*\"",
"name": "string.quoted.double.doctype.identifiers-and-DTDs.html"
}
]
},
{
"begin": "\\[CDATA\\[",
"end": "]](?=>)",
"name": "constant.other.inline-data.html"
},
{
"match": "(\\s*)(?!--|>)\\S(\\s*)",
"name": "invalid.illegal.bad-comments-or-CDATA.html"
}
]
},
{
"include": "#embedded-code"
},
{
"begin": "(?:^\\s+)?(<)((?i:style))\\b(?![^>]*/>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.style.html"
},
"3": {
"name": "punctuation.definition.tag.html"
}
},
"end": "(</)((?i:style))(>)(?:\\s*\\n)?",
"contentName": "source.css.embedded.html",
"patterns": [
{
"include": "#tag-stuff"
},
{
"begin": "(>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
}
},
"end": "(?=</(?i:style))",
"patterns": [
{
"include": "#embedded-code"
},
{
"include": "source.css"
}
]
}
]
},
{
"begin": "(?:^\\s+)?(<)((?i:script))\\b(?![^>]*/>)(?![^>]*(?i:type.?=.?text/((?!javascript).*)))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
}
},
"end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
"endCaptures": {
"2": {
"name": "punctuation.definition.tag.html"
}
},
"contentName": "source.js.embedded.html",
"patterns": [
{
"include": "#tag-stuff"
},
{
"begin": "(?<!</(?:script|SCRIPT))(>)",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.script.html"
}
},
"end": "(</)((?i:script))",
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.comment.js"
}
},
"match": "(//).*?((?=</script)|$\\n?)",
"name": "comment.line.double-slash.js"
},
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.js"
}
},
"end": "\\*/|(?=</script)",
"name": "comment.block.js"
},
{
"include": "source.js"
}
]
}
]
},
{
"begin": "(</?)((?i:body|head|html)(?=\\s|\\\\|>))",
"captures": {
"1": {
"name": "punctuation.definition.tag.html"
},
"2": {
"name": "entity.name.tag.structure.any.html"
}
},
"end": "(>)",
"name": "meta.tag.structure.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)((?i:address|blockquote|dd|div|section|article|aside|header|footer|nav|menu|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|pre)(?=\\s|\\\\|>))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.block.any.html"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.end.html"
}
},
"name": "meta.tag.block.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?=\\s|\\\\|>))",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.inline.any.html"
}
},
"end": "((?: ?/)?>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.end.html"
}
},
"name": "meta.tag.inline.any.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"begin": "(</?)([a-zA-Z0-9:\\-]+)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.other.html"
}
},
"end": "(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.end.html"
}
},
"name": "meta.tag.other.html",
"patterns": [
{
"include": "#tag-stuff"
}
]
},
{
"include": "#entities"
},
{
"match": "<>",
"name": "invalid.illegal.incomplete.html"
}
],
"repository": {
"embedded-code": {
"patterns": [
{
"include": "#smarty"
},
{
"include": "#python"
}
]
},
"entities": {
"patterns": [
{
"captures": {
"1": {
"name": "punctuation.definition.entity.html"
},
"3": {
"name": "punctuation.definition.entity.html"
}
},
"match": "(&)([a-zA-Z0-9]+|#[0-9]+|#[xX][0-9a-fA-F]+)(;)",
"name": "constant.character.entity.html"
},
{
"match": "&",
"name": "invalid.illegal.bad-ampersand.html"
}
]
},
"python": {
"begin": "(?:^\\s*)<\\?python(?!.*\\?>)",
"end": "\\?>(?:\\s*$\\n)?",
"contentName": "source.python.embedded.html",
"patterns": [
{
"include": "source.python"
}
]
},
"smarty": {
"patterns": [
{
"begin": "(\\{(literal)\\})",
"captures": {
"1": {
"name": "source.smarty.embedded.html"
},
"2": {
"name": "support.function.built-in.smarty"
}
},
"end": "(\\{/(literal)\\})"
},
{
"begin": "{{|{",
"disabled": 1,
"end": "}}|}",
"contentName": "source.smarty.embedded.html",
"patterns": [
{
"include": "source.smarty"
}
]
}
]
},
"string-double-quoted": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"name": "string.quoted.double.html",
"patterns": [
{
"include": "#embedded-code"
},
{
"include": "#entities"
}
]
},
"string-single-quoted": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"name": "string.quoted.single.html",
"patterns": [
{
"include": "#embedded-code"
},
{
"include": "#entities"
}
]
},
"tag-generic-attribute": {
"match": "(?<=[^=])\\b([a-zA-Z0-9:-]+)",
"name": "entity.other.attribute-name.html"
},
"tag-id-attribute": {
"begin": "\\b(id)\\b\\s*(=)",
"captures": {
"1": {
"name": "entity.other.attribute-name.id.html"
},
"2": {
"name": "punctuation.separator.key-value.html"
}
},
"end": "(?!\\G)(?<='|\"|[^\\s<>/])",
"name": "meta.attribute-with-value.id.html",
"patterns": [
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"contentName": "meta.toc-list.id.html",
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"name": "string.quoted.double.html",
"patterns": [
{
"include": "#embedded-code"
},
{
"include": "#entities"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.html"
}
},
"contentName": "meta.toc-list.id.html",
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.html"
}
},
"name": "string.quoted.single.html",
"patterns": [
{
"include": "#embedded-code"
},
{
"include": "#entities"
}
]
},
{
"captures": {
"0": {
"name": "meta.toc-list.id.html"
}
},
"match": "(?<==)(?:[^\\s<>/'\"]|/(?!>))+",
"name": "string.unquoted.html"
}
]
},
"tag-stuff": {
"patterns": [
{
"include": "#tag-id-attribute"
},
{
"include": "#tag-generic-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
},
{
"include": "#embedded-code"
},
{
"include": "#unquoted-attribute"
}
]
},
"unquoted-attribute": {
"match": "(?<==)(?:[^\\s<>/'\"]|/(?!>))+",
"name": "string.unquoted.html"
}
},
"scopeName": "text.html.basic",
"uuid": "17994EC8-6B1D-11D9-AC3A-000D93589AF6",
"version": "https://github.com/textmate/html.tmbundle/commit/9f812c89f4990a98391701caa77824c94860538f"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,192 @@
{
"comment": "Lua Syntax: version 0.8",
"fileTypes": [
"lua"
],
"firstLineMatch": "\\A#!.*?\\blua\\b",
"keyEquivalent": "^~L",
"name": "Lua",
"patterns": [
{
"captures": {
"1": {
"name": "keyword.control.lua"
},
"2": {
"name": "entity.name.function.scope.lua"
},
"3": {
"name": "entity.name.function.lua"
},
"4": {
"name": "punctuation.definition.parameters.begin.lua"
},
"5": {
"name": "variable.parameter.function.lua"
},
"6": {
"name": "punctuation.definition.parameters.end.lua"
}
},
"match": "\\b(function)(?:\\s+([a-zA-Z_.:]+[.:])?([a-zA-Z_]\\w*)\\s*)?(\\()([^)]*)(\\))",
"name": "meta.function.lua"
},
{
"match": "(?<![\\d.])\\s0x[a-fA-F\\d]+|\\b\\d+(\\.\\d+)?([eE]-?\\d+)?|\\.\\d+([eE]-?\\d+)?",
"name": "constant.numeric.lua"
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.lua"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.lua"
}
},
"name": "string.quoted.single.lua",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.lua"
}
]
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.lua"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.lua"
}
},
"name": "string.quoted.double.lua",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.lua"
}
]
},
{
"begin": "(?<=\\.cdef)\\s*(\\[(=*)\\[)",
"beginCaptures": {
"0": {
"name": "string.quoted.other.multiline.lua"
},
"1": {
"name": "punctuation.definition.string.begin.lua"
}
},
"contentName": "meta.embedded.lua",
"end": "(\\]\\2\\])",
"endCaptures": {
"0": {
"name": "string.quoted.other.multiline.lua"
},
"1": {
"name": "punctuation.definition.string.end.lua"
}
},
"patterns": [
{
"include": "source.c"
}
]
},
{
"begin": "(?<!--)\\[(=*)\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.lua"
}
},
"end": "\\]\\1\\]",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.lua"
}
},
"name": "string.quoted.other.multiline.lua"
},
{
"begin": "--\\[(=*)\\[",
"captures": {
"0": {
"name": "punctuation.definition.comment.lua"
}
},
"end": "\\]\\1\\]",
"name": "comment.block.lua"
},
{
"begin": "(^[ \\t]+)?(?=--(?!\\[\\[))",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.lua"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "--",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.lua"
}
},
"end": "\\n",
"name": "comment.line.double-dash.lua"
}
]
},
{
"match": "\\b(break|do|else|for|if|elseif|return|then|repeat|while|until|end|function|local|in)\\b",
"name": "keyword.control.lua"
},
{
"match": "(?<![^.]\\.|:)\\b(false|nil|true|_G|_VERSION|math\\.(pi|huge))\\b|(?<![.])\\.{3}(?!\\.)",
"name": "constant.language.lua"
},
{
"match": "(?<![^.]\\.|:)\\b(self)\\b",
"name": "variable.language.self.lua"
},
{
"match": "(?<![^.]\\.|:)\\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\b(?=\\s*(?:[({\"']|\\[\\[))",
"name": "support.function.lua"
},
{
"match": "(?<![^.]\\.|:)\\b(coroutine\\.(create|resume|running|status|wrap|yield)|string\\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\\.(concat|insert|maxn|remove|sort)|math\\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?)|io\\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(cpath|loaded|loadlib|path|preload|seeall)|debug\\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|traceback))\\b(?=\\s*(?:[({\"']|\\[\\[))",
"name": "support.function.library.lua"
},
{
"match": "\\b(and|or|not)\\b",
"name": "keyword.operator.lua"
},
{
"match": "\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[({\"']|\\[\\[))",
"name": "support.function.any-method.lua"
},
{
"match": "(?<=[^.]\\.|:)\\b([A-Za-z_]\\w*)",
"name": "variable.other.lua"
},
{
"match": "\\+|-|%|#|\\*|\\/|\\^|==?|~=|<=?|>=?|(?<!\\.)\\.{2}(?!\\.)",
"name": "keyword.operator.lua"
}
],
"scopeName": "source.lua",
"uuid": "93E017CC-6F27-11D9-90EB-000D93589AF7",
"version": "https://github.com/textmate/lua.tmbundle/commit/609fe340f40b31f4189dabbb38f885b58cf0dd26"
}

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,181 @@
<?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">
<dict>
<key>fileTypes</key>
<array>
<string>ini</string>
<string>conf</string>
</array>
<key>keyEquivalent</key>
<string>^~I</string>
<key>name</key>
<string>Ini</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=#)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.ini</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>#</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.ini</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.number-sign.ini</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>(^[ \t]+)?(?=;)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.whitespace.comment.leading.ini</string>
</dict>
</dict>
<key>end</key>
<string>(?!\G)</string>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>;</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.comment.ini</string>
</dict>
</dict>
<key>end</key>
<string>\n</string>
<key>name</key>
<string>comment.line.semicolon.ini</string>
</dict>
</array>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.definition.ini</string>
</dict>
<key>2</key>
<dict>
<key>name</key>
<string>punctuation.separator.key-value.ini</string>
</dict>
</dict>
<key>match</key>
<string>\b([a-zA-Z0-9_.-]+)\b\s*(=)</string>
</dict>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.ini</string>
</dict>
<key>3</key>
<dict>
<key>name</key>
<string>punctuation.definition.entity.ini</string>
</dict>
</dict>
<key>match</key>
<string>^(\[)(.*?)(\])</string>
<key>name</key>
<string>entity.name.section.group-title.ini</string>
</dict>
<dict>
<key>begin</key>
<string>'</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.ini</string>
</dict>
</dict>
<key>end</key>
<string>'</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.ini</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.single.ini</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>\\.</string>
<key>name</key>
<string>constant.character.escape.ini</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>"</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.begin.ini</string>
</dict>
</dict>
<key>end</key>
<string>"</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.definition.string.end.ini</string>
</dict>
</dict>
<key>name</key>
<string>string.quoted.double.ini</string>
</dict>
</array>
<key>scopeName</key>
<string>source.properties</string>
<key>uuid</key>
<string>77DC23B6-8A90-11D9-BAA4-000A9584EC8C</string>
</dict>
</plist>

Просмотреть файл

@ -0,0 +1,595 @@
{
"name": "Rust",
"scopeName": "source.rust",
"fileTypes": [
"rs"
],
"repository": {
"block_doc_comment": {
"comment": "Block documentation comment",
"name": "comment.block.documentation.rust",
"begin": "/\\*[\\*!](?![\\*/])",
"end": "\\*/",
"patterns": [
{
"include": "#block_doc_comment"
},
{
"include": "#block_comment"
}
]
},
"block_comment": {
"comment": "Block comment",
"name": "comment.block.rust",
"begin": "/\\*",
"end": "\\*/",
"patterns": [
{
"include": "#block_doc_comment"
},
{
"include": "#block_comment"
}
]
},
"line_doc_comment": {
"comment": "Single-line documentation comment",
"name": "comment.line.documentation.rust",
"begin": "//[!/](?=[^/])",
"end": "$"
},
"line_comment": {
"comment": "Single-line comment",
"name": "comment.line.double-slash.rust",
"begin": "//",
"end": "$"
},
"escaped_character": {
"name": "constant.character.escape.rust",
"match": "\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"
},
"string_literal": {
"comment": "Double-quote string literal",
"name": "string.quoted.double.rust",
"begin": "b?\"",
"end": "\"",
"patterns": [
{
"include": "#escaped_character"
}
]
},
"raw_string_literal": {
"comment": "Raw double-quote string literal",
"name": "string.quoted.double.raw.rust",
"begin": "b?r(#*)\"",
"end": "\"\\1"
},
"sigils": {
"comment": "Sigil",
"name": "keyword.operator.sigil.rust",
"match": "[&*](?=[a-zA-Z0-9_\\(\\[\\|\\\"]+)"
},
"self": {
"comment": "Self variable",
"name": "variable.language.rust",
"match": "\\bself\\b"
},
"mut": {
"comment": "Mutable storage modifier",
"name": "storage.modifier.mut.rust",
"match": "\\bmut\\b"
},
"box": {
"comment": "Box storage modifier",
"name": "storage.modifier.box.rust",
"match": "\\bbox\\b"
},
"const": {
"comment": "Const storage modifier",
"name": "storage.modifier.const.rust",
"match": "\\bconst\\b"
},
"pub": {
"comment": "Visibility modifier",
"name": "storage.modifier.visibility.rust",
"match": "\\bpub\\b"
},
"lifetime": {
"comment": "Named lifetime",
"name": "storage.modifier.lifetime.rust",
"match": "'([a-zA-Z_][a-zA-Z0-9_]*)\\b",
"captures": {
"1": {
"name": "entity.name.lifetime.rust"
}
}
},
"ref_lifetime": {
"comment": "Reference with named lifetime",
"match": "&('([a-zA-Z_][a-zA-Z0-9_]*))\\b",
"captures": {
"1": {
"name": "storage.modifier.lifetime.rust"
},
"2": {
"name": "entity.name.lifetime.rust"
}
}
},
"core_types": {
"comment": "Built-in/core type",
"name": "storage.type.core.rust",
"match": "\\b(bool|char|usize|isize|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|str|Self|Option|Result)\\b"
},
"core_vars": {
"comment": "Core type variant",
"name": "support.constant.core.rust",
"match": "\\b(Some|None|Ok|Err)\\b"
},
"core_marker": {
"comment": "Core trait (marker)",
"name": "support.type.marker.rust",
"match": "\\b(Copy|Send|Sized|Sync)\\b"
},
"core_traits": {
"comment": "Core trait",
"name": "support.type.core.rust",
"match": "\\b(Drop|Fn|FnMut|FnOnce|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator)\\b"
},
"where": {
"comment": "Where clause",
"name": "keyword.other.rust",
"match": "\\bwhere\\b"
},
"std_types": {
"comment": "Standard library type",
"name": "storage.class.std.rust",
"match": "\\b(Box|String|Vec|Path|PathBuf)\\b"
},
"std_traits": {
"comment": "Standard library trait",
"name": "support.type.std.rust",
"match": "\\b(ToOwned|ToString)\\b"
},
"type_params": {
"comment": "Type parameters",
"name": "meta.type_params.rust",
"begin": "<(?![=<])",
"end": ">",
"patterns": [
{
"include": "#block_comment"
},
{
"include": "#line_comment"
},
{
"include": "#sigils"
},
{
"include": "#mut"
},
{
"include": "#lifetime"
},
{
"include": "#core_types"
},
{
"include": "#core_marker"
},
{
"include": "#core_traits"
},
{
"include": "#std_types"
},
{
"include": "#std_traits"
},
{
"include": "#type_params"
}
]
}
},
"patterns": [
{
"include": "#block_doc_comment"
},
{
"include": "#block_comment"
},
{
"include": "#line_doc_comment"
},
{
"include": "#line_comment"
},
{
"comment": "Attribute",
"name": "meta.attribute.rust",
"begin": "#\\!?\\[",
"end": "\\]",
"patterns": [
{
"include": "#string_literal"
}
]
},
{
"comment": "Single-quote string literal (character)",
"name": "string.quoted.single.rust",
"match": "b?'([^'\\\\]|\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.))'"
},
{
"include": "#string_literal"
},
{
"include": "#raw_string_literal"
},
{
"comment": "Floating point literal (fraction)",
"name": "constant.numeric.float.rust",
"match": "\\b[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\b"
},
{
"comment": "Floating point literal (exponent)",
"name": "constant.numeric.float.rust",
"match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\b"
},
{
"comment": "Floating point literal (typed)",
"name": "constant.numeric.float.rust",
"match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\b"
},
{
"comment": "Integer literal (decimal)",
"name": "constant.numeric.integer.decimal.rust",
"match": "\\b[0-9][0-9_]*([ui](8|16|32|64|s|size))?\\b"
},
{
"comment": "Integer literal (hexadecimal)",
"name": "constant.numeric.integer.hexadecimal.rust",
"match": "\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|s|size))?\\b"
},
{
"comment": "Integer literal (octal)",
"name": "constant.numeric.integer.octal.rust",
"match": "\\b0o[0-7_]+([ui](8|16|32|64|s|size))?\\b"
},
{
"comment": "Integer literal (binary)",
"name": "constant.numeric.integer.binary.rust",
"match": "\\b0b[01_]+([ui](8|16|32|64|s|size))?\\b"
},
{
"comment": "Static storage modifier",
"name": "storage.modifier.static.rust",
"match": "\\bstatic\\b"
},
{
"comment": "Boolean constant",
"name": "constant.language.boolean.rust",
"match": "\\b(true|false)\\b"
},
{
"comment": "Control keyword",
"name": "keyword.control.rust",
"match": "\\b(break|continue|else|if|in|for|loop|match|return|while)\\b"
},
{
"comment": "Keyword",
"name": "keyword.other.rust",
"match": "\\b(crate|extern|mod|let|proc|ref|use|super|as|where|move)\\b"
},
{
"comment": "Unsafe code keyword",
"name": "keyword.other.unsafe.rust",
"match": "\\bunsafe\\b"
},
{
"include": "#sigils"
},
{
"include": "#self"
},
{
"include": "#mut"
},
{
"include": "#box"
},
{
"include": "#lifetime"
},
{
"include": "#ref_lifetime"
},
{
"include": "#const"
},
{
"include": "#pub"
},
{
"comment": "Miscellaneous operator",
"name": "keyword.operator.misc.rust",
"match": "(=>|::|\\bas\\b)"
},
{
"comment": "Comparison operator",
"name": "keyword.operator.comparison.rust",
"match": "(&&|\\|\\||==|!=)"
},
{
"comment": "Assignment operator",
"name": "keyword.operator.assignment.rust",
"match": "(\\+=|-=|/=|\\*=|%=|\\^=|&=|\\|=|<<=|>>=|=)"
},
{
"comment": "Arithmetic operator",
"name": "keyword.operator.arithmetic.rust",
"match": "(!|\\+|-|/|\\*|%|\\^|&|\\||<<|>>)"
},
{
"comment": "Comparison operator (second group because of regex precedence)",
"name": "keyword.operator.comparison.rust",
"match": "(<=|>=|<|>)"
},
{
"include": "#core_types"
},
{
"include": "#core_vars"
},
{
"include": "#core_marker"
},
{
"include": "#core_traits"
},
{
"include": "#std_types"
},
{
"include": "#std_traits"
},
{
"comment": "Built-in macro",
"name": "support.function.builtin.rust",
"match": "\\b(macro_rules|format_args|env|option_env|concat_idents|concat|log_syntax|line|column|file|stringify|include|include_str|include_bytes|module_path|asm|cfg|trace_macros)!"
},
{
"comment": "Core macro",
"name": "support.function.core.rust",
"match": "\\b(panic|assert|assert_eq|debug_assert|debug_assert_eq|try|write|writeln|unreachable|unimplemented)!"
},
{
"comment": "Standard library macro",
"name": "support.function.std.rust",
"match": "\\b(format|print|println|select|vec)!"
},
{
"comment": "Logging macro",
"name": "support.function.log.rust",
"match": "\\b(log|error|warn|info|debug|trace|log_enabled)!"
},
{
"comment": "Invokation of a macro",
"match": "\\b([a-zA-Z_][a-zA-Z0-9_]*\\!)\\s*[({\\[]",
"captures": {
"1": {
"name": "entity.name.function.macro.rust"
}
}
},
{
"comment": "Function call",
"match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",
"captures": {
"1": {
"name": "entity.name.function.rust"
}
}
},
{
"comment": "Function definition",
"begin": "\\b(fn)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
"end": "[\\{;]",
"beginCaptures": {
"1": {
"name": "keyword.other.fn.rust"
},
"2": {
"name": "entity.name.function.rust"
}
},
"patterns": [
{
"include": "#block_comment"
},
{
"include": "#line_comment"
},
{
"include": "#sigils"
},
{
"include": "#self"
},
{
"include": "#mut"
},
{
"include": "#ref_lifetime"
},
{
"include": "#core_types"
},
{
"include": "#core_marker"
},
{
"include": "#core_traits"
},
{
"include": "#std_types"
},
{
"include": "#std_traits"
},
{
"include": "#type_params"
},
{
"include": "#const"
},
{
"include": "#where"
}
]
},
{
"comment": "Type declaration",
"begin": "\\b(enum|struct|trait)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
"end": "[\\{\\(;]",
"beginCaptures": {
"1": {
"name": "storage.type.rust"
},
"2": {
"name": "entity.name.type.rust"
}
},
"patterns": [
{
"include": "#block_comment"
},
{
"include": "#line_comment"
},
{
"include": "#core_traits"
},
{
"include": "#std_traits"
},
{
"include": "#type_params"
},
{
"include": "#core_types"
},
{
"include": "#pub"
},
{
"include": "#where"
}
]
},
{
"comment": "Type alias",
"begin": "\\b(type)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
"end": ";",
"beginCaptures": {
"1": {
"name": "storage.type.rust"
},
"2": {
"name": "entity.name.type.rust"
}
},
"patterns": [
{
"include": "#block_comment"
},
{
"include": "#line_comment"
},
{
"include": "#sigils"
},
{
"include": "#mut"
},
{
"include": "#ref_lifetime"
},
{
"include": "#core_types"
},
{
"include": "#core_marker"
},
{
"include": "#core_traits"
},
{
"include": "#std_types"
},
{
"include": "#std_traits"
},
{
"include": "#type_params"
}
]
},
{
"comment": "Implementation",
"begin": "\\b(impl)\\b",
"end": "\\{",
"beginCaptures": {
"1": {
"name": "storage.type.rust"
}
},
"patterns": [
{
"include": "#block_comment"
},
{
"include": "#line_comment"
},
{
"include": "#sigils"
},
{
"include": "#mut"
},
{
"include": "#ref_lifetime"
},
{
"include": "#core_types"
},
{
"include": "#core_marker"
},
{
"include": "#core_traits"
},
{
"include": "#std_types"
},
{
"include": "#std_traits"
},
{
"include": "#type_params"
},
{
"name": "storage.type.rust",
"match": "\\bfor\\b"
},
{
"include": "#where"
}
]
}
]
}

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,133 @@
{
"scopeName": "source.shaderlab",
"name": "ShaderLab",
"fileTypes": [
"shader"
],
"patterns": [
{
"match": "\\b([0-9]+\\.?[0-9]*)\\b",
"name": "constant.numeric.shaderlab"
},
{
"match": "\\b(Shader|Properties|Category|SubShader|Tags|Pass)\\b",
"name": "support.class.shaderlab"
},
{
"match": "\\b(CGPROGRAM|ENDCG)\\b",
"name": "support.class.shaderlab"
},
{
"match": "\\b(Dependency|Fallback)\\b",
"name": "support.variable.shaderlab"
},
{
"match": "^\\s*\\[(HideInInspector)\\]",
"name": "keyword.shaderlab"
},
{
"match": "\\b(_\\w+)\\b",
"name": "support.variable.input.shaderlab"
},
{
"match": "\\b(uv(2)*_\\w+|viewDir|COLOR|screenPos|worldPos|worldRefl|worldNormal|worldRefl|worldNormal)\\b",
"name": "support.variable.input.shaderlab"
},
{
"match": "\\b(Albedo|Normal|Emission|Specular|Gloss|Alpha)\\b",
"name": "support.variable.output.shaderlab"
},
{
"match": "\\b(appdata_(base|tan|full|img)|SurfaceOutput)\\b",
"name": "support.variable.structure.shaderlab"
},
{
"match": "\\b(UNITY_MATRIX_(MVP|MV|V|P|VP|T_MV|IT_MV|TEXTURE0|TEXTURE1|TEXTURE2|TEXTURE3)|_Object2World|_World2Object|_WorldSpaceCameraPos|unity_Scale)\\b",
"name": "support.variable.transformation.shaderlab"
},
{
"match": "\\b(_ModelLightColor[0-9]|_SpecularLightColor[0-9]|_ObjectSpaceLightPos|_Light2World|_World2Light|_Object2Light)\\b",
"name": "support.variable.lighting.shaderlab"
},
{
"match": "\\b(_Time|_SinTime|_CosTime|unity_DeltaTime|_ProjectionParams|_ScreenParams)\\b",
"name": "support.variable.other.shaderlab"
},
{
"include": "#comments"
},
{
"include": "#strings"
},
{
"include": "#functions"
},
{
"include": "#cg"
}
],
"repository": {
"comments": {
"patterns": [
{
"begin": "//",
"end": "$",
"name": "comment.line.double-slash.shaderlab"
},
{
"begin": "/\\*",
"end": "\\*/",
"name": "comment.line.block.shaderlab"
}
]
},
"strings": {
"patterns": [
{
"begin": "\"",
"end": "\"",
"name": "string.quoted.double.shaderlab"
}
]
},
"functions": {
"patterns": [
{
"match": "(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))?\n\t\t\t(\\b \n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++\t\t\t\t # actual name\n\t\t\t)\n\t\t\t \\s*(\\()",
"captures": {
"1": {
"name": "punctuation.whitespace.function-call.leading.shaderlab"
},
"2": {
"name": "support.function.any-method.shaderlab"
},
"3": {
"name": "punctuation.definition.parameters.shaderlab"
}
},
"name": "meta.function-call.shaderlab"
}
]
},
"cg": {
"patterns": [
{
"match": "^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef)\\b",
"name": "keyword.control.shaderlab"
},
{
"match": "\\.([rgba]{1,4}|[xyzw]{1,4})\\b",
"name": "keyword.operator.shaderlab"
},
{
"match": "\\b(const|extern|in|inline|inout|static|out|uniform|varying|profile name)\\b",
"name": "storage.modifier.shaderlab"
},
{
"match": "\\b(void|struct|typedef|signed|unsigned|double([1-4])*(x[1-4])*|float([1-4])*(x[1-4])*|half([1-4])*(x[1-4])*|fixed([1-4])*(x[1-4])*|long([1-4])*(x[1-4])*|int([1-4])*(x[1-4])*|short([1-4])*(x[1-4])*|char([1-4])*(x[1-4])*|bool([1-4])*(x[1-4])*|sampler([1-3]D|RECT|CUBE)*)\\b",
"name": "storage.type.shaderlab"
}
]
}
}
}

Просмотреть файл

@ -0,0 +1,257 @@
{
"scopeName": "source.swift",
"fileTypes": [
"swift"
],
"name": "Swift",
"firstLineMatch": "^#!\\s*/.*\\bswift",
"patterns": [
{
"name": "keyword.declaration.swift",
"match": "\\b(class|deinit|enum|extension|import|init|inout|internal|let|operator|private|protocol|public|static|struct|subscript|typealias|var)\\b"
},
{
"name": "keyword.statement.swift",
"match": "\\b(break|case|continue|default|defer|do|else|fallthrough|for|guard|if|in|repeat|return|switch|where|while)\\b"
},
{
"name": "keyword.expressions-and-types.swift",
"match": "\\b(as|catch|dynamicType|false|is|nil|rethrows|super|self|Self|throw|throws|true|try|__COLUMN__|__FILE__|__FUNCTION__|__LINE__)\\b"
},
{
"name": "keyword.patterns.swift",
"match": "\\b(_)\\b"
},
{
"name": "keyword.primitive-datatypes.swift",
"match": "\\b(Int|UInt|String|Bool|Character|Optional|Float|Double)\\b"
},
{
"name": "keyword.reserved.swift",
"match": "\\b(associativity|convenience|dynamic|didSet|final|get|infix|lazy|left|mutating|none|nonmutating|optional|override|postfix|precedence|prefix|Protocol|required|right|set|Type|unowned|weak|willSet)\\b"
},
{
"include": "#comment"
},
{
"include": "#literal"
},
{
"include": "#function"
},
{
"include": "#operator"
},
{
"include": "#attribute"
}
],
"repository": {
"comment": {
"patterns": [
{
"name": "comment.block.swift",
"begin": "/\\*",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.begin.swift"
}
},
"end": "\\*/",
"endCaptures": {
"0": {
"name": "punctuation.definition.comment.end.swift"
}
},
"patterns": [
{
"include": "#comment"
}
]
},
{
"begin": "(^[ \\t]+)?(?=//)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.swift"
}
},
"end": "(?!\\G)",
"patterns": [
{
"name": "comment.line.double-slash.swift",
"begin": "//",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.swift"
}
},
"end": "\\n",
"patterns": [
{
"name": "punctuation.separator.continuation.swift",
"match": "(?>\\\\\\s*\\n)"
}
]
}
]
}
]
},
"escaped-char": {
"patterns": [
{
"name": "constant.character.escape.swift",
"match": "\\\\[0\\\\tnr\"']"
},
{
"name": "constant.character.escape.swift",
"match": "\\\\(x\\h{2}|u\\h{4}|U\\h{8})"
},
{
"name": "invalid.illegal.constant.character.escape.swift",
"match": "\\\\[^uxU]"
}
]
},
"identifier": {
"match": "(?x) (?<identifier> \\g<identifier-head> \\g<identifier-characters>? | ` \\g<identifier-head> \\g<identifier-characters>? ` ){0} (?<identifier-head> [ a-z A-Z ] | [ \\u00A8 \\u00AA \\u00AD \\u00AF \\u00B2-\\u00B5 \\u00B7-\\u00BA ] | [ \\u00BC-\\u00BE \\u00C0-\\u00D6 \\u00D8-\\u00F6 \\u00F8-\\u00FF ] | [ \\u0100-\\u02FF \\u0370-\\u167F \\u1681-\\u180D \\u180F-\\u1DBF ] | [ \\u1E00-\\u1FFF ] | [ \\u200B-\\u200D \\u202A-\\u202E \\u203F-\\u2040 \\u2054 \\u2060-\\u206F ] | [ \\u2070-\\u20CF \\u2100-\\u218F \\u2460-\\u24FF \\u2776-\\u2793 ] | [ \\u2C00-\\u2DFF \\u2E80-\\u2FFF ] | [ \\u3004-\\u3007 \\u3021-\\u302F \\u3031-\\u303F \\u3040-\\uD7FF ] | [ \\uF900-\\uFD3D \\uFD40-\\uFDCF \\uFDF0-\\uFE1F \\uFE30-\\uFE44 ] | [ \\uFE47-\\uFFFD ] | [ \\u10000-\\u1FFFD \\u20000-\\u2FFFD \\u30000-\\u3FFFD \\u40000-\\u4FFFD ] | [ \\u50000-\\u5FFFD \\u60000-\\u6FFFD \\u70000-\\u7FFFD \\u80000-\\u8FFFD ] | [ \\u90000-\\u9FFFD \\uA0000-\\uAFFFD \\uB0000-\\uBFFFD \\uC0000-\\uCFFFD ] | [ \\uD0000-\\uDFFFD \\uE0000-\\uEFFFD ] ){0} (?<identifier-character> \\d | [ \\u0300-\\u036F \\u1DC0-\\u1DFF \\u20D0-\\u20FF \\uFE20-\\uFE2F ] | \\g<identifier-head> ){0} (?<identifier-characters> \\g<identifier-character> \\g<identifier-characters>? ){0} (?<implicit-parameter-name> (?<!\\g<identifier-head>) \\$ \\d+ (?!\\g<identifier-head>) (?# FIXME) ){0} \\g<identifier> | \\g<implicit-parameter-name>",
"captures": {
"5": {
"name": "variable.other.positional.swift"
}
}
},
"literal": {
"patterns": [
{
"include": "#literal-number"
},
{
"include": "#literal-string"
},
{
"include": "#literal-boolean"
}
]
},
"literal-number": {
"name": "constant.numeric.swift",
"match": "(?x) (?### INTEGER ###) (?<integer-literal> \\g<binary-literal> | \\g<octal-literal> | \\g<hexadecimal-literal> | \\g<decimal-literal> ){0} (?### BINARY ###) (?<binary-literal> 0b \\g<binary-digit> \\g<binary-literal-characters>? ){0} (?<binary-digit> [0-1] ){0} (?<binary-literal-character> \\g<binary-digit> | _ ){0} (?<binary-literal-characters> \\g<binary-literal-character> \\g<binary-literal-characters>? ){0} (?### OCTAL ###) (?<octal-literal> 0o \\g<octal-digit> \\g<octal-literal-characters>? ){0} (?<octal-digit> [0-7] ){0} (?<octal-literal-character> \\g<octal-digit> | _ ){0} (?<octal-literal-characters> \\g<octal-literal-character> \\g<octal-literal-characters>? ){0} (?### DECIMAL ###) (?<decimal-literal> \\g<decimal-digit> \\g<decimal-literal-characters>? ){0} (?<decimal-digit> \\d ){0} (?<decimal-literal-character> \\g<decimal-digit> | _ ){0} (?<decimal-literal-characters> \\g<decimal-literal-character> \\g<decimal-literal-characters>? ){0} (?### HEXADECIMAL ###) (?<hexadecimal-literal> 0x \\g<hexadecimal-digit> \\g<hexadecimal-literal-characters>? ){0} (?<hexadecimal-digit> \\h ){0} (?<hexadecimal-literal-character> \\g<hexadecimal-digit> | _ ){0} (?<hexadecimal-literal-characters> \\g<hexadecimal-literal-character> \\g<hexadecimal-literal-characters>? ){0} (?### FLOATING POINT ###) (?<floating-point-literal> \\g<decimal-literal> \\g<decimal-fraction>? \\g<decimal-exponent>? | \\g<hexadecimal-literal> \\g<hexadecimal-fraction>? \\g<hexadecimal-exponent> ){0} (?<decimal-fraction> \\. \\g<decimal-literal> ){0} (?<decimal-exponent> \\g<floating-point-e> \\g<sign>? \\g<decimal-literal> ){0} (?<hexadecimal-fraction> \\. \\g<hexadecimal-literal>? ){0} (?<hexadecimal-exponent> \\g<floating-point-p> \\g<sign>? \\g<hexadecimal-literal> ){0} (?<floating-point-e> [eE] ){0} (?<floating-point-p> [pP] ){0} (?<sign> [+-] ){0} (?!0[box]) \\g<floating-point-literal> | \\g<integer-literal>"
},
"literal-string": {
"name": "string.quoted.double.swift",
"begin": "\"",
"end": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.swift"
}
},
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.swift"
}
},
"patterns": [
{
"include": "#quoted-text"
}
]
},
"literal-boolean": {
"match": "\\b(true|false)\\b(?![?!])",
"name": "constant.language.boolean.swift"
},
"operator": {
"patterns": [
{
"include": "#operator-character"
}
]
},
"operator-character": {
"name": "keyword.operator.swift",
"match": "[\\/=\\-+!*%<>&|^~.]"
},
"quoted-text": {
"patterns": [
{
"name": "meta.embedded.line.swift",
"contentName": "source.swift",
"begin": "\\\\\\(",
"end": "\\)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.swift"
}
},
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.swift"
}
},
"patterns": [
{
"include": "$self"
}
]
},
{
"include": "#escaped-char"
}
]
},
"function": {
"name": "meta.function.swift",
"begin": "(func) \\s*",
"end": "(?=\\{|#)|;|$",
"beginCaptures": {
"1": {
"name": "storage.type.function.swift"
}
},
"comment": "match regular function like: func myFunc(...)",
"patterns": [
{
"begin": "([a-zA-Z_0-9]+)\\s*(\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.swift"
},
"2": {
"name": "punctuation.definition.parameters.begin.swift"
}
},
"comment": "match regular function like: func myFunc(...)",
"end": "(\\))",
"endCaptures": {
"1": {
"name": "punctuation.definition.parameters.end.swift"
}
}
},
{
"name": "meta.return-type.swift",
"match": "((->)\\s*([^\\{]+))",
"captures": {
"2": {
"name": "punctuation.function.swift"
},
"3": {
"name": "entity.name.type.class.swift"
}
}
}
]
},
"whitespace": {
"match": "(?x) [ \\u0020 (?# space) \\u000A (?# line-feed) \\u000D (?# carriage-return) \\u0009 (?# horizontal-tab) \\u000B (?# vertical-tab) \\u000C (?# form-feed) \\u0000 (?# null) ]"
},
"attribute": {
"name": "storage.type.attribute.swift",
"begin": "@",
"end": " "
}
}
}

Просмотреть файл

@ -0,0 +1,426 @@
{
"scopeName": "text.xml",
"name": "XML",
"fileTypes": [
"atom",
"axml",
"bpmn",
"config",
"cpt",
"csl",
"csproj",
"csproj.user",
"dae",
"dia",
"dita",
"ditamap",
"dtml",
"fodg",
"fodp",
"fods",
"fodt",
"fsproj",
"fxml",
"glade",
"gpx",
"graphml",
"icls",
"iml",
"isml",
"jmx",
"jsp",
"launch",
"menu",
"mxml",
"nuspec",
"opml",
"owl",
"pom",
"ppj",
"proj",
"pt",
"pubxml",
"pubxml.user",
"rdf",
"rng",
"rss",
"shproj",
"storyboard",
"svg",
"targets",
"tld",
"vbox",
"vbox-prev",
"vbproj",
"vbproj.user",
"vcproj",
"vcproj.filters",
"vcxproj",
"vcxproj.filters",
"wsdl",
"xaml",
"xbl",
"xib",
"xlf",
"xliff",
"xml",
"xpdl",
"xsd",
"xul",
"ui"
],
"patterns": [
{
"begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)",
"captures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "entity.name.tag.xml"
}
},
"end": "(\\?>)",
"name": "meta.tag.preprocessor.xml",
"patterns": [
{
"match": " ([a-zA-Z-]+)",
"name": "entity.other.attribute-name.xml"
},
{
"include": "#doublequotedString"
},
{
"include": "#singlequotedString"
}
]
},
{
"begin": "(<!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)",
"captures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "keyword.other.doctype.xml"
},
"3": {
"name": "variable.language.documentroot.xml"
}
},
"end": "\\s*(>)",
"name": "meta.tag.sgml.doctype.xml",
"patterns": [
{
"include": "#internalSubset"
}
]
},
{
"include": "#comments"
},
{
"begin": "(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?></\\2>)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "entity.name.tag.xml"
},
"3": {
"name": "entity.name.tag.namespace.xml"
},
"4": {
"name": "punctuation.separator.namespace.xml"
},
"5": {
"name": "entity.name.tag.localname.xml"
}
},
"end": "(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "punctuation.definition.tag.xml"
},
"3": {
"name": "entity.name.tag.xml"
},
"4": {
"name": "entity.name.tag.namespace.xml"
},
"5": {
"name": "punctuation.separator.namespace.xml"
},
"6": {
"name": "entity.name.tag.localname.xml"
},
"7": {
"name": "punctuation.definition.tag.xml"
}
},
"name": "meta.tag.no-content.xml",
"patterns": [
{
"include": "#tagStuff"
}
]
},
{
"begin": "(</?)(?:([-\\w\\.]+)((:)))?([-\\w\\.:]+)",
"captures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "entity.name.tag.namespace.xml"
},
"3": {
"name": "entity.name.tag.xml"
},
"4": {
"name": "punctuation.separator.namespace.xml"
},
"5": {
"name": "entity.name.tag.localname.xml"
}
},
"end": "(/?>)",
"name": "meta.tag.xml",
"patterns": [
{
"include": "#tagStuff"
}
]
},
{
"include": "#entity"
},
{
"include": "#bare-ampersand"
},
{
"begin": "<%@",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.xml"
}
},
"end": "%>",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.xml"
}
},
"name": "source.java-props.embedded.xml",
"patterns": [
{
"match": "page|include|taglib",
"name": "keyword.other.page-props.xml"
}
]
},
{
"begin": "<%[!=]?(?!--)",
"beginCaptures": {
"0": {
"name": "punctuation.section.embedded.begin.xml"
}
},
"end": "(?!--)%>",
"endCaptures": {
"0": {
"name": "punctuation.section.embedded.end.xml"
}
},
"name": "source.java.embedded.xml",
"patterns": [
{
"include": "source.java"
}
]
},
{
"begin": "<!\\[CDATA\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.xml"
}
},
"end": "]]>",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.xml"
}
},
"name": "string.unquoted.cdata.xml"
}
],
"repository": {
"EntityDecl": {
"begin": "(<!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?",
"captures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "keyword.other.entity.xml"
},
"3": {
"name": "punctuation.definition.entity.xml"
},
"4": {
"name": "variable.language.entity.xml"
},
"5": {
"name": "keyword.other.entitytype.xml"
}
},
"end": "(>)",
"patterns": [
{
"include": "#doublequotedString"
},
{
"include": "#singlequotedString"
}
]
},
"bare-ampersand": {
"match": "&",
"name": "invalid.illegal.bad-ampersand.xml"
},
"doublequotedString": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.xml"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.xml"
}
},
"name": "string.quoted.double.xml",
"patterns": [
{
"include": "#entity"
},
{
"include": "#bare-ampersand"
}
]
},
"entity": {
"captures": {
"1": {
"name": "punctuation.definition.constant.xml"
},
"3": {
"name": "punctuation.definition.constant.xml"
}
},
"match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
"name": "constant.character.entity.xml"
},
"internalSubset": {
"begin": "(\\[)",
"captures": {
"1": {
"name": "punctuation.definition.constant.xml"
}
},
"end": "(\\])",
"name": "meta.internalsubset.xml",
"patterns": [
{
"include": "#EntityDecl"
},
{
"include": "#parameterEntity"
},
{
"include": "#comments"
}
]
},
"parameterEntity": {
"captures": {
"1": {
"name": "punctuation.definition.constant.xml"
},
"3": {
"name": "punctuation.definition.constant.xml"
}
},
"match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)",
"name": "constant.character.parameter-entity.xml"
},
"singlequotedString": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.xml"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.xml"
}
},
"name": "string.quoted.single.xml",
"patterns": [
{
"include": "#entity"
},
{
"include": "#bare-ampersand"
}
]
},
"tagStuff": {
"patterns": [
{
"captures": {
"1": {
"name": "entity.other.attribute-name.namespace.xml"
},
"2": {
"name": "entity.other.attribute-name.xml"
},
"3": {
"name": "punctuation.separator.namespace.xml"
},
"4": {
"name": "entity.other.attribute-name.localname.xml"
}
},
"match": "(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)="
},
{
"include": "#doublequotedString"
},
{
"include": "#singlequotedString"
}
]
},
"comments": {
"begin": "<[!%]--",
"captures": {
"0": {
"name": "punctuation.definition.comment.xml"
}
},
"end": "--%?>",
"name": "comment.block.xml"
}
},
"version": "https://github.com/atom/language-xml/commit/f461d428fb87040cb8a52d87d0b95151b9d3c0cc"
}

Просмотреть файл

@ -0,0 +1,93 @@
{
"scopeName": "text.xml.xsl",
"name": "XSL",
"fileTypes": [
"xsl",
"xslt"
],
"patterns": [
{
"begin": "(<)(xsl)((:))(template)",
"captures": {
"1": {
"name": "punctuation.definition.tag.xml"
},
"2": {
"name": "entity.name.tag.namespace.xml"
},
"3": {
"name": "entity.name.tag.xml"
},
"4": {
"name": "punctuation.separator.namespace.xml"
},
"5": {
"name": "entity.name.tag.localname.xml"
}
},
"end": "(>)",
"name": "meta.tag.xml.template",
"patterns": [
{
"captures": {
"1": {
"name": "entity.other.attribute-name.namespace.xml"
},
"2": {
"name": "entity.other.attribute-name.xml"
},
"3": {
"name": "punctuation.separator.namespace.xml"
},
"4": {
"name": "entity.other.attribute-name.localname.xml"
}
},
"match": " (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+)"
},
{
"include": "#doublequotedString"
},
{
"include": "#singlequotedString"
}
]
},
{
"include": "text.xml"
}
],
"repository": {
"doublequotedString": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.xml"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.xml"
}
},
"name": "string.quoted.double.xml"
},
"singlequotedString": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.xml"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.xml"
}
},
"name": "string.quoted.single.xml"
}
},
"version": "https://github.com/atom/language-xml/commit/507de2ee7daca60cf02e9e21fbeb92bbae73e280"
}

Просмотреть файл

@ -0,0 +1,629 @@
{
"fileTypes": [
"yaml",
"yml",
"rviz",
"reek",
"clang-format",
"yaml-tmlanguage",
"syntax",
"sublime-syntax"
],
"firstLineMatch": "^%YAML( ?1.\\d+)?",
"keyEquivalent": "^~Y",
"name": "YAML",
"patterns": [
{
"include": "#comment"
},
{
"include": "#property"
},
{
"include": "#directive"
},
{
"match": "^---",
"name": "entity.other.document.begin.yaml"
},
{
"match": "^\\.{3}",
"name": "entity.other.document.end.yaml"
},
{
"include": "#node"
}
],
"repository": {
"block-collection": {
"patterns": [
{
"include": "#block-sequence"
},
{
"include": "#block-mapping"
}
]
},
"block-mapping": {
"patterns": [
{
"include": "#block-pair"
}
]
},
"block-node": {
"patterns": [
{
"include": "#prototype"
},
{
"include": "#block-scalar"
},
{
"include": "#block-collection"
},
{
"include": "#flow-scalar-plain-out"
},
{
"include": "#flow-node"
}
]
},
"block-pair": {
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"1": {
"name": "punctuation.definition.key-value.begin.yaml"
}
},
"end": "(?=\\?)|^ *(:)|(:)",
"endCaptures": {
"1": {
"name": "punctuation.separator.key-value.mapping.yaml"
},
"2": {
"name": "invalid.illegal.expected-newline.yaml"
}
},
"name": "meta.block-mapping.yaml",
"patterns": [
{
"include": "#block-node"
}
]
},
{
"begin": "(?x)\n (?=\n (?x:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n )\n (\n [^\\s:]\n | : \\S\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\\s\n )\n ",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n )\n ",
"patterns": [
{
"include": "#flow-scalar-plain-out-implicit-type"
},
{
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
"beginCaptures": {
"0": {
"name": "entity.name.tag.yaml"
}
},
"contentName": "entity.name.tag.yaml",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n )\n ",
"name": "string.unquoted.plain.out.yaml"
}
]
},
{
"match": ":(?=\\s|$)",
"name": "punctuation.separator.key-value.mapping.yaml"
}
]
},
"block-scalar": {
"begin": "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.block.scalar.literal.yaml"
},
"2": {
"name": "punctuation.definition.block.scalar.folded.yaml"
},
"3": {
"name": "constant.numeric.indentation-indicator.yaml"
},
"4": {
"name": "support.other.chomping-indicator.yaml"
},
"5": {
"patterns": [
{
"include": "#comment"
},
{
"match": ".+",
"name": "invalid.illegal.expected-comment-or-newline.yaml"
}
]
}
},
"end": "^(?=\\S)|(?!\\G)",
"patterns": [
{
"begin": "^([ ]+)(?! )",
"end": "^(?!\\1|\\s*$)",
"name": "string.unquoted.block.yaml"
}
]
},
"block-sequence": {
"match": "(-)( |\\t|$)",
"name": "punctuation.definition.block.sequence.item.yaml"
},
"comment": {
"begin": "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
"beginCaptures": {
"1": {
"name": "punctuation.whitespace.comment.leading.yaml"
}
},
"end": "(?!\\G)",
"patterns": [
{
"begin": "#",
"beginCaptures": {
"0": {
"name": "punctuation.definition.comment.yaml"
}
},
"end": "\\n",
"name": "comment.line.number-sign.yaml"
}
]
},
"directive": {
"begin": "^%",
"beginCaptures": {
"0": {
"name": "punctuation.definition.directive.begin.yaml"
}
},
"end": "(?=$|[ \\t]+($|#))",
"name": "meta.directive.yaml",
"patterns": [
{
"captures": {
"1": {
"name": "keyword.other.directive.yaml.yaml"
},
"2": {
"name": "constant.numeric.yaml-version.yaml"
}
},
"match": "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
},
{
"captures": {
"1": {
"name": "keyword.other.directive.tag.yaml"
},
"2": {
"name": "storage.type.tag-handle.yaml"
},
"3": {
"name": "support.type.tag-prefix.yaml"
}
},
"match": "(?x)\n \\G\n (TAG)\n (?:[ \\t]+\n ((?:!(?:[0-9A-Za-z\\-]*!)?))\n (?:[ \\t]+ (\n ! (?x: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n | (?![,!\\[\\]{}]) (?x: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n )\n )?\n )?\n "
},
{
"captures": {
"1": {
"name": "support.other.directive.reserved.yaml"
},
"2": {
"name": "string.unquoted.directive-name.yaml"
},
"3": {
"name": "string.unquoted.directive-parameter.yaml"
}
},
"match": "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
},
{
"match": "\\S+",
"name": "invalid.illegal.unrecognized.yaml"
}
]
},
"flow-alias": {
"captures": {
"1": {
"name": "keyword.control.flow.alias.yaml"
},
"2": {
"name": "punctuation.definition.alias.yaml"
},
"3": {
"name": "variable.other.alias.yaml"
},
"4": {
"name": "invalid.illegal.character.anchor.yaml"
}
},
"match": "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
},
"flow-collection": {
"patterns": [
{
"include": "#flow-sequence"
},
{
"include": "#flow-mapping"
}
]
},
"flow-mapping": {
"begin": "\\{",
"beginCaptures": {
"0": {
"name": "punctuation.definition.mapping.begin.yaml"
}
},
"end": "\\}",
"endCaptures": {
"0": {
"name": "punctuation.definition.mapping.end.yaml"
}
},
"name": "meta.flow-mapping.yaml",
"patterns": [
{
"include": "#prototype"
},
{
"match": ",",
"name": "punctuation.separator.mapping.yaml"
},
{
"include": "#flow-pair"
}
]
},
"flow-node": {
"patterns": [
{
"include": "#prototype"
},
{
"include": "#flow-alias"
},
{
"include": "#flow-collection"
},
{
"include": "#flow-scalar"
}
]
},
"flow-pair": {
"patterns": [
{
"begin": "\\?",
"beginCaptures": {
"0": {
"name": "punctuation.definition.key-value.begin.yaml"
}
},
"end": "(?=[},\\]])",
"name": "meta.flow-pair.explicit.yaml",
"patterns": [
{
"include": "#prototype"
},
{
"include": "#flow-pair"
},
{
"include": "#flow-node"
},
{
"begin": ":(?=\\s|$|[\\[\\]{},])",
"beginCaptures": {
"0": {
"name": "punctuation.separator.key-value.mapping.yaml"
}
},
"end": "(?=[},\\]])",
"patterns": [
{
"include": "#flow-value"
}
]
}
]
},
{
"begin": "(?x)\n (?=\n (?:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n )\n (\n [^\\s:[\\[\\]{},]]\n | : [^\\s[\\[\\]{},]]\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\\s\n )\n ",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n | \\s* : [\\[\\]{},]\n | [\\[\\]{},]\n )\n ",
"name": "meta.flow-pair.key.yaml",
"patterns": [
{
"include": "#flow-scalar-plain-in-implicit-type"
},
{
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
"beginCaptures": {
"0": {
"name": "entity.name.tag.yaml"
}
},
"contentName": "entity.name.tag.yaml",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n | \\s* : [\\[\\]{},]\n | [\\[\\]{},]\n )\n ",
"name": "string.unquoted.plain.in.yaml"
}
]
},
{
"include": "#flow-node"
},
{
"begin": ":(?=\\s|$|[\\[\\]{},])",
"captures": {
"0": {
"name": "punctuation.separator.key-value.mapping.yaml"
}
},
"end": "(?=[},\\]])",
"name": "meta.flow-pair.yaml",
"patterns": [
{
"include": "#flow-value"
}
]
}
]
},
"flow-scalar": {
"patterns": [
{
"include": "#flow-scalar-double-quoted"
},
{
"include": "#flow-scalar-single-quoted"
},
{
"include": "#flow-scalar-plain-in"
}
]
},
"flow-scalar-double-quoted": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.yaml"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.yaml"
}
},
"name": "string.quoted.double.yaml",
"patterns": [
{
"match": "\\\\([0abtnvfre \"/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})",
"name": "constant.character.escape.yaml"
},
{
"match": "\\\\\\n",
"name": "constant.character.escape.double-quoted.newline.yaml"
}
]
},
"flow-scalar-plain-in": {
"patterns": [
{
"include": "#flow-scalar-plain-in-implicit-type"
},
{
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n | \\s* : [\\[\\]{},]\n | [\\[\\]{},]\n )\n ",
"name": "string.unquoted.plain.in.yaml"
}
]
},
"flow-scalar-plain-in-implicit-type": {
"patterns": [
{
"captures": {
"1": {
"name": "constant.language.null.yaml"
},
"2": {
"name": "constant.language.boolean.yaml"
},
"3": {
"name": "constant.numeric.integer.yaml"
},
"4": {
"name": "constant.numeric.float.yaml"
},
"5": {
"name": "constant.other.timestamp.yaml"
},
"6": {
"name": "constant.language.value.yaml"
},
"7": {
"name": "constant.language.merge.yaml"
}
},
"match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n | \\s* : [\\[\\]{},]\n | [\\[\\]{},]\n )\n )\n "
}
]
},
"flow-scalar-plain-out": {
"patterns": [
{
"include": "#flow-scalar-plain-out-implicit-type"
},
{
"begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
"end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n )\n ",
"name": "string.unquoted.plain.out.yaml"
}
]
},
"flow-scalar-plain-out-implicit-type": {
"patterns": [
{
"captures": {
"1": {
"name": "constant.language.null.yaml"
},
"2": {
"name": "constant.language.boolean.yaml"
},
"3": {
"name": "constant.numeric.integer.yaml"
},
"4": {
"name": "constant.numeric.float.yaml"
},
"5": {
"name": "constant.other.timestamp.yaml"
},
"6": {
"name": "constant.language.value.yaml"
},
"7": {
"name": "constant.language.merge.yaml"
}
},
"match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?x:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : \\s\n )\n )\n "
}
]
},
"flow-scalar-single-quoted": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.yaml"
}
},
"end": "'(?!')",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.yaml"
}
},
"name": "string.quoted.single.yaml",
"patterns": [
{
"match": "''",
"name": "constant.character.escape.single-quoted.yaml"
}
]
},
"flow-sequence": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.sequence.begin.yaml"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "punctuation.definition.sequence.end.yaml"
}
},
"name": "meta.flow-sequence.yaml",
"patterns": [
{
"include": "#prototype"
},
{
"match": ",",
"name": "punctuation.separator.sequence.yaml"
},
{
"include": "#flow-pair"
},
{
"include": "#flow-node"
}
]
},
"flow-value": {
"patterns": [
{
"begin": "\\G(?![},\\]])",
"end": "(?=[},\\]])",
"name": "meta.flow-pair.value.yaml",
"patterns": [
{
"include": "#flow-node"
}
]
}
]
},
"node": {
"patterns": [
{
"include": "#block-node"
}
]
},
"property": {
"begin": "(?=!|&)",
"end": "(?!\\G)",
"name": "meta.property.yaml",
"patterns": [
{
"captures": {
"1": {
"name": "keyword.control.property.anchor.yaml"
},
"2": {
"name": "punctuation.definition.anchor.yaml"
},
"3": {
"name": "entity.name.type.anchor.yaml"
},
"4": {
"name": "invalid.illegal.character.anchor.yaml"
}
},
"match": "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
},
{
"match": "(?x)\n \\G\n (?:\n ! < (?: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %\\p{XDigit}{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n | !\n )\n (?=\\ |\\t|$)\n ",
"name": "storage.type.tag-handle.yaml"
},
{
"match": "\\S+",
"name": "invalid.illegal.tag-handle.yaml"
}
]
},
"prototype": {
"patterns": [
{
"include": "#comment"
},
{
"include": "#property"
}
]
}
},
"scopeName": "source.yaml",
"uuid": "686AD6AE-33F3-4493-9512-9E9FC1D5417F",
"version": "https://github.com/textmate/yaml.tmbundle/commit/9a4135db812815467828e467e1a57189e1ccdac9"
}

Просмотреть файл

@ -0,0 +1,28 @@
@echo off
setlocal
title VSCode Dev
pushd %~dp0\..
:: Node modules
if not exist node_modules call .\scripts\npm.bat install
:: Get electron
node .\node_modules\gulp\bin\gulp.js electron
:: Build
if not exist out node .\node_modules\gulp\bin\gulp.js compile
:: Configuration
set NODE_ENV=development
set VSCODE_DEV=1
set ELECTRON_DEFAULT_ERROR_MODE=1
set ELECTRON_ENABLE_LOGGING=1
set ELECTRON_ENABLE_STACK_DUMPING=1
:: Launch Code
.\.build\electron\electron.exe . %*
popd
endlocal

Разница между файлами не показана из-за своего большого размера Загрузить разницу