Initial tests
This commit is contained in:
Родитель
cb2c572184
Коммит
975e2e3fad
109
src/grammar.ts
109
src/grammar.ts
|
@ -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;
|
||||
}
|
||||
|
|
69
src/main.ts
69
src/main.ts
|
@ -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', () => {
|
||||
|
|
13
src/theme.ts
13
src/theme.ts
|
@ -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:(?<=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:((?<=(\+|=|-|\&|\\|/|<|>|\(|,))\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*(\+|=|-|\&|\\|/|<|>|\(|\)))))</string>
|
||||
<key>name</key>
|
||||
<string>variable.other.asp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>!|\$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|/=|%=|\+=|\-=|&=|\^=|\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>&>|\d*>&\d*|\d*(>>|>|<)|\d*<&|\d*<></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>(?<=(\s|\(|\[|\{)):[a-zA-Z0-9\#\.\-\_\:\+\=\>\<\/\!\?\*]+(?=(\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>(?<=(\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>(?<=(\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>(?<=\()(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>(?<=(\s|\(|\[|\{)\#)'[a-zA-Z0-9\.\-\_\:\+\=\>\<\/\!\?\*]+(?=(\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>(?<=\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>(\$|@|%|&)(\*|:|!|\^|~|=|\?|(<(?=.+>)))?([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>(=|<-|<<-|->|->>)</string>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.assignment.r</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>(==|!=|<>|<|>|<=|>=)</string>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.comparison.r</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>(!|&{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*(<-)\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>[!<>]?=|<>|<|></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>^(((>)( .*)?)|((\+).*))$\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>^(((<)( .*)?)|((-).*))$\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
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче