From 39f8f78d3e2ef1a880cdecec7a2b5578197729a9 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 11:50:55 +0200 Subject: [PATCH 01/29] Fixes #30095: Task spinner should only run for build tasks with a problem matcher when using 2.0.0 --- .../parts/tasks/common/taskSystem.ts | 1 + .../electron-browser/task.contribution.ts | 21 +++++++++++++++---- .../electron-browser/terminalTaskSystem.ts | 8 +++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/tasks/common/taskSystem.ts b/src/vs/workbench/parts/tasks/common/taskSystem.ts index 434910b2b09..0923378df89 100644 --- a/src/vs/workbench/parts/tasks/common/taskSystem.ts +++ b/src/vs/workbench/parts/tasks/common/taskSystem.ts @@ -94,6 +94,7 @@ export interface TaskEvent { taskName?: string; type?: TaskType; group?: string; + __task?: Task; } export interface ITaskResolver { diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 397f0f890de..79b67f5c3e9 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -378,7 +378,7 @@ class StatusBarItem extends Themable implements IStatusbarItem { }); callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Active, (event: TaskEvent) => { - if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) { + if (this.ignoreEvent(event)) { return; } this.activeCount++; @@ -398,7 +398,7 @@ class StatusBarItem extends Themable implements IStatusbarItem { })); callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Inactive, (event: TaskEvent) => { - if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) { + if (this.ignoreEvent(event)) { return; } // Since the exiting of the sub process is communicated async we can't order inactive and terminate events. @@ -416,7 +416,7 @@ class StatusBarItem extends Themable implements IStatusbarItem { })); callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Terminated, (event: TaskEvent) => { - if (this.taskService.inTerminal() && event.group !== TaskGroup.Build) { + if (this.ignoreEvent(event)) { return; } if (this.activeCount !== 0) { @@ -439,6 +439,19 @@ class StatusBarItem extends Themable implements IStatusbarItem { } }; } + + private ignoreEvent(event: TaskEvent): boolean { + if (!this.taskService.inTerminal()) { + return false; + } + if (event.group !== TaskGroup.Build) { + return true; + } + if (!event.__task) { + return false; + } + return event.__task.problemMatchers === void 0 || event.__task.problemMatchers.length === 0; + } } interface TaskServiceEventData { @@ -757,7 +770,7 @@ class TaskService extends EventEmitter implements ITaskService { this.storageService.store(TaskService.RecentlyUsedTasks_Key, JSON.stringify(values), StorageScope.WORKSPACE); } - public openDocumentation(): void { + private openDocumentation(): void { this.openerService.open(URI.parse('https://go.microsoft.com/fwlink/?LinkId=733558')); } diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index 4b04532ae91..b5611d8c7ae 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -189,7 +189,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { let task = activeTerminal.task; try { onExit.dispose(); - let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group }; + let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task }; this.emit(TaskSystemEvents.Terminated, event); } catch (error) { // Do nothing. @@ -210,7 +210,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { let task = terminalData.task; try { onExit.dispose(); - let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group }; + let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task }; this.emit(TaskSystemEvents.Terminated, event); } catch (error) { // Do nothing. @@ -270,7 +270,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { const problemMatchers = this.resolveMatchers(task.problemMatchers); let watchingProblemMatcher = new WatchingProblemCollector(problemMatchers, this.markerService, this.modelService); let toUnbind: IDisposable[] = []; - let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.Watching, group: task.group }; + let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.Watching, group: task.group, __task: task }; let eventCounter: number = 0; toUnbind.push(watchingProblemMatcher.addListener(ProblemCollectorEvents.WatchingBeginDetected, () => { eventCounter++; @@ -332,7 +332,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { } else { promise = new TPromise((resolve, reject) => { [terminal, executedCommand] = this.createTerminal(task); - let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group }; + let event: TaskEvent = { taskId: task._id, taskName: task.name, type: TaskType.SingleRun, group: task.group, __task: task }; this.emit(TaskSystemEvents.Active, event); let decoder = new TerminalDecoder(); let problemMatchers = this.resolveMatchers(task.problemMatchers); From b92a9b09a84a6e921931321a99e985329c7844ca Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 11:55:24 +0200 Subject: [PATCH 02/29] Fixes #30045: Rename build output to task output when selecting a problem matcher. --- .../parts/tasks/electron-browser/task.contribution.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 79b67f5c3e9..4c63c3bbcc5 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -885,12 +885,12 @@ class TaskService extends EventEmitter implements ITaskService { entries = entries.sort((a, b) => a.label.localeCompare(b.label)); entries[0].separator = { border: true }; entries.unshift( - { label: nls.localize('TaskService.attachProblemMatcher.continueWithout', 'Continue without scanning the build output'), matcher: undefined }, - { label: nls.localize('TaskService.attachProblemMatcher.never', 'Never scan the build output'), matcher: undefined, never: true }, - { label: nls.localize('TaskService.attachProblemMatcher.learnMoreAbout', 'Learn more about scanning the build output'), matcher: undefined, learnMore: true } + { label: nls.localize('TaskService.attachProblemMatcher.continueWithout', 'Continue without scanning the task output'), matcher: undefined }, + { label: nls.localize('TaskService.attachProblemMatcher.never', 'Never scan the task output'), matcher: undefined, never: true }, + { label: nls.localize('TaskService.attachProblemMatcher.learnMoreAbout', 'Learn more about scanning the task output'), matcher: undefined, learnMore: true } ); return this.quickOpenService.pick(entries, { - placeHolder: nls.localize('selectProblemMatcher', 'Select for which kind of errors and warnings to scan the build output'), + placeHolder: nls.localize('selectProblemMatcher', 'Select for which kind of errors and warnings to scan the task output'), autoFocus: { autoFocusFirstEntry: true } }).then((selected) => { if (selected) { From 8efcb4e90973f9aa8a389f85560d37a3f9ce4d37 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 13:09:38 +0200 Subject: [PATCH 03/29] Fixes #30044: Task contribution should allow extension to supress problem matcher attach message --- extensions/npm/src/main.ts | 2 +- src/vs/workbench/api/node/extHostTask.ts | 3 ++- src/vs/workbench/api/node/extHostTypes.ts | 13 ++++++++++++- src/vs/workbench/parts/tasks/common/tasks.ts | 2 ++ .../tasks/electron-browser/task.contribution.ts | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/npm/src/main.ts b/extensions/npm/src/main.ts index 82d266687f8..a52b9de7cb3 100644 --- a/extensions/npm/src/main.ts +++ b/extensions/npm/src/main.ts @@ -123,7 +123,7 @@ async function getNpmScriptsAsTasks(): Promise { result.push(task); }); // add some 'well known' npm tasks - result.push(new vscode.Task({ type: 'npm', script: 'install' } as NpmTaskDefinition, `install`, 'npm', new vscode.ShellExecution(`npm install`))); + result.push(new vscode.Task({ type: 'npm', script: 'install' } as NpmTaskDefinition, `install`, 'npm', new vscode.ShellExecution(`npm install`), [])); return Promise.resolve(result); } catch (e) { return Promise.resolve(emptyTasks); diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index e6bd17c90d4..36195a1b02a 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -352,7 +352,8 @@ namespace Tasks { group: task.group ? (task.group as types.TaskGroup).id : undefined, command: command, isBackground: !!task.isBackground, - problemMatchers: task.problemMatchers.slice() + problemMatchers: task.problemMatchers.slice(), + hasDefinedMatchers: (task as types.Task).hasDefinedMatchers }; return result; } diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index 51c7e0b2934..ee87589d753 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1158,6 +1158,7 @@ export class Task implements vscode.Task { private _name: string; private _execution: ProcessExecution | ShellExecution; private _problemMatchers: string[]; + private _hasDefinedMatchers: boolean; private _isBackground: boolean; private _source: string; private _group: TaskGroup; @@ -1170,10 +1171,13 @@ export class Task implements vscode.Task { this.execution = execution; if (typeof problemMatchers === 'string') { this._problemMatchers = [problemMatchers]; + this._hasDefinedMatchers = true; } else if (Array.isArray(problemMatchers)) { this._problemMatchers = problemMatchers; + this._hasDefinedMatchers = true; } else { this._problemMatchers = []; + this._hasDefinedMatchers = false; } this._isBackground = false; } @@ -1227,9 +1231,16 @@ export class Task implements vscode.Task { set problemMatchers(value: string[]) { if (!Array.isArray(value)) { - value = []; + this._problemMatchers = []; + this._hasDefinedMatchers = false; + return; } this._problemMatchers = value; + this._hasDefinedMatchers = true; + } + + get hasDefinedMatchers(): boolean { + return this._hasDefinedMatchers; } get isBackground(): boolean { diff --git a/src/vs/workbench/parts/tasks/common/tasks.ts b/src/vs/workbench/parts/tasks/common/tasks.ts index 43b7cd5a77b..04c51da7beb 100644 --- a/src/vs/workbench/parts/tasks/common/tasks.ts +++ b/src/vs/workbench/parts/tasks/common/tasks.ts @@ -340,6 +340,8 @@ export interface ContributedTask extends CommonTask, ConfigurationProperties { defines: TaskIdentifier; + hasDefinedMatchers: boolean; + /** * The command configuration */ diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 4c63c3bbcc5..c339df79443 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -856,7 +856,7 @@ class TaskService extends EventEmitter implements ITaskService { return false; } if (task._source.config === void 0 && ContributedTask.is(task)) { - return true; + return !task.hasDefinedMatchers && task.problemMatchers.length === 0; } let configProperties: TaskConfig.ConfigurationProperties = task._source.config.element; return configProperties.problemMatcher === void 0; From ce177da9e11c7c14a143b9beaf743365ce228744 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Mon, 10 Jul 2017 13:16:58 +0200 Subject: [PATCH 04/29] let debugContentProvider support sessions --- .../mainThreadDebugService.ts | 13 ++--------- .../debug/browser/debugContentProvider.ts | 22 ++++++++++++++++--- src/vs/workbench/parts/debug/common/debug.ts | 5 +++++ .../debug/electron-browser/debugService.ts | 9 ++++++++ .../parts/debug/test/common/mockDebug.ts | 4 ++++ 5 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index 6ff2e09a7c9..22d4720b00f 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -5,7 +5,7 @@ 'use strict'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { IDebugService, IProcess, IConfig } from 'vs/workbench/parts/debug/common/debug'; +import { IDebugService, IConfig } from 'vs/workbench/parts/debug/common/debug'; import { IThreadService } from 'vs/workbench/services/thread/common/threadService'; import { TPromise } from 'vs/base/common/winjs.base'; import { ExtHostContext, ExtHostDebugServiceShape, MainThreadDebugServiceShape, DebugSessionUUID } from '../node/extHost.protocol'; @@ -57,7 +57,7 @@ export class MainThreadDebugService extends MainThreadDebugServiceShape { } public $customDebugAdapterRequest(sessionId: DebugSessionUUID, request: string, args: any): TPromise { - const process = this._findProcessByUUID(sessionId); + const process = this.debugService.findProcessByUUID(sessionId); if (process) { return process.session.custom(request, args).then(response => { if (response.success) { @@ -69,13 +69,4 @@ export class MainThreadDebugService extends MainThreadDebugServiceShape { } return TPromise.wrapError(new Error('debug session not found')); } - - private _findProcessByUUID(processId: DebugSessionUUID): IProcess | null { - const processes = this.debugService.getModel().getProcesses(); - const result = processes.filter(process => process.getId() === processId); - if (result.length > 0) { - return result[0]; // there can only be one - } - return null; - } } diff --git a/src/vs/workbench/parts/debug/browser/debugContentProvider.ts b/src/vs/workbench/parts/debug/browser/debugContentProvider.ts index d683f528efa..f6814ec43c3 100644 --- a/src/vs/workbench/parts/debug/browser/debugContentProvider.ts +++ b/src/vs/workbench/parts/debug/browser/debugContentProvider.ts @@ -12,7 +12,7 @@ import { IModelService } from 'vs/editor/common/services/modelService'; import { IModeService } from 'vs/editor/common/services/modeService'; import { ITextModelService, ITextModelContentProvider } from 'vs/editor/common/services/resolverService'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; -import { DEBUG_SCHEME, IDebugService } from 'vs/workbench/parts/debug/common/debug'; +import { DEBUG_SCHEME, IDebugService, IProcess } from 'vs/workbench/parts/debug/common/debug'; export class DebugContentProvider implements IWorkbenchContribution, ITextModelContentProvider { @@ -30,7 +30,23 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC } public provideTextContent(resource: uri): TPromise { - const process = this.debugService.getViewModel().focusedProcess; + + let process: IProcess; + if (resource.query) { + const keyvalues = resource.query.split('&'); + for (let keyvalue of keyvalues) { + const pair = keyvalue.split('='); + if (pair.length === 2 && pair[0] === 'session') { + process = this.debugService.findProcessByUUID(decodeURIComponent(pair[1])); + break; + } + } + } + + if (!process) { + // fallback: use focussed process + process = this.debugService.getViewModel().focusedProcess; + } if (!process) { return TPromise.wrapError(new Error(localize('unable', "Unable to resolve the resource without a debug session"))); @@ -41,7 +57,7 @@ export class DebugContentProvider implements IWorkbenchContribution, ITextModelC rawSource = source.raw; } else { // Remove debug: scheme - rawSource = { path: resource.with({ scheme: '' }).toString(true) }; + rawSource = { path: resource.with({ scheme: '', query: '' }).toString(true) }; } return process.session.source({ sourceReference: source ? source.reference : undefined, source: rawSource }).then(response => { diff --git a/src/vs/workbench/parts/debug/common/debug.ts b/src/vs/workbench/parts/debug/common/debug.ts index ef5205cebf5..d7dffcdb029 100644 --- a/src/vs/workbench/parts/debug/common/debug.ts +++ b/src/vs/workbench/parts/debug/common/debug.ts @@ -547,6 +547,11 @@ export interface IDebugService { */ createProcess(config: IConfig): TPromise; + /** + * Find process by ID. + */ + findProcessByUUID(uuid: string): IProcess | null; + /** * Restarts a process or creates a new one if there is no active session. */ diff --git a/src/vs/workbench/parts/debug/electron-browser/debugService.ts b/src/vs/workbench/parts/debug/electron-browser/debugService.ts index ba5fe5d1801..59197c80665 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugService.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugService.ts @@ -685,6 +685,15 @@ export class DebugService implements debug.IDebugService { )); } + public findProcessByUUID(uuid: string): debug.IProcess | null { + const processes = this.getModel().getProcesses(); + const result = processes.filter(process => process.getId() === uuid); + if (result.length > 0) { + return result[0]; // there can only be one + } + return null; + } + public createProcess(config: debug.IConfig): TPromise { return this.textFileService.saveAll().then(() => this.configurationManager.resolveConfiguration(config).then(resolvedConfig => { diff --git a/src/vs/workbench/parts/debug/test/common/mockDebug.ts b/src/vs/workbench/parts/debug/test/common/mockDebug.ts index ac277ba0f73..afcc057d1e1 100644 --- a/src/vs/workbench/parts/debug/test/common/mockDebug.ts +++ b/src/vs/workbench/parts/debug/test/common/mockDebug.ts @@ -87,6 +87,10 @@ export class MockDebugService implements debug.IDebugService { return TPromise.as(null); } + public findProcessByUUID(uuid: string): debug.IProcess | null { + return null; + } + public restartProcess(): TPromise { return TPromise.as(null); } From 8eccd64352f2b99fd8bfe55f236efcf3ddf765d3 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 15:26:55 +0200 Subject: [PATCH 05/29] Fixes #29913: Action to show and navigate to running tasks --- src/vs/code/electron-main/menus.ts | 4 +- .../parts/tasks/common/taskService.ts | 1 + .../parts/tasks/common/taskSystem.ts | 2 + .../media/task.contribution.css | 10 ++ .../electron-browser/task.contribution.ts | 99 ++++++++++++++++++- .../electron-browser/terminalTaskSystem.ts | 14 +++ .../parts/tasks/node/processTaskSystem.ts | 5 + 7 files changed, 130 insertions(+), 5 deletions(-) diff --git a/src/vs/code/electron-main/menus.ts b/src/vs/code/electron-main/menus.ts index 7c8e51044c4..15ec1c62f18 100644 --- a/src/vs/code/electron-main/menus.ts +++ b/src/vs/code/electron-main/menus.ts @@ -913,9 +913,10 @@ export class CodeMenu { private setTaskMenu(taskMenu: Electron.Menu): void { const runTask = this.createMenuItem(nls.localize({ key: 'miRunTask', comment: ['&& denotes a mnemonic'] }, "&&Run Task..."), 'workbench.action.tasks.runTask'); + const buildTask = this.createMenuItem(nls.localize({ key: 'miBuildTask', comment: ['&& denotes a mnemonic'] }, "Run &&Build Task..."), 'workbench.action.tasks.build'); + const showTasks = this.createMenuItem(nls.localize({ key: 'miRunningTask', comment: ['&& denotes a mnemonic'] }, "Show Runnin&&g Tasks..."), 'workbench.action.tasks.showTasks'); const restartTask = this.createMenuItem(nls.localize({ key: 'miRestartTask', comment: ['&& denotes a mnemonic'] }, "R&&estart Running Task..."), 'workbench.action.tasks.restartTask'); const terminateTask = this.createMenuItem(nls.localize({ key: 'miTerminateTask', comment: ['&& denotes a mnemonic'] }, "&&Terminate Task..."), 'workbench.action.tasks.terminate'); - const buildTask = this.createMenuItem(nls.localize({ key: 'miBuildTask', comment: ['&& denotes a mnemonic'] }, "Run &&Build Task..."), 'workbench.action.tasks.build'); // const testTask = this.createMenuItem(nls.localize({ key: 'miTestTask', comment: ['&& denotes a mnemonic'] }, "Run Test T&&ask..."), 'workbench.action.tasks.test'); // const showTaskLog = this.createMenuItem(nls.localize({ key: 'miShowTaskLog', comment: ['&& denotes a mnemonic'] }, "&&Show Task Log"), 'workbench.action.tasks.showLog'); const configureTask = this.createMenuItem(nls.localize({ key: 'miConfigureTask', comment: ['&& denotes a mnemonic'] }, "&&Configure Tasks"), 'workbench.action.tasks.configureTaskRunner'); @@ -930,6 +931,7 @@ export class CodeMenu { __separator__(), terminateTask, restartTask, + showTasks, __separator__(), //showTaskLog, configureTask, diff --git a/src/vs/workbench/parts/tasks/common/taskService.ts b/src/vs/workbench/parts/tasks/common/taskService.ts index bd469539ad7..a2cdeb91456 100644 --- a/src/vs/workbench/parts/tasks/common/taskService.ts +++ b/src/vs/workbench/parts/tasks/common/taskService.ts @@ -21,6 +21,7 @@ export namespace TaskServiceEvents { export let Inactive: string = 'inactive'; export let ConfigChanged: string = 'configChanged'; export let Terminated: string = 'terminated'; + export let Changed: string = 'changed'; } export interface ITaskProvider { diff --git a/src/vs/workbench/parts/tasks/common/taskSystem.ts b/src/vs/workbench/parts/tasks/common/taskSystem.ts index 0923378df89..48ce82ee764 100644 --- a/src/vs/workbench/parts/tasks/common/taskSystem.ts +++ b/src/vs/workbench/parts/tasks/common/taskSystem.ts @@ -82,6 +82,7 @@ export namespace TaskSystemEvents { export let Active: string = 'active'; export let Inactive: string = 'inactive'; export let Terminated: string = 'terminated'; + export let Changed: string = 'changed'; } export enum TaskType { @@ -113,4 +114,5 @@ export interface ITaskSystem extends IEventEmitter { canAutoTerminate(): boolean; terminate(id: string): TPromise; terminateAll(): TPromise; + revealTask(task: Task): boolean; } \ No newline at end of file diff --git a/src/vs/workbench/parts/tasks/electron-browser/media/task.contribution.css b/src/vs/workbench/parts/tasks/electron-browser/media/task.contribution.css index f8b7e9e67e5..c02899f2f02 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/media/task.contribution.css +++ b/src/vs/workbench/parts/tasks/electron-browser/media/task.contribution.css @@ -3,6 +3,16 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +.task-statusbar-runningItem { + display: inline-block; +} + +.task-statusbar-runningItem-label { + display: inline-block; + cursor: pointer; + padding: 0 5px 0 5px; +} + .task-statusbar-item { display: inline-block; } diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index c339df79443..95d154b9836 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -263,7 +263,7 @@ class ViewTerminalAction extends Action { } } -class StatusBarItem extends Themable implements IStatusbarItem { +class BuildStatusBarItem extends Themable implements IStatusbarItem { private intervalToken: any; private activeCount: number; private static progressChars: string = '|/-\\'; @@ -309,7 +309,7 @@ class StatusBarItem extends Themable implements IStatusbarItem { Dom.addClass(progress, 'task-statusbar-item-progress'); element.appendChild(progress); - progress.innerHTML = StatusBarItem.progressChars[0]; + progress.innerHTML = BuildStatusBarItem.progressChars[0]; $(progress).hide(); Dom.addClass(label, 'task-statusbar-item-label'); @@ -384,7 +384,7 @@ class StatusBarItem extends Themable implements IStatusbarItem { this.activeCount++; if (this.activeCount === 1) { let index = 1; - let chars = StatusBarItem.progressChars; + let chars = BuildStatusBarItem.progressChars; progress.innerHTML = chars[0]; this.intervalToken = setInterval(() => { progress.innerHTML = chars[index]; @@ -454,6 +454,69 @@ class StatusBarItem extends Themable implements IStatusbarItem { } } +class TaskStatusBarItem extends Themable implements IStatusbarItem { + + constructor( + @IPanelService private panelService: IPanelService, + @IMarkerService private markerService: IMarkerService, + @IOutputService private outputService: IOutputService, + @ITaskService private taskService: ITaskService, + @IPartService private partService: IPartService, + @IThemeService themeService: IThemeService, + @IWorkspaceContextService private contextService: IWorkspaceContextService, + ) { + super(themeService); + } + + protected updateStyles(): void { + super.updateStyles(); + } + + public render(container: HTMLElement): IDisposable { + let callOnDispose: IDisposable[] = []; + + const element = document.createElement('div'); + const label = document.createElement('a'); + + Dom.addClass(element, 'task-statusbar-runningItem'); + + Dom.addClass(label, 'task-statusbar-runningItem-label'); + element.appendChild(label); + element.title = nls.localize('runningTasks', "Show Running Tasks"); + + callOnDispose.push(Dom.addDisposableListener(label, 'click', (e: MouseEvent) => { + (this.taskService as TaskService).runShowTasks(); + })); + + let updateStatus = (): void => { + this.taskService.getActiveTasks().then(tasks => { + if (tasks.length === 0) { + label.innerHTML = nls.localize('nothingRunner', 'Running Tasks: 0'); + } else if (tasks.length === 1) { + label.innerHTML = nls.localize('oneTasksRunnering', 'Running Tasks: 1'); + } else { + label.innerHTML = nls.localize('nTasksRunnering', 'Running Tasks: {0}', tasks.length); + } + }); + }; + + callOnDispose.push(this.taskService.addListener(TaskServiceEvents.Changed, (event: TaskEvent) => { + updateStatus(); + })); + + container.appendChild(element); + + this.updateStyles(); + updateStatus(); + + return { + dispose: () => { + callOnDispose = dispose(callOnDispose); + } + }; + } +} + interface TaskServiceEventData { error?: any; } @@ -465,6 +528,9 @@ class NullTaskSystem extends EventEmitter implements ITaskSystem { promise: TPromise.as({}) }; } + public revealTask(task: Task): boolean { + return false; + } public isActive(): TPromise { return TPromise.as(false); } @@ -686,6 +752,10 @@ class TaskService extends EventEmitter implements ITaskService { CommandsRegistry.registerCommand('workbench.action.tasks.configureDefaultTestTask', () => { this.runConfigureDefaultTestTask(); }); + + CommandsRegistry.registerCommand('workbench.action.tasks.showTasks', () => { + this.runShowTasks(); + }); } private showOutput(): void { @@ -1189,6 +1259,7 @@ class TaskService extends EventEmitter implements ITaskService { this._taskSystemListeners.push(this._taskSystem.addListener(TaskSystemEvents.Active, (event) => this.emit(TaskServiceEvents.Active, event))); this._taskSystemListeners.push(this._taskSystem.addListener(TaskSystemEvents.Inactive, (event) => this.emit(TaskServiceEvents.Inactive, event))); this._taskSystemListeners.push(this._taskSystem.addListener(TaskSystemEvents.Terminated, (event) => this.emit(TaskServiceEvents.Terminated, event))); + this._taskSystemListeners.push(this._taskSystem.addListener(TaskSystemEvents.Changed, () => this.emit(TaskServiceEvents.Changed))); return this._taskSystem; } @@ -1874,6 +1945,24 @@ class TaskService extends EventEmitter implements ITaskService { this.configureAction().run(); } } + + public runShowTasks(): void { + if (!this.canRunCommand()) { + return; + } + if (!this._taskSystem) { + this.messageService.show(Severity.Info, nls.localize('TaskService.noTaskIsRunning', 'No task is running.')); + return; + } + this.getActiveTasks().then((tasks) => { + this.showQuickPick(tasks, nls.localize('TaskService.pickShowTask', 'Select the task to show its output'), false, true).then((task) => { + if (!task || !this._taskSystem) { + return; + } + this._taskSystem.revealTask(task); + }); + }); + } } @@ -1883,6 +1972,7 @@ workbenchActionsRegistry.registerWorkbenchAction(new SyncActionDescriptor(Config MenuRegistry.addCommand({ id: 'workbench.action.tasks.showLog', title: { value: nls.localize('ShowLogAction.label', "Show Task Log"), original: 'Show Task Log' }, category: { value: tasksCategory, original: 'Tasks' } }); MenuRegistry.addCommand({ id: 'workbench.action.tasks.runTask', title: { value: nls.localize('RunTaskAction.label', "Run Task"), original: 'Run Task' }, category: { value: tasksCategory, original: 'Tasks' } }); MenuRegistry.addCommand({ id: 'workbench.action.tasks.restartTask', title: { value: nls.localize('RestartTaskAction.label', "Restart Running Task"), original: 'Restart Running Task' }, category: { value: tasksCategory, original: 'Tasks' } }); +MenuRegistry.addCommand({ id: 'workbench.action.tasks.showTasks', title: { value: nls.localize('ShowTasksAction.label', "Show Running Tasks"), original: 'Show Running Tasks' }, category: { value: tasksCategory, original: 'Tasks' } }); MenuRegistry.addCommand({ id: 'workbench.action.tasks.terminate', title: { value: nls.localize('TerminateAction.label', "Terminate Task"), original: 'Terminate Task' }, category: { value: tasksCategory, original: 'Tasks' } }); MenuRegistry.addCommand({ id: 'workbench.action.tasks.build', title: { value: nls.localize('BuildAction.label', "Run Build Task"), original: 'Run Build Task' }, category: { value: tasksCategory, original: 'Tasks' } }); MenuRegistry.addCommand({ id: 'workbench.action.tasks.test', title: { value: nls.localize('TestAction.label', "Run Test Task"), original: 'Run Test Task' }, category: { value: tasksCategory, original: 'Tasks' } }); @@ -1913,7 +2003,8 @@ actionBarRegistry.registerActionBarContributor(Scope.VIEWER, QuickOpenActionCont // Status bar let statusbarRegistry = Registry.as(StatusbarExtensions.Statusbar); -statusbarRegistry.registerStatusbarItem(new StatusbarItemDescriptor(StatusBarItem, StatusbarAlignment.LEFT, 50 /* Medium Priority */)); +statusbarRegistry.registerStatusbarItem(new StatusbarItemDescriptor(BuildStatusBarItem, StatusbarAlignment.LEFT, 50 /* Medium Priority */)); +statusbarRegistry.registerStatusbarItem(new StatusbarItemDescriptor(TaskStatusBarItem, StatusbarAlignment.LEFT, 50 /* Medium Priority */)); // Output channel let outputChannelRegistry = Registry.as(OutputExt.OutputChannels); diff --git a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts index b5611d8c7ae..3ad7ca39063 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/terminalTaskSystem.ts @@ -162,6 +162,17 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { } } + + public revealTask(task: Task): boolean { + let terminalData = this.activeTasks[task._id]; + if (!terminalData) { + return false; + } + this.terminalService.setActiveInstance(terminalData.terminal); + this.terminalService.showPanel(task.command.presentation.focus); + return true; + } + public isActive(): TPromise { return TPromise.as(this.isActiveSync()); } @@ -301,6 +312,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { onData.dispose(); onExit.dispose(); delete this.activeTasks[task._id]; + this.emit(TaskSystemEvents.Changed); switch (task.command.presentation.panel) { case PanelKind.Dedicated: this.sameTaskTerminals[task._id] = terminal.id.toString(); @@ -347,6 +359,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { onData.dispose(); onExit.dispose(); delete this.activeTasks[task._id]; + this.emit(TaskSystemEvents.Changed); switch (task.command.presentation.panel) { case PanelKind.Dedicated: this.sameTaskTerminals[task._id] = terminal.id.toString(); @@ -372,6 +385,7 @@ export class TerminalTaskSystem extends EventEmitter implements ITaskSystem { this.terminalService.showPanel(task.command.presentation.focus); } this.activeTasks[task._id] = { terminal, task, promise }; + this.emit(TaskSystemEvents.Changed); return promise.then((summary) => { try { let telemetryEvent: TelemetryEvent = { diff --git a/src/vs/workbench/parts/tasks/node/processTaskSystem.ts b/src/vs/workbench/parts/tasks/node/processTaskSystem.ts index da8779d160b..ed4a91d2d4e 100644 --- a/src/vs/workbench/parts/tasks/node/processTaskSystem.ts +++ b/src/vs/workbench/parts/tasks/node/processTaskSystem.ts @@ -90,6 +90,11 @@ export class ProcessTaskSystem extends EventEmitter implements ITaskSystem { return this.executeTask(task); } + public revealTask(task: Task): boolean { + this.showOutput(); + return true; + } + public hasErrors(value: boolean): void { this.errorsShown = !value; } From 822d2ada4498c759c55eed4e250c8b07c94aea27 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 15:30:45 +0200 Subject: [PATCH 06/29] Minor tweaks for show running tasks --- .../electron-browser/task.contribution.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index 95d154b9836..c4bcbd6f1b2 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -1955,12 +1955,20 @@ class TaskService extends EventEmitter implements ITaskService { return; } this.getActiveTasks().then((tasks) => { - this.showQuickPick(tasks, nls.localize('TaskService.pickShowTask', 'Select the task to show its output'), false, true).then((task) => { - if (!task || !this._taskSystem) { - return; + if (tasks.length === 0) { + this.messageService.show(Severity.Info, nls.localize('TaskService.noTaskIsRunning', 'No task is running.')); + } else if (tasks.length === 1) { + if (this._taskSystem) { + this._taskSystem.revealTask(tasks[0]); } - this._taskSystem.revealTask(task); - }); + } else { + this.showQuickPick(tasks, nls.localize('TaskService.pickShowTask', 'Select the task to show its output'), false, true).then((task) => { + if (!task || !this._taskSystem) { + return; + } + this._taskSystem.revealTask(task); + }); + } }); } } From 01d8fdffdbea91a45bad0ba8255ccf3b128a3c36 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 15:34:17 +0200 Subject: [PATCH 07/29] Fixes #29920: Task shouldn't propose a problem matcher for test tasks. --- .../parts/tasks/electron-browser/task.contribution.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index c4bcbd6f1b2..cd7b6016201 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -922,6 +922,9 @@ class TaskService extends EventEmitter implements ITaskService { if (!this.canCustomize()) { return false; } + if (task.group !== void 0 && task.group !== TaskGroup.Build) { + return false; + } if (task.problemMatchers !== void 0 && task.problemMatchers.length > 0) { return false; } From 1286aa6cf87a8db16571ff4cb4330f3d0a29463a Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 10 Jul 2017 16:53:38 +0200 Subject: [PATCH 08/29] guess linux file paths, #28492 --- build/gulpfile.vscode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index be9df9d57a4..7a27b2f639e 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -391,8 +391,8 @@ function snapshotTask(platform, arch) { startupBlobFilepath = path.join(destination, 'snapshot_blob.bin') } else if (platform === 'linux') { - // TODO - return () => { }; + loaderInputFilepath = path.join(destination, 'resources/app/out/vs/loader.js'); + startupBlobFilepath = path.join(destination, 'snapshot_blob.bin') } return () => { From 5d024c863a1b5ff9813f8ab5645679feaccc2a00 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Mon, 10 Jul 2017 17:29:34 +0200 Subject: [PATCH 09/29] Fixes #29611: Polish: Adapt task is already running message to refer to the Task menu --- .../parts/tasks/electron-browser/task.contribution.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts index cd7b6016201..c1850846978 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/task.contribution.ts @@ -1195,9 +1195,9 @@ class TaskService extends EventEmitter implements ITaskService { let active = executeResult.active; if (active.same) { if (active.background) { - this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.background', 'The task is already active and in background mode. To terminate the task use `F1 > terminate task`')); + this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.background', 'The task \'{0}\' is already active and in background mode. To terminate it use `Terminate Task...` from the Tasks menu.', task._label)); } else { - this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.noBackground', 'The task is already active. To terminate the task use `F1 > terminate task`')); + this.messageService.show(Severity.Info, nls.localize('TaskSystem.activeSame.noBackground', 'The task \'{0}\' is already active. To terminate it use `Terminate Task...` from the Tasks menu.')); } } else { throw new TaskError(Severity.Warning, nls.localize('TaskSystem.active', 'There is already a task running. Terminate it first before executing another task.'), TaskErrors.RunningTask); From 57895611e84269c578f6502d2086398063a784a0 Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Mon, 10 Jul 2017 12:02:25 -0700 Subject: [PATCH 10/29] Add setting for passing env var to terminal. #14973 --- .../workbench/parts/terminal/common/terminal.ts | 1 + .../electron-browser/terminal.contribution.ts | 15 +++++++++++++++ .../terminal/electron-browser/terminalInstance.ts | 4 +++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 449cf29d2fc..e4e393852fa 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -67,6 +67,7 @@ export interface ITerminalConfiguration { commandsToSkipShell: string[]; cwd: string; confirmOnExit: boolean; + envVars: object; } export interface ITerminalConfigHelper { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index 3995aacb60c..ef8a76358aa 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -197,6 +197,21 @@ configurationRegistry.registerConfiguration({ DeleteWordLeftTerminalAction.ID, DeleteWordRightTerminalAction.ID ].sort() + }, + 'terminal.integrated.envVars.osx': { + 'description': nls.localize('terminal.integrated.envVars.osx', "Object with environment variables that will be passed to the terminal on OS X"), + 'type': 'object', + 'default': {} + }, + 'terminal.integrated.envVars.linux': { + 'description': nls.localize('terminal.integrated.envVars.linux', "Object with environment variables that will be passed to the terminal on Linux"), + 'type': 'object', + 'default': {} + }, + 'terminal.integrated.envVars.windows': { + 'description': nls.localize('terminal.integrated.envVars.windows', "Object with environment variables that will be passed to the terminal on Windows"), + 'type': 'object', + 'default': {} } } }); diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index bd1c9448be5..7738e81cb3d 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -511,7 +511,9 @@ export class TerminalInstance implements ITerminalInstance { this._configHelper.mergeDefaultShellPathAndArgs(shell); } this._initialCwd = this._getCwd(this._shellLaunchConfig, this._historyService.getLastActiveWorkspaceRoot()); - const env = TerminalInstance.createTerminalEnv(process.env, shell, this._initialCwd, locale, this._cols, this._rows); + const platformKey = platform.isWindows ? 'windows' : platform.isMacintosh ? 'osx' : 'linux'; + const envFromConfig = { ...process.env, ...this._configHelper.config.envVars[platformKey] }; + const env = TerminalInstance.createTerminalEnv(envFromConfig, shell, this._initialCwd, locale, this._cols, this._rows); this._title = shell.name || ''; this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], { env, From 6f5fd39b658e215458ebff934736b24aa790ca59 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Mon, 10 Jul 2017 21:06:31 +0200 Subject: [PATCH 11/29] explorer - always expand single root folder --- src/vs/workbench/parts/files/browser/views/explorerView.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/files/browser/views/explorerView.ts b/src/vs/workbench/parts/files/browser/views/explorerView.ts index 73ee94ee631..357105eb10a 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerView.ts +++ b/src/vs/workbench/parts/files/browser/views/explorerView.ts @@ -722,10 +722,12 @@ export class ExplorerView extends CollapsibleView { const rootAndTargets = { root, resource: root.resource, options: { resolveTo: [] } }; targetsToResolve.push(rootAndTargets); }); - let targetsToExpand: URI[] = []; + let targetsToExpand: URI[] = []; if (this.settings[ExplorerView.MEMENTO_EXPANDED_FOLDER_RESOURCES]) { targetsToExpand = this.settings[ExplorerView.MEMENTO_EXPANDED_FOLDER_RESOURCES].map((e: string) => URI.parse(e)); + } else if (this.model.roots.length === 1) { + targetsToExpand = this.model.roots.map(root => root.resource); // always expand single root folder } // First time refresh: Receive target through active editor input or selection and also include settings from previous session From 597f8e87dc89d40b9f27a0c8dd6a6743471075b5 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 10 Jul 2017 12:45:49 -0700 Subject: [PATCH 12/29] Fix terminal find widget over selection Fixes #29788 --- src/vs/editor/contrib/find/browser/simpleFindWidget.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vs/editor/contrib/find/browser/simpleFindWidget.css b/src/vs/editor/contrib/find/browser/simpleFindWidget.css index 1deb6371583..b8323493886 100644 --- a/src/vs/editor/contrib/find/browser/simpleFindWidget.css +++ b/src/vs/editor/contrib/find/browser/simpleFindWidget.css @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ .monaco-workbench .simple-find-part { + z-index: 10; position: absolute; top: -40px; right: 28px; From 96157e5573ce9b9a1fa593ab3646ac0732764a0a Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 10 Jul 2017 12:51:00 -0700 Subject: [PATCH 13/29] Shrink terminal find widget to max terminal width (#30348) * Shrink terminal find widget Shrink the terminal find widget to fit within the max terminal size * Added padding * Match current size --- src/vs/editor/contrib/find/browser/simpleFindWidget.css | 6 ++++++ src/vs/editor/contrib/find/browser/simpleFindWidget.ts | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/editor/contrib/find/browser/simpleFindWidget.css b/src/vs/editor/contrib/find/browser/simpleFindWidget.css index b8323493886..c4e79f0eea3 100644 --- a/src/vs/editor/contrib/find/browser/simpleFindWidget.css +++ b/src/vs/editor/contrib/find/browser/simpleFindWidget.css @@ -11,6 +11,8 @@ display: flex; padding: 4px; align-items: center; + width: 220px; + max-width: calc(100% - 28px - 28px - 8px); -webkit-transition: top 200ms linear; -o-transition: top 200ms linear; @@ -23,6 +25,10 @@ top: 0; } +.monaco-workbench .simple-find-part .monaco-findInput { + flex: 1; +} + /* Temporarily we don't show match numbers */ .monaco-workbench .simple-find-part .monaco-findInput .controls { display: none; diff --git a/src/vs/editor/contrib/find/browser/simpleFindWidget.ts b/src/vs/editor/contrib/find/browser/simpleFindWidget.ts index 13dd6964817..cdf0a0f223d 100644 --- a/src/vs/editor/contrib/find/browser/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/browser/simpleFindWidget.ts @@ -92,7 +92,6 @@ export abstract class SimpleFindWidget extends Widget { ) { super(); this._findInput = this._register(new FindInput(null, this._contextViewService, { - width: 155, label: NLS_FIND_INPUT_LABEL, placeholder: NLS_FIND_INPUT_PLACEHOLDER, })); From 9c82ae899c79de07413af7cdbe262dbe4550abd0 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 10 Jul 2017 12:55:45 -0700 Subject: [PATCH 14/29] Set TERM_PROGRAM in terminal (#30346) * Set TERM_PROGRAM in terminal Fixes #29426 Sets the TERM_PROGRAM and TERM_PROGRAM_VERSION environment variables for the integrated terminal * Use constant name for TERM_PROGRAM --- .../parts/terminal/electron-browser/terminalInstance.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index bd1c9448be5..b946d869c6d 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -34,6 +34,7 @@ import { scrollbarSliderBackground, scrollbarSliderHoverBackground, scrollbarSli import { TPromise } from 'vs/base/common/winjs.base'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; +import pkg from 'vs/platform/node/package'; /** The amount of time to consider terminal errors to be related to the launch */ const LAUNCHING_DURATION = 500; @@ -665,6 +666,8 @@ export class TerminalInstance implements ITerminalInstance { const env = shell.env ? shell.env : TerminalInstance._cloneEnv(parentEnv); env['PTYPID'] = process.pid.toString(); env['PTYSHELL'] = shell.executable; + env['TERM_PROGRAM'] = 'vscode'; + env['TERM_PROGRAM_VERSION'] = pkg.version; if (shell.args) { if (typeof shell.args === 'string') { env[`PTYSHELLCMDLINE`] = shell.args; From 6a1c8f1f3dcad873e1ad043050792859c6f6f559 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Mon, 10 Jul 2017 13:53:06 -0700 Subject: [PATCH 15/29] Preserve '\n' (fixes #26786) --- .../parts/terminal/electron-browser/terminalInstance.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index b946d869c6d..ab9fa90d642 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -475,7 +475,8 @@ export class TerminalInstance implements ITerminalInstance { } private _sanitizeInput(data: any) { - return typeof data === 'string' ? data.replace(TerminalInstance.WINDOWS_EOL_REGEX, '\r') : data; + // Use '\r' to simulate typing on paste (#22887), but keep '\n' when standalone to pass on Ctrl + J (#26786). + return typeof data === 'string' && data !== '\n' ? data.replace(TerminalInstance.WINDOWS_EOL_REGEX, '\r') : data; } protected _getCwd(shell: IShellLaunchConfig, root: Uri): string { From 5607d6b36548950fa5cc8b63e7cd5874b1415e29 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 10 Jul 2017 14:05:07 -0700 Subject: [PATCH 16/29] Seed terminal find widget with current selection (#30351) * Seed terminal find widget with current selection Fixes #29712 Use the current selection as the search when we first show the find widget for the terminal * Making requested changes --- src/vs/editor/contrib/find/browser/simpleFindWidget.ts | 6 +++++- src/vs/workbench/parts/terminal/common/terminal.ts | 5 +++++ .../parts/terminal/electron-browser/terminalInstance.ts | 4 ++++ .../parts/terminal/electron-browser/terminalPanel.ts | 7 ++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/vs/editor/contrib/find/browser/simpleFindWidget.ts b/src/vs/editor/contrib/find/browser/simpleFindWidget.ts index cdf0a0f223d..404da3a75ca 100644 --- a/src/vs/editor/contrib/find/browser/simpleFindWidget.ts +++ b/src/vs/editor/contrib/find/browser/simpleFindWidget.ts @@ -194,7 +194,11 @@ export abstract class SimpleFindWidget extends Widget { return this._domNode; } - public reveal(): void { + public reveal(initialInput?: string): void { + if (initialInput) { + this._findInput.setValue(initialInput); + } + if (this._isVisible) { this._findInput.select(); return; diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 449cf29d2fc..3148eb3aaaf 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -232,6 +232,11 @@ export interface ITerminalInstance { */ copySelection(): void; + /** + * Current selection in the terminal. + */ + readonly selection: string | undefined; + /** * Clear current selection. */ diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index b946d869c6d..2dcfd8726fa 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -344,6 +344,10 @@ export class TerminalInstance implements ITerminalInstance { } } + get selection(): string | undefined { + return this.hasSelection() ? this._xterm.getSelection() : undefined; + } + public clearSelection(): void { this._xterm.clearSelection(); } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index cd8300d6b54..1b550324c4c 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -159,7 +159,12 @@ export class TerminalPanel extends Panel { } public focusFindWidget() { - this._findWidget.reveal(); + const activeInstance = this._terminalService.getActiveInstance(); + if (activeInstance && activeInstance.hasSelection()) { + this._findWidget.reveal(activeInstance.selection); + } else { + this._findWidget.reveal(); + } } public hideFindWidget() { From 848c655be762d28273c1ce04bec145ebecb0210e Mon Sep 17 00:00:00 2001 From: Ramya Achutha Rao Date: Mon, 10 Jul 2017 14:05:45 -0700 Subject: [PATCH 17/29] Update desc and strong type terminal env setting #14973 --- src/vs/workbench/parts/terminal/common/terminal.ts | 6 +++++- .../electron-browser/terminal.contribution.ts | 12 ++++++------ .../terminal/electron-browser/terminalInstance.ts | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index e4e393852fa..3b92d8d0dc3 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -67,7 +67,11 @@ export interface ITerminalConfiguration { commandsToSkipShell: string[]; cwd: string; confirmOnExit: boolean; - envVars: object; + env: { + linux: { [key: string]: string }; + osx: { [key: string]: string }; + windows: { [key: string]: string }; + }; } export interface ITerminalConfigHelper { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index ef8a76358aa..1759c679e1d 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -198,18 +198,18 @@ configurationRegistry.registerConfiguration({ DeleteWordRightTerminalAction.ID ].sort() }, - 'terminal.integrated.envVars.osx': { - 'description': nls.localize('terminal.integrated.envVars.osx', "Object with environment variables that will be passed to the terminal on OS X"), + 'terminal.integrated.env.osx': { + 'description': nls.localize('terminal.integrated.env.osx', "Object with environment variables that will be added to the VS Code process to be used by the terminal on OS X"), 'type': 'object', 'default': {} }, - 'terminal.integrated.envVars.linux': { - 'description': nls.localize('terminal.integrated.envVars.linux', "Object with environment variables that will be passed to the terminal on Linux"), + 'terminal.integrated.env.linux': { + 'description': nls.localize('terminal.integrated.env.linux', "Object with environment variables that will be added to the VS Code process to be used by the terminal on Linux"), 'type': 'object', 'default': {} }, - 'terminal.integrated.envVars.windows': { - 'description': nls.localize('terminal.integrated.envVars.windows', "Object with environment variables that will be passed to the terminal on Windows"), + 'terminal.integrated.env.windows': { + 'description': nls.localize('terminal.integrated.env.windows', "Object with environment variables that will be added to the VS Code process to be used by the terminal on Windows"), 'type': 'object', 'default': {} } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index 7738e81cb3d..39101b427dd 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -512,7 +512,7 @@ export class TerminalInstance implements ITerminalInstance { } this._initialCwd = this._getCwd(this._shellLaunchConfig, this._historyService.getLastActiveWorkspaceRoot()); const platformKey = platform.isWindows ? 'windows' : platform.isMacintosh ? 'osx' : 'linux'; - const envFromConfig = { ...process.env, ...this._configHelper.config.envVars[platformKey] }; + const envFromConfig = { ...process.env, ...this._configHelper.config.env[platformKey] }; const env = TerminalInstance.createTerminalEnv(envFromConfig, shell, this._initialCwd, locale, this._cols, this._rows); this._title = shell.name || ''; this._process = cp.fork(Uri.parse(require.toUrl('bootstrap')).fsPath, ['--type=terminal'], { From daba6545b9c1300e5a018519c54d986ce8d3984d Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 10 Jul 2017 14:12:07 -0700 Subject: [PATCH 18/29] Delete html zone experiment code --- .../parts/html/browser/html.contribution.ts | 44 --------- .../parts/html/browser/htmlEditorZone.ts | 95 ------------------- 2 files changed, 139 deletions(-) delete mode 100644 src/vs/workbench/parts/html/browser/htmlEditorZone.ts diff --git a/src/vs/workbench/parts/html/browser/html.contribution.ts b/src/vs/workbench/parts/html/browser/html.contribution.ts index 651e0d6b572..fd782f55d8f 100644 --- a/src/vs/workbench/parts/html/browser/html.contribution.ts +++ b/src/vs/workbench/parts/html/browser/html.contribution.ts @@ -18,9 +18,6 @@ import { EditorDescriptor } from 'vs/workbench/browser/parts/editor/baseEditor'; import { IEditorRegistry, Extensions as EditorExtensions } from 'vs/workbench/common/editor'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; -import { isCommonCodeEditor, ICommonCodeEditor } from 'vs/editor/common/editorCommon'; -import { HtmlZoneController } from './htmlEditorZone'; -import { ITextModelService } from 'vs/editor/common/services/resolverService'; // --- Register Editor (Registry.as(EditorExtensions.Editors)).registerEditor(new EditorDescriptor(HtmlPreviewPart.ID, @@ -31,47 +28,6 @@ import { ITextModelService } from 'vs/editor/common/services/resolverService'; // --- Register Commands -interface HtmlZoneParams { - editorPosition: EditorPosition; - lineNumber: number; - resource: URI; -} - -let warn = true; - -CommandsRegistry.registerCommand('_workbench.htmlZone', function (accessor: ServicesAccessor, params: HtmlZoneParams) { - - if (warn) { - console.warn(`'_workbench.htmlZone' is an EXPERIMENTAL feature and therefore subject to CHANGE and REMOVAL without notice.`); - warn = false; - } - - let codeEditor: ICommonCodeEditor; - for (const editor of accessor.get(IWorkbenchEditorService).getVisibleEditors()) { - if (editor.position === params.editorPosition) { - const control = editor.getControl(); - if (isCommonCodeEditor(control)) { - codeEditor = control; - } - } - } - - if (!codeEditor) { - console.warn('NO matching editor found'); - return undefined; - } - - const textModelResolverService = accessor.get(ITextModelService); - - return textModelResolverService.createModelReference(params.resource).then(ref => { - const model = ref.object; - const contents = model.textEditorModel.getValue(); - ref.dispose(); - - HtmlZoneController.getInstance(codeEditor).addZone(params.lineNumber, contents); - }); -}); - const defaultPreviewHtmlOptions: HtmlInputOptions = { allowScripts: true, allowSvgs: true diff --git a/src/vs/workbench/parts/html/browser/htmlEditorZone.ts b/src/vs/workbench/parts/html/browser/htmlEditorZone.ts deleted file mode 100644 index 8fa3a7449b7..00000000000 --- a/src/vs/workbench/parts/html/browser/htmlEditorZone.ts +++ /dev/null @@ -1,95 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -'use strict'; - -import { IEditorContribution, ICommonCodeEditor } from 'vs/editor/common/editorCommon'; -import { ICodeEditor, IViewZone } from 'vs/editor/browser/editorBrowser'; -import { IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { editorContribution } from 'vs/editor/browser/editorBrowserExtensions'; -import Webview from './webview'; - -class HtmlZone implements IViewZone { - - zoneId: number; - - private _domNode: HTMLElement; - private _webview: Webview; - private _disposables: IDisposable[] = []; - - constructor(public lineNumber: number, public htmlContent: string) { - - } - - dispose(): void { - dispose(this._disposables); - } - - get domNode(): HTMLElement { - if (!this._domNode) { - this._domNode = document.createElement('div'); - - const observer = new MutationObserver(_ => this._onVisibilityChanged()); - observer.observe(this._domNode, { attributes: true, attributeFilter: ['monaco-visible-view-zone'] }); - this._disposables.push({ dispose: () => observer.disconnect() }); - } - - return this._domNode; - } - - private _onVisibilityChanged(): void { - if (this._domNode.hasAttribute('monaco-visible-view-zone') && !this._webview) { - this._webview = new Webview(this.domNode, document.querySelector('.monaco-editor'), null, null); - this._disposables.push(this._webview); - this._webview.contents = [this.htmlContent]; - } - } - - get afterLineNumber(): number { - return this.lineNumber; - } - - get heightInLines(): number { - return 6; - } - - get suppressMouseDown(): boolean { - return false; - } -} - -@editorContribution -export class HtmlZoneController implements IEditorContribution { - - static getInstance(editor: ICommonCodeEditor): HtmlZoneController { - return editor.getContribution('htmlZoneContribution'); - } - - private _editor: ICodeEditor; - private _zones: HtmlZone[] = []; - - constructor(editor: ICodeEditor) { - this._editor = editor; - this._editor.onDidChangeModel(() => this._zones = dispose(this._zones)); - } - - getId(): string { - return 'htmlZoneContribution'; - } - - dispose(): void { - dispose(this._zones); - } - - addZone(lineNumber: number, htmlContents: string): void { - const zone = new HtmlZone(lineNumber, htmlContents); - this._zones.push(zone); - - this._editor.changeViewZones(accessor => { - zone.zoneId = accessor.addZone(zone); - console.log('ADDED new zone #', zone.zoneId); - }); - } -} From 442615d2041ff31fe3b5981a648d5052f9fe52ac Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Mon, 10 Jul 2017 14:48:06 -0700 Subject: [PATCH 19/29] Preserve all key presses, sanitize sendText() --- .../terminal/electron-browser/terminalInstance.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts index ab9fa90d642..49c97aea430 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts @@ -49,7 +49,7 @@ class StandardTerminalProcessFactory implements ITerminalProcessFactory { } export class TerminalInstance implements ITerminalInstance { - private static readonly WINDOWS_EOL_REGEX = /\r?\n/g; + private static readonly EOL_REGEX = /\r?\n/g; private static _terminalProcessFactory: ITerminalProcessFactory = new StandardTerminalProcessFactory(); private static _lastKnownDimensions: Dimension = null; @@ -218,7 +218,7 @@ export class TerminalInstance implements ITerminalInstance { // Send data if the pty is ready this._process.send({ event: 'input', - data: this._sanitizeInput(data) + data }); } else { // If the pty is not ready, queue the data received from @@ -415,7 +415,8 @@ export class TerminalInstance implements ITerminalInstance { public sendText(text: string, addNewLine: boolean): void { this._processReady.then(() => { - text = this._sanitizeInput(text); + // Normalize line endings to 'enter' press. + text = text.replace(TerminalInstance.EOL_REGEX, '\r'); if (addNewLine && text.substr(text.length - 1) !== '\r') { text += '\r'; } @@ -474,11 +475,6 @@ export class TerminalInstance implements ITerminalInstance { this._terminalHasTextContextKey.set(isActive && this.hasSelection()); } - private _sanitizeInput(data: any) { - // Use '\r' to simulate typing on paste (#22887), but keep '\n' when standalone to pass on Ctrl + J (#26786). - return typeof data === 'string' && data !== '\n' ? data.replace(TerminalInstance.WINDOWS_EOL_REGEX, '\r') : data; - } - protected _getCwd(shell: IShellLaunchConfig, root: Uri): string { if (shell.cwd) { return shell.cwd; @@ -537,7 +533,7 @@ export class TerminalInstance implements ITerminalInstance { if (this._preLaunchInputQueue.length > 0) { this._process.send({ event: 'input', - data: this._sanitizeInput(this._preLaunchInputQueue) + data: this._preLaunchInputQueue }); this._preLaunchInputQueue = null; } From 618fcaad9f14694ae9d11c735a2b0332a5ee62e5 Mon Sep 17 00:00:00 2001 From: Andre Weinand Date: Tue, 11 Jul 2017 00:48:48 +0200 Subject: [PATCH 20/29] incorporate debug API feedback --- src/vs/vscode.proposed.d.ts | 33 ++++++++++++++++--- .../mainThreadDebugService.ts | 3 +- src/vs/workbench/api/node/extHost.api.impl.ts | 3 ++ src/vs/workbench/api/node/extHost.protocol.ts | 2 +- .../workbench/api/node/extHostDebugService.ts | 28 ++++++++-------- 5 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 65ddf419bb9..9f210280fa4 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -190,6 +190,26 @@ declare module 'vscode' { onData(callback: (data: string) => any): void; } + /** + * A custom Debug Adapter Protocol event received from a [debug session](#DebugSession). + */ + export interface DebugSessionCustomEvent { + /** + * The [debug session](#DebugSession) for which the custom event was received. + */ + session: DebugSession; + + /** + * Type of event. + */ + event: string; + + /** + * Event specific information. + */ + body?: any; + } + export namespace debug { /** @@ -197,7 +217,7 @@ declare module 'vscode' { * represented by the debug action floating window or the one currently shown in the drop down menu of the debug action floating window. * If no debug session is active, the value is `undefined`. */ - export const activeDebugSession: DebugSession | undefined; + export let activeDebugSession: DebugSession | undefined; /** * An [event](#Event) which fires when the [active debug session](#debug.activeDebugSession) @@ -205,16 +225,19 @@ declare module 'vscode' { * to `undefined`. */ export const onDidChangeActiveDebugSession: Event; + + /** + * An [event](#Event) which fires when a custom DAP event is received from the debug session. + */ + export const onDidReceiveDebugSessionCustomEvent: Event; } export interface DebugSession { /** - * Experimental API that allows hooking custom events from the debug session's debug adapter. - * - * @param callback The callback that is triggered when a custom event is received from the debug adapter. + * The debug session's ID. */ - onCustomEvent(callback: (event: any) => void): void; + readonly id: string; } } diff --git a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts index 22d4720b00f..f79a00d97e6 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadDebugService.ts @@ -33,7 +33,8 @@ export class MainThreadDebugService extends MainThreadDebugServiceShape { })); this._toDispose.push(debugService.onDidCustomEvent(event => { if (event.body && event.body.sessionId) { - this._proxy.$acceptDebugSessionCustomEvent(event.body.sessionId, event); + const process = this.debugService.findProcessByUUID(event.body.sessionId); // TODO + this._proxy.$acceptDebugSessionCustomEvent(event.body.sessionId, process.configuration.type, process.configuration.name, event); } })); } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 2155bc87c32..904e8946333 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -475,6 +475,9 @@ export function createApiFactory( }, onDidChangeActiveDebugSession: proposedApiFunction(extension, (listener, thisArg?, disposables?) => { return extHostDebugService.onDidChangeActiveDebugSession(listener, thisArg, disposables); + }), + onDidReceiveDebugSessionCustomEvent: proposedApiFunction(extension, (listener, thisArg?, disposables?) => { + return extHostDebugService.onDidReceiveDebugSessionCustomEvent(listener, thisArg, disposables); }) }; diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 4d0d6607be6..9b626f9c5c2 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -503,7 +503,7 @@ export abstract class ExtHostTaskShape { export abstract class ExtHostDebugServiceShape { $acceptDebugSessionTerminated(id: DebugSessionUUID, type: string, name: string): void { throw ni(); } $acceptDebugSessionActiveChanged(id: DebugSessionUUID | undefined, type?: string, name?: string): void { throw ni(); } - $acceptDebugSessionCustomEvent(id: DebugSessionUUID, event: any): void { throw ni(); } + $acceptDebugSessionCustomEvent(id: DebugSessionUUID, type: string, name: string, event: any): void { throw ni(); } } // --- proxy identifiers diff --git a/src/vs/workbench/api/node/extHostDebugService.ts b/src/vs/workbench/api/node/extHostDebugService.ts index fb2ab925368..b4eaf56447d 100644 --- a/src/vs/workbench/api/node/extHostDebugService.ts +++ b/src/vs/workbench/api/node/extHostDebugService.ts @@ -27,11 +27,16 @@ export class ExtHostDebugService extends ExtHostDebugServiceShape { private _activeDebugSession: ExtHostDebugSession | undefined; get activeDebugSession(): ExtHostDebugSession | undefined { return this._activeDebugSession; } + private _onDidReceiveDebugSessionCustomEvent: Emitter; + get onDidReceiveDebugSessionCustomEvent(): Event { return this._onDidReceiveDebugSessionCustomEvent.event; } + + constructor(threadService: IThreadService) { super(); this._onDidTerminateDebugSession = new Emitter(); this._onDidChangeActiveDebugSession = new Emitter(); + this._onDidReceiveDebugSessionCustomEvent = new Emitter(); this._debugServiceProxy = threadService.get(MainContext.MainThreadDebugService); } @@ -70,12 +75,19 @@ export class ExtHostDebugService extends ExtHostDebugServiceShape { this._onDidChangeActiveDebugSession.fire(this._activeDebugSession); } - public $acceptDebugSessionCustomEvent(id: DebugSessionUUID, event: any): void { + public $acceptDebugSessionCustomEvent(id: DebugSessionUUID, type: string, name: string, event: any): void { let debugSession = this._debugSessions.get(id); - if (debugSession) { - debugSession._onCustomEvent(event); + if (!debugSession) { + debugSession = new ExtHostDebugSession(this._debugServiceProxy, id, type, name); + this._debugSessions.set(id, debugSession); } + const ee: vscode.DebugSessionCustomEvent = { + session: debugSession, + event: event.event, + body: event.body + }; + this._onDidReceiveDebugSessionCustomEvent.fire(ee); } } @@ -88,8 +100,6 @@ export class ExtHostDebugSession implements vscode.DebugSession { private _type: string; private _name: string; - private _onCustomEventCallback: (event: any) => void; - constructor(proxy: MainThreadDebugServiceShape, id: DebugSessionUUID, type: string, name: string) { this._debugServiceProxy = proxy; this._id = id; @@ -112,12 +122,4 @@ export class ExtHostDebugSession implements vscode.DebugSession { public customRequest(command: string, args: any): Thenable { return this._debugServiceProxy.$customDebugAdapterRequest(this._id, command, args); } - - public onCustomEvent(callback: (event: any) => void): void { - this._onCustomEventCallback = callback; - } - - public _onCustomEvent(event: any): void { - this._onCustomEventCallback(event); - } } From fd5f321d129aa4c90a13d8dc15c9aa73b49a70bf Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Mon, 10 Jul 2017 17:48:08 -0700 Subject: [PATCH 21/29] Adding mjbvz for JavaScript and TypeScript --- .github/classifier.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/classifier.yml b/.github/classifier.yml index eba62b735d8..1e2548bcb8d 100644 --- a/.github/classifier.yml +++ b/.github/classifier.yml @@ -30,7 +30,7 @@ i18n: [], install-update: [], integrated-terminal: [ Tyriar ], - javascript: [], + javascript: [ mjbvz ], json: [], languages basic: [], markdown: [], @@ -39,7 +39,7 @@ search: [ roblourens ], snippets: [ jrieken ], tasks: [], - typescript: [], + typescript: [ mjbvz ], workbench: [ bpasero ], } } From fdc02daf1f674d8f82b5485eeb31d25a7023afe4 Mon Sep 17 00:00:00 2001 From: Christof Marti Date: Mon, 10 Jul 2017 17:54:09 -0700 Subject: [PATCH 22/29] Add rebornix for editor --- .github/classifier.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/classifier.yml b/.github/classifier.yml index 1e2548bcb8d..cbce466994d 100644 --- a/.github/classifier.yml +++ b/.github/classifier.yml @@ -7,7 +7,7 @@ api: [], css-less-sass: [], debug: [ weinand ], - editor: [], + editor: [ rebornix ], editor-brackets: [], editor-clipboard: [], editor-colors: [], From 2ae26b22474ea8028cac2483fc893dc708350d9f Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Tue, 11 Jul 2017 09:42:05 +0200 Subject: [PATCH 23/29] more targets with snapshots, #28492 --- build/gulpfile.vscode.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index 7a27b2f639e..feff102ea13 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -419,9 +419,12 @@ function snapshotTask(platform, arch) { } } +gulp.task('vscode-win32-ia32-snapshots', ['vscode-win32-ia32-min'], snapshotTask('win32', 'ia32')); +gulp.task('vscode-win32-x64-snapshots', ['vscode-win32-x64-min'], snapshotTask('win32', 'x64')); gulp.task('vscode-darwin-snapshots', ['vscode-darwin-min'], snapshotTask('darwin', undefined)); -gulp.task('vscode-win32-ia32-snapshots', ['vscode-win32-ia32'], snapshotTask('win32', 'ia32')); -gulp.task('vscode-win32-x64-snapshots', ['vscode-win32-x64'], snapshotTask('win32', 'x64')); +gulp.task('vscode-linux-ia32-snapshots', ['vscode-linux-ia32-min'], snapshotTask('linux', 'ia32')); +gulp.task('vscode-linux-x64-snapshots', ['vscode-linux-x64-min'], snapshotTask('linux', 'x64')); +gulp.task('vscode-linux-arm-snapshots', ['vscode-linux-arm-min'], snapshotTask('linux', 'arm')); // Transifex Localizations From d312f2b940d48b855c2aebbb4edec2b02fa263f0 Mon Sep 17 00:00:00 2001 From: Erich Gamma Date: Tue, 11 Jul 2017 11:02:08 +0200 Subject: [PATCH 24/29] Add a schema association for babelrc #30380 --- extensions/javascript/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/javascript/package.json b/extensions/javascript/package.json index b8c76ba64aa..b0c0aed3722 100644 --- a/extensions/javascript/package.json +++ b/extensions/javascript/package.json @@ -102,14 +102,14 @@ "fileMatch": "bower.json", "url": "http://json.schemastore.org/bower" }, - { - "fileMatch": ".bower.json", - "url": "http://json.schemastore.org/bower" - }, { "fileMatch": ".bowerrc", "url": "http://json.schemastore.org/bowerrc" }, + { + "fileMatch": ".babelrc", + "url": "http://json.schemastore.org/babelrc" + }, { "fileMatch": "jsconfig.json", "url": "http://json.schemastore.org/jsconfig" From 3e124d8eba63cf71ffead137847f94ac378af669 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 11 Jul 2017 17:48:27 +0800 Subject: [PATCH 25/29] [php] update grammar --- extensions/php/syntaxes/php.tmLanguage.json | 47 +++++++---- .../php/test/colorize-results/test_php.json | 80 +++++++++++++++++-- 2 files changed, 104 insertions(+), 23 deletions(-) diff --git a/extensions/php/syntaxes/php.tmLanguage.json b/extensions/php/syntaxes/php.tmLanguage.json index 8b457cf3c6f..aa2c4165302 100644 --- a/extensions/php/syntaxes/php.tmLanguage.json +++ b/extensions/php/syntaxes/php.tmLanguage.json @@ -4,7 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/atom/language-php/commit/e1290265f3d68316347e0ab2665686016b4b24b7", + "version": "https://github.com/atom/language-php/commit/16d8c3ea6f30c808e270a7be02a33e27ed19eed0", "scopeName": "text.html.php", "name": "PHP", "fileTypes": [ @@ -449,6 +449,10 @@ { "include": "#comments" }, + { + "match": ",", + "name": "punctuation.separator.delimiter.php" + }, { "begin": "(?xi)\n(array) # Typehint\n\\s+((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference\n\\s*(=)\\s*(array)\\s*(\\() # Default value", "beginCaptures": { @@ -535,21 +539,34 @@ } }, { - "begin": "(?xi)\n([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Typehinted class name\n\\s*((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference", + "begin": "(?xi)\n(\\\\?(?:[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)*) # Optional namespace\n([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Typehinted class name\n\\s+((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference", "beginCaptures": { "1": { - "name": "storage.type.php" + "name": "support.other.namespace.php", + "patterns": [ + { + "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*", + "name": "storage.type.php" + }, + { + "match": "\\\\", + "name": "punctuation.separator.inheritance.php" + } + ] }, "2": { - "name": "variable.other.php" + "name": "storage.type.php" }, "3": { - "name": "storage.modifier.reference.php" + "name": "variable.other.php" }, "4": { - "name": "keyword.operator.variadic.php" + "name": "storage.modifier.reference.php" }, "5": { + "name": "keyword.operator.variadic.php" + }, + "6": { "name": "punctuation.definition.variable.php" } }, @@ -1760,13 +1777,10 @@ "name": "keyword.control.exception.php" }, { - "begin": "(?i)\\b(function)\\s*(&)?\\s*(?=\\()", + "begin": "(?i)\\b(function)\\s*(?=\\()", "beginCaptures": { "1": { "name": "storage.type.function.php" - }, - "2": { - "name": "storage.modifier.reference.php" } }, "end": "(?={)", @@ -1829,7 +1843,7 @@ ] }, { - "begin": "(?x)\n((?:(?:final|abstract|public|private|protected|static)\\s+)*)\n(function)\n\\s*(&)?\\s*\n(?i:\n (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|\n clone|set_state|sleep|wakeup|autoload|invoke|callStatic))\n |([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n)\n\\s*(\\()", + "begin": "(?x)\n((?:(?:final|abstract|public|private|protected|static)\\s+)*)\n(function)\\s+\n(?i:\n (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|\n clone|set_state|sleep|wakeup|autoload|invoke|callStatic))\n |([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n)\n\\s*(\\()", "beginCaptures": { "1": { "patterns": [ @@ -1843,15 +1857,12 @@ "name": "storage.type.function.php" }, "3": { - "name": "storage.modifier.reference.php" - }, - "4": { "name": "support.function.magic.php" }, - "5": { + "4": { "name": "entity.name.function.php" }, - "6": { + "5": { "name": "punctuation.definition.parameters.begin.bracket.round.php" } }, @@ -2099,6 +2110,10 @@ }, { "include": "#constants" + }, + { + "match": ",", + "name": "punctuation.separator.delimiter.php" } ] }, diff --git a/extensions/php/test/colorize-results/test_php.json b/extensions/php/test/colorize-results/test_php.json index 997b0b2fbad..dcbe3ab7cfa 100644 --- a/extensions/php/test/colorize-results/test_php.json +++ b/extensions/php/test/colorize-results/test_php.json @@ -550,7 +550,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", @@ -594,7 +605,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", @@ -638,7 +660,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", @@ -683,7 +716,7 @@ }, { "c": ",", - "t": "text.html.php meta.embedded.block.php source.php meta.array.php", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -737,7 +770,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", @@ -781,7 +825,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", @@ -825,7 +880,18 @@ } }, { - "c": ", ", + "c": ",", + "t": "text.html.php meta.embedded.block.php source.php meta.array.php punctuation.separator.delimiter.php", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "text.html.php meta.embedded.block.php source.php meta.array.php", "r": { "dark_plus": "default: #D4D4D4", From ad61de65fc569de88bc10c53e3e126c52de81e9d Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 11 Jul 2017 18:18:26 +0800 Subject: [PATCH 26/29] [scss] update grammar --- extensions/scss/syntaxes/scss.json | 69 +- .../scss/test/colorize-results/test_scss.json | 849 +++++++++++++----- 2 files changed, 651 insertions(+), 267 deletions(-) diff --git a/extensions/scss/syntaxes/scss.json b/extensions/scss/syntaxes/scss.json index d60a4be60ed..11ae1c1a34e 100644 --- a/extensions/scss/syntaxes/scss.json +++ b/extensions/scss/syntaxes/scss.json @@ -4,6 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], + "version": "https://github.com/atom/language-sass/commit/2d8c5f85f3be978ac8fc7a40d11b4c493385a457", "scopeName": "source.css.scss", "name": "SCSS", "fileTypes": [ @@ -67,6 +68,10 @@ }, { "include": "#at_rule_supports" + }, + { + "match": ";", + "name": "punctuation.terminator.rule.css" } ], "repository": { @@ -171,14 +176,14 @@ "begin": "\\s*((@)extend\\b)\\s*", "captures": { "1": { - "name": "keyword.control.at-rule.import.scss" + "name": "keyword.control.at-rule.extend.scss" }, "2": { "name": "punctuation.definition.keyword.scss" } }, "end": "\\s*(?=;)", - "name": "meta.at-rule.import.scss", + "name": "meta.at-rule.extend.scss", "patterns": [ { "include": "#variable" @@ -1069,7 +1074,7 @@ "name": "punctuation.definition.map.end.bracket.round.scss" } }, - "name": "meta.set.variable.map.scss", + "name": "meta.definition.variable.map.scss", "patterns": [ { "include": "#comment_block" @@ -1451,7 +1456,7 @@ } }, "selector_placeholder": { - "match": "(?x)\n(%) # Valid placeholder-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{>+~|] # - Another selector\n | /\\* # - A block comment\n)", + "match": "(?x)\n(%) # Valid placeholder-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= ; # - End of statement\n | $ # - End of the line\n | [\\s,.\\#)\\[:{>+~|] # - Another selector\n | /\\* # - A block comment\n)", "name": "entity.other.attribute-name.placeholder.css", "captures": { "1": { @@ -1646,32 +1651,48 @@ ] }, "variable_setting": { - "begin": "\\s*(\\$[A-Za-z0-9_-]+\\b)\\s*(:)\\s*", - "captures": { - "1": { - "name": "variable.scss" - }, - "2": { - "name": "punctuation.separator.key-value.scss" + "begin": "(?=\\$[\\w-]+\\s*:)", + "end": ";", + "endCaptures": { + "0": { + "name": "punctuation.terminator.rule.scss" } }, - "end": "\\s*(?=;)", - "name": "meta.set.variable.scss", + "contentName": "meta.definition.variable.scss", "patterns": [ { - "include": "#comment_block" + "match": "\\$[\\w-]+(?=\\s*:)", + "name": "variable.scss" }, { - "include": "#comment_line" - }, - { - "include": "#map" - }, - { - "include": "#property_values" - }, - { - "include": "#variable" + "begin": ":", + "beginCaptures": { + "0": { + "name": "punctuation.separator.key-value.scss" + } + }, + "end": "(?=;)", + "patterns": [ + { + "include": "#comment_block" + }, + { + "include": "#comment_line" + }, + { + "include": "#map" + }, + { + "include": "#property_values" + }, + { + "include": "#variable" + }, + { + "match": ",", + "name": "punctuation.separator.delimiter.scss" + } + ] } ] }, diff --git a/extensions/scss/test/colorize-results/test_scss.json b/extensions/scss/test/colorize-results/test_scss.json index ffcdbc7f034..961c9da0912 100644 --- a/extensions/scss/test/colorize-results/test_scss.json +++ b/extensions/scss/test/colorize-results/test_scss.json @@ -155,7 +155,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -1606,7 +1606,7 @@ } }, { - "c": " color: black;", + "c": " color: black", "t": "source.css.scss", "r": { "dark_plus": "default: #D4D4D4", @@ -1616,6 +1616,17 @@ "hc_black": "default: #FFFFFF" } }, + { + "c": ";", + "t": "source.css.scss punctuation.terminator.rule.css", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, { "c": "}", "t": "source.css.scss", @@ -2321,7 +2332,29 @@ } }, { - "c": " foo: 1px; ", + "c": " foo: 1px", + "t": "source.css.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ";", + "t": "source.css.scss punctuation.terminator.rule.css", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "source.css.scss", "r": { "dark_plus": "default: #D4D4D4", @@ -2806,7 +2839,7 @@ }, { "c": "$width", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -2817,7 +2850,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2828,7 +2861,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2839,7 +2872,7 @@ }, { "c": "5", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -2850,7 +2883,7 @@ }, { "c": "em", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.em.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css keyword.other.unit.em.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -2861,7 +2894,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2872,7 +2905,7 @@ }, { "c": "$width", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -2883,7 +2916,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2894,7 +2927,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2905,7 +2938,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.begin.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss punctuation.definition.string.begin.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -2916,7 +2949,7 @@ }, { "c": "Second width?", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -2927,7 +2960,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.end.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss punctuation.definition.string.end.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -2938,7 +2971,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -2949,7 +2982,7 @@ }, { "c": "!default", - "t": "source.css.scss meta.set.variable.scss keyword.other.default.scss", + "t": "source.css.scss meta.definition.variable.scss keyword.other.default.scss", "r": { "dark_plus": "keyword: #569CD6", "light_plus": "keyword: #0000FF", @@ -2960,7 +2993,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3015,7 +3048,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3026,7 +3059,7 @@ }, { "c": "$localvar", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3037,7 +3070,7 @@ }, { "c": ":", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3048,7 +3081,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3059,7 +3092,7 @@ }, { "c": "6", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3070,7 +3103,7 @@ }, { "c": "em", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.em.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.em.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -3081,7 +3114,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3158,7 +3191,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3169,7 +3202,7 @@ }, { "c": "$font-size", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3180,7 +3213,7 @@ }, { "c": ":", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3191,7 +3224,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3202,7 +3235,7 @@ }, { "c": "12", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3213,7 +3246,7 @@ }, { "c": "px", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -3224,7 +3257,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3235,7 +3268,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3246,7 +3279,7 @@ }, { "c": "$line-height", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3257,7 +3290,7 @@ }, { "c": ":", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3268,7 +3301,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3279,7 +3312,7 @@ }, { "c": "30", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3290,7 +3323,7 @@ }, { "c": "px", - "t": "source.css.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -3301,7 +3334,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3455,7 +3488,7 @@ }, { "c": "$name", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3466,7 +3499,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3477,7 +3510,7 @@ }, { "c": " foo", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3488,7 +3521,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3499,7 +3532,7 @@ }, { "c": "$attr", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3510,7 +3543,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3521,7 +3554,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3532,7 +3565,7 @@ }, { "c": "border", - "t": "source.css.scss meta.set.variable.scss support.constant.property-value.css", + "t": "source.css.scss meta.definition.variable.scss support.constant.property-value.css", "r": { "dark_plus": "support.constant.property-value: #CE9178", "light_plus": "support.constant.property-value: #0451A5", @@ -3543,7 +3576,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3796,7 +3829,7 @@ }, { "c": "$grid-background-column-color", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -3807,7 +3840,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3818,7 +3851,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3829,7 +3862,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3840,7 +3873,7 @@ }, { "c": "rgba", - "t": "source.css.scss meta.set.variable.scss support.function.misc.scss", + "t": "source.css.scss meta.definition.variable.scss support.function.misc.scss", "r": { "dark_plus": "support.function: #DCDCAA", "light_plus": "support.function: #795E26", @@ -3851,7 +3884,7 @@ }, { "c": "(", - "t": "source.css.scss meta.set.variable.scss punctuation.section.function.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.section.function.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3862,7 +3895,7 @@ }, { "c": "100", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3873,7 +3906,7 @@ }, { "c": ",", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.delimiter.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.delimiter.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3884,7 +3917,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3895,7 +3928,7 @@ }, { "c": "100", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3906,7 +3939,7 @@ }, { "c": ",", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.delimiter.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.delimiter.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3917,7 +3950,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3928,7 +3961,7 @@ }, { "c": "225", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3939,7 +3972,7 @@ }, { "c": ",", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.delimiter.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.delimiter.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3950,7 +3983,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3961,7 +3994,7 @@ }, { "c": "0.25", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -3972,7 +4005,7 @@ }, { "c": ")", - "t": "source.css.scss meta.set.variable.scss punctuation.section.function.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.section.function.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3983,7 +4016,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3994,7 +4027,7 @@ }, { "c": "!default", - "t": "source.css.scss meta.set.variable.scss keyword.other.default.scss", + "t": "source.css.scss meta.definition.variable.scss keyword.other.default.scss", "r": { "dark_plus": "keyword: #569CD6", "light_plus": "keyword: #0000FF", @@ -4005,7 +4038,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5380,7 +5413,7 @@ }, { "c": "$grid-width", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -5391,7 +5424,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5402,7 +5435,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5413,7 +5446,7 @@ }, { "c": "40", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -5424,7 +5457,7 @@ }, { "c": "px", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -5435,7 +5468,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5446,7 +5479,7 @@ }, { "c": "$gutter-width", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -5457,7 +5490,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5468,7 +5501,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5479,7 +5512,7 @@ }, { "c": "10", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -5490,7 +5523,7 @@ }, { "c": "px", - "t": "source.css.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.definition.variable.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -5501,7 +5534,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -5864,7 +5897,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6150,7 +6183,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6161,7 +6194,7 @@ }, { "c": "$family", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -6172,7 +6205,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6183,7 +6216,7 @@ }, { "c": " ", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6194,7 +6227,7 @@ }, { "c": "unquote", - "t": "source.css.scss meta.set.variable.scss support.function.misc.scss", + "t": "source.css.scss meta.definition.variable.scss support.function.misc.scss", "r": { "dark_plus": "support.function: #DCDCAA", "light_plus": "support.function: #795E26", @@ -6205,7 +6238,7 @@ }, { "c": "(", - "t": "source.css.scss meta.set.variable.scss punctuation.section.function.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.section.function.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6216,7 +6249,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.begin.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss punctuation.definition.string.begin.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -6227,7 +6260,7 @@ }, { "c": "Droid+Sans", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -6238,7 +6271,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.end.scss", + "t": "source.css.scss meta.definition.variable.scss string.quoted.double.scss punctuation.definition.string.end.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -6249,7 +6282,7 @@ }, { "c": ")", - "t": "source.css.scss meta.set.variable.scss punctuation.section.function.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.section.function.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6260,7 +6293,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6447,7 +6480,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -6579,7 +6612,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7360,7 +7393,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7371,7 +7404,7 @@ }, { "c": "@", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss punctuation.definition.keyword.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss punctuation.definition.keyword.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -7382,7 +7415,7 @@ }, { "c": "extend", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -7393,7 +7426,7 @@ }, { "c": " .error", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7404,7 +7437,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7844,7 +7877,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7855,7 +7888,7 @@ }, { "c": "@", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss punctuation.definition.keyword.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss punctuation.definition.keyword.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -7866,7 +7899,7 @@ }, { "c": "extend", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -7877,7 +7910,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7888,7 +7921,7 @@ }, { "c": "%", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss entity.other.attribute-name.placeholder.css punctuation.definition.entity.css", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.placeholder.css punctuation.definition.entity.css", "r": { "dark_plus": "entity.other.attribute-name: #9CDCFE", "light_plus": "entity.other.attribute-name: #FF0000", @@ -7899,7 +7932,7 @@ }, { "c": "extreme", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss entity.other.attribute-name.placeholder.css", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.placeholder.css", "r": { "dark_plus": "entity.other.attribute-name: #9CDCFE", "light_plus": "entity.other.attribute-name: #FF0000", @@ -7910,7 +7943,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -7921,7 +7954,7 @@ }, { "c": "!optional", - "t": "source.css.scss meta.property-list.scss meta.at-rule.import.scss keyword.other.optional.scss", + "t": "source.css.scss meta.property-list.scss meta.at-rule.extend.scss keyword.other.optional.scss", "r": { "dark_plus": "keyword: #569CD6", "light_plus": "keyword: #0000FF", @@ -7932,7 +7965,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8020,7 +8053,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8383,7 +8416,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8394,7 +8427,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8405,7 +8438,7 @@ }, { "c": "$x", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -8416,7 +8449,7 @@ }, { "c": ":", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8427,7 +8460,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8438,7 +8471,7 @@ }, { "c": "1", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -8449,7 +8482,7 @@ }, { "c": "px", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -8460,7 +8493,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8471,7 +8504,7 @@ }, { "c": "*", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss keyword.operator.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss keyword.operator.css", "r": { "dark_plus": "keyword.operator: #D4D4D4", "light_plus": "keyword.operator: #000000", @@ -8482,7 +8515,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8493,7 +8526,7 @@ }, { "c": "$x", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -8504,7 +8537,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8768,7 +8801,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8779,7 +8812,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8790,7 +8823,7 @@ }, { "c": "$y", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -8801,7 +8834,7 @@ }, { "c": ":", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8812,7 +8845,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8823,7 +8856,7 @@ }, { "c": "1", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -8834,7 +8867,7 @@ }, { "c": "px", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -8845,7 +8878,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8856,7 +8889,7 @@ }, { "c": "*", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss keyword.operator.css", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss keyword.operator.css", "r": { "dark_plus": "keyword.operator: #D4D4D4", "light_plus": "keyword.operator: #000000", @@ -8867,7 +8900,7 @@ }, { "c": " ", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -8878,7 +8911,7 @@ }, { "c": "$y", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -8889,7 +8922,7 @@ }, { "c": ";", - "t": "source.css.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -9978,7 +10011,7 @@ }, { "c": "$type", - "t": "source.css.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.definition.variable.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -9989,7 +10022,7 @@ }, { "c": ":", - "t": "source.css.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.definition.variable.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -10000,7 +10033,7 @@ }, { "c": " monster", - "t": "source.css.scss meta.set.variable.scss", + "t": "source.css.scss meta.definition.variable.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -10011,7 +10044,7 @@ }, { "c": ";", - "t": "source.css.scss", + "t": "source.css.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11309,7 +11342,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss", + "t": "source.css.scss meta.at-rule.each.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11661,7 +11694,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11672,7 +11705,7 @@ }, { "c": "$i", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -11683,7 +11716,7 @@ }, { "c": ":", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11694,7 +11727,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11705,7 +11738,7 @@ }, { "c": "$i", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -11716,7 +11749,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11727,7 +11760,7 @@ }, { "c": "-", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss keyword.operator.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss keyword.operator.css", "r": { "dark_plus": "keyword.operator: #D4D4D4", "light_plus": "keyword.operator: #000000", @@ -11738,7 +11771,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -11749,7 +11782,7 @@ }, { "c": "2", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -11760,7 +11793,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12431,7 +12464,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12442,7 +12475,7 @@ }, { "c": "$z", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -12453,7 +12486,7 @@ }, { "c": ":", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12464,7 +12497,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12475,7 +12508,7 @@ }, { "c": "100", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -12486,7 +12519,7 @@ }, { "c": "%", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.percentage.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.percentage.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -12497,7 +12530,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12585,7 +12618,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -12695,7 +12728,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -13278,7 +13311,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -13970,7 +14003,18 @@ } }, { - "c": "; ", + "c": ";", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.css", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", @@ -14719,7 +14763,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -15236,7 +15280,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -15390,7 +15434,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -15599,7 +15643,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16754,7 +16798,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16765,7 +16809,7 @@ }, { "c": "$foo", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -16776,7 +16820,7 @@ }, { "c": ":", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss punctuation.separator.key-value.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.separator.key-value.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16787,7 +16831,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16798,7 +16842,7 @@ }, { "c": "1", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -16809,7 +16853,7 @@ }, { "c": "px", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css keyword.other.unit.px.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss constant.numeric.css keyword.other.unit.px.css", "r": { "dark_plus": "keyword.other.unit: #B5CEA8", "light_plus": "keyword.other.unit: #09885A", @@ -16819,8 +16863,8 @@ } }, { - "c": " }", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16830,8 +16874,8 @@ } }, { - "c": " foo: {", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": "}", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.section.property-list.end.bracket.curly.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16841,8 +16885,96 @@ } }, { - "c": " foo : ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "foo", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-name.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ": ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "{", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.section.property-list.begin.bracket.curly.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "foo", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-name.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ":", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.separator.key-value.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16853,7 +16985,7 @@ }, { "c": "white", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss support.constant.color.w3c-standard-color-name.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.property-value.scss support.constant.color.w3c-standard-color-name.css", "r": { "dark_plus": "support.constant.color: #CE9178", "light_plus": "support.constant.color: #0451A5", @@ -16863,8 +16995,8 @@ } }, { - "c": " }", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16874,8 +17006,8 @@ } }, { - "c": " foo.bar1 {", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": "}", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.section.property-list.end.bracket.curly.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16885,8 +17017,8 @@ } }, { - "c": " @extend tr.", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16895,20 +17027,141 @@ "hc_black": "default: #FFFFFF" } }, + { + "c": "foo", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-name.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ".", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss entity.other.attribute-name.class.css punctuation.definition.entity.css", + "r": { + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" + } + }, + { + "c": "bar1", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss entity.other.attribute-name.class.css", + "r": { + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "{", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.section.property-list.begin.bracket.curly.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "@", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss punctuation.definition.keyword.scss", + "r": { + "dark_plus": "keyword.control: #C586C0", + "light_plus": "keyword.control: #AF00DB", + "dark_vs": "keyword.control: #569CD6", + "light_vs": "keyword.control: #0000FF", + "hc_black": "keyword.control: #C586C0" + } + }, + { + "c": "extend", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss", + "r": { + "dark_plus": "keyword.control: #C586C0", + "light_plus": "keyword.control: #AF00DB", + "dark_vs": "keyword.control: #569CD6", + "light_vs": "keyword.control: #0000FF", + "hc_black": "keyword.control: #C586C0" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "tr", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.name.tag.css", + "r": { + "dark_plus": "entity.name.tag.css: #D7BA7D", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag.css: #D7BA7D", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag.css: #D7BA7D" + } + }, + { + "c": ".", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.class.css punctuation.definition.entity.css", + "r": { + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" + } + }, { "c": "default", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss support.constant.property-value.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.class.css", "r": { - "dark_plus": "support.constant.property-value: #CE9178", - "light_plus": "support.constant.property-value: #0451A5", - "dark_vs": "default: #D4D4D4", - "light_vs": "support.constant.property-value: #0451A5", - "hc_black": "support.constant.property-value: #CE9178" + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" } }, { "c": " }", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16918,8 +17171,41 @@ } }, { - "c": " foo.bar2 {", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": " foo", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": ".", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.class.css punctuation.definition.entity.css", + "r": { + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" + } + }, + { + "c": "bar2", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.other.attribute-name.class.css", + "r": { + "dark_plus": "entity.other.attribute-name.class.css: #D7BA7D", + "light_plus": "entity.other.attribute-name.class.css: #800000", + "dark_vs": "entity.other.attribute-name.class.css: #D7BA7D", + "light_vs": "entity.other.attribute-name.class.css: #800000", + "hc_black": "entity.other.attribute-name.class.css: #D7BA7D" + } + }, + { + "c": " {", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16930,7 +17216,7 @@ }, { "c": " @import ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16941,7 +17227,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.begin.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss string.quoted.double.scss punctuation.definition.string.begin.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -16952,7 +17238,7 @@ }, { "c": "compass", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss string.quoted.double.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss string.quoted.double.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -16963,7 +17249,7 @@ }, { "c": "\"", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss string.quoted.double.scss punctuation.definition.string.end.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss string.quoted.double.scss punctuation.definition.string.end.scss", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -16974,7 +17260,7 @@ }, { "c": " }", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16985,7 +17271,7 @@ }, { "c": " bar: ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -16996,7 +17282,7 @@ }, { "c": "black", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss support.constant.color.w3c-standard-color-name.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss support.constant.color.w3c-standard-color-name.css", "r": { "dark_plus": "support.constant.color: #CE9178", "light_plus": "support.constant.color: #0451A5", @@ -17007,7 +17293,7 @@ }, { "c": "}", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17017,41 +17303,118 @@ } }, { - "c": "/*", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss comment.block.scss punctuation.definition.comment.scss", + "c": "/", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { - "dark_plus": "comment: #608B4E", - "light_plus": "comment: #008000", - "dark_vs": "comment: #608B4E", - "light_vs": "comment: #008000", - "hc_black": "comment: #7CA668" + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" } }, { - "c": " rules without whitespace ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss comment.block.scss", + "c": "*", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.name.tag.wildcard.scss", "r": { - "dark_plus": "comment: #608B4E", - "light_plus": "comment: #008000", - "dark_vs": "comment: #608B4E", - "light_vs": "comment: #008000", - "hc_black": "comment: #7CA668" + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" } }, { - "c": "*/", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss comment.block.scss punctuation.definition.comment.scss", + "c": " rules without ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { - "dark_plus": "comment: #608B4E", - "light_plus": "comment: #008000", - "dark_vs": "comment: #608B4E", - "light_vs": "comment: #008000", - "hc_black": "comment: #7CA668" + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" } }, { - "c": "legend {foo{a:s}", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "c": "whitespace", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss support.constant.property-value.css", + "r": { + "dark_plus": "support.constant.property-value: #CE9178", + "light_plus": "support.constant.property-value: #0451A5", + "dark_vs": "default: #D4D4D4", + "light_vs": "support.constant.property-value: #0451A5", + "hc_black": "support.constant.property-value: #CE9178" + } + }, + { + "c": " ", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "*", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.name.tag.wildcard.scss", + "r": { + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" + } + }, + { + "c": "/", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.operator.css", + "r": { + "dark_plus": "keyword.operator: #D4D4D4", + "light_plus": "keyword.operator: #000000", + "dark_vs": "keyword.operator: #D4D4D4", + "light_vs": "keyword.operator: #000000", + "hc_black": "keyword.operator: #D4D4D4" + } + }, + { + "c": "legend", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.name.tag.css", + "r": { + "dark_plus": "entity.name.tag.css: #D7BA7D", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag.css: #D7BA7D", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag.css: #D7BA7D" + } + }, + { + "c": " {foo{", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "a", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss entity.name.tag.css", + "r": { + "dark_plus": "entity.name.tag.css: #D7BA7D", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag.css: #D7BA7D", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag.css: #D7BA7D" + } + }, + { + "c": ":s}", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17062,7 +17425,7 @@ }, { "c": "margin-top", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss support.type.property-name.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss support.type.property-name.css", "r": { "dark_plus": "support.type.property-name: #9CDCFE", "light_plus": "support.type.property-name: #FF0000", @@ -17073,7 +17436,7 @@ }, { "c": ":", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17084,7 +17447,7 @@ }, { "c": "0", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.set.variable.scss constant.numeric.css", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss constant.numeric.css", "r": { "dark_plus": "constant.numeric: #B5CEA8", "light_plus": "constant.numeric: #09885A", @@ -17095,7 +17458,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17392,7 +17755,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17403,7 +17766,7 @@ }, { "c": "@", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss punctuation.definition.keyword.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss punctuation.definition.keyword.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -17414,7 +17777,7 @@ }, { "c": "extend", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -17425,7 +17788,7 @@ }, { "c": " .", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17436,7 +17799,7 @@ }, { "c": "#{", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss punctuation.definition.interpolation.begin.bracket.curly.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss punctuation.definition.interpolation.begin.bracket.curly.scss", "r": { "dark_plus": "variable: #9CDCFE", "light_plus": "variable: #001080", @@ -17447,7 +17810,7 @@ }, { "c": "$a", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -17458,7 +17821,7 @@ }, { "c": "}", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss punctuation.definition.interpolation.end.bracket.curly.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss punctuation.definition.interpolation.end.bracket.curly.scss", "r": { "dark_plus": "variable: #9CDCFE", "light_plus": "variable: #001080", @@ -17469,7 +17832,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17480,7 +17843,7 @@ }, { "c": " ", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17491,7 +17854,7 @@ }, { "c": "@", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss punctuation.definition.keyword.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss punctuation.definition.keyword.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -17502,7 +17865,7 @@ }, { "c": "extend", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss keyword.control.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss keyword.control.at-rule.extend.scss", "r": { "dark_plus": "keyword.control: #C586C0", "light_plus": "keyword.control: #AF00DB", @@ -17513,7 +17876,7 @@ }, { "c": " #", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17524,7 +17887,7 @@ }, { "c": "#{", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss punctuation.definition.interpolation.begin.bracket.curly.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss punctuation.definition.interpolation.begin.bracket.curly.scss", "r": { "dark_plus": "variable: #9CDCFE", "light_plus": "variable: #001080", @@ -17535,7 +17898,7 @@ }, { "c": "$a", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss variable.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss variable.scss", "r": { "dark_plus": "variable.scss: #9CDCFE", "light_plus": "variable.scss: #FF0000", @@ -17546,7 +17909,7 @@ }, { "c": "}", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.import.scss variable.interpolation.scss punctuation.definition.interpolation.end.bracket.curly.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss meta.at-rule.extend.scss variable.interpolation.scss punctuation.definition.interpolation.end.bracket.curly.scss", "r": { "dark_plus": "variable: #9CDCFE", "light_plus": "variable: #001080", @@ -17557,7 +17920,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -17964,7 +18327,7 @@ }, { "c": ";", - "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss", + "t": "source.css.scss meta.at-rule.each.scss meta.at-rule.while.scss meta.property-list.scss meta.property-list.scss punctuation.terminator.rule.css", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", From fdf8a61dc22cb030d1f06c739561dc2db59235ba Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 11 Jul 2017 18:26:13 +0800 Subject: [PATCH 27/29] [razor] update grammar (fixes #30084) --- extensions/razor/package.json | 2 +- extensions/razor/syntaxes/cshtml.json | 116 ++++++++++++++++++++------ 2 files changed, 93 insertions(+), 25 deletions(-) diff --git a/extensions/razor/package.json b/extensions/razor/package.json index 1f50b33eeaf..f2b69806fde 100644 --- a/extensions/razor/package.json +++ b/extensions/razor/package.json @@ -6,7 +6,7 @@ "vscode": "0.10.x" }, "scripts": { - "update-grammar": "node ../../build/npm/update-grammar.js demyte/language-cshtml grammars/cshtml.cson ./syntaxes/cshtml.json" + "update-grammar": "node ../../build/npm/update-grammar.js demyte/language-cshtml grammars/cshtml.json ./syntaxes/cshtml.json" }, "contributes": { "languages": [{ diff --git a/extensions/razor/syntaxes/cshtml.json b/extensions/razor/syntaxes/cshtml.json index 180ad0e68dd..241e4486800 100644 --- a/extensions/razor/syntaxes/cshtml.json +++ b/extensions/razor/syntaxes/cshtml.json @@ -1,9 +1,10 @@ { "information_for_contributors": [ - "This file has been converted from https://github.com/demyte/language-cshtml/blob/master/grammars/cshtml.cson", + "This file has been converted from https://github.com/demyte/language-cshtml/blob/master/grammars/cshtml.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], + "version": "https://github.com/demyte/language-cshtml/commit/cbf0e35971324e861247145e92f4cbbe0bc42d0e", "name": "ASP.NET Razor", "scopeName": "text.html.cshtml", "fileTypes": [ @@ -35,21 +36,14 @@ } }, "patterns": [ - { - "name": "string.quoted.single.cshtml", - "match": "'" - }, { "include": "#embedded-code" }, { - "include": "#comments" + "include": "#general-includes" }, { "include": "source.cs" - }, - { - "include": "text.html.basic" } ], "end": "\\}", @@ -59,18 +53,14 @@ } } }, - { - "name": "string.quoted.single.cshtml", - "match": "'" - }, { "include": "#embedded-code" }, { - "include": "#comments" + "include": "#general-includes" }, { - "include": "text.html.basic" + "include": "source.cs" } ], "end": "\\}", @@ -107,17 +97,32 @@ "include": "#embedded-code" }, { - "include": "#comments" - }, - { - "include": "source.cs" - }, - { - "include": "text.html.basic" + "include": "#general-includes" } ], "end": "(\\n|\\s)", - "comments": "Covers single line Razor tags" + "comments": "Single statement Razor tags" + }, + { + "begin": "(@\\()", + "captures": { + "0": { + "name": "punctuation.section.embedded.begin.cshtml" + } + }, + "patterns": [ + { + "include": "#embedded-code" + }, + { + "include": "#general-includes" + }, + { + "include": "source.cs" + } + ], + "end": "(\\))", + "comments": "Covers same line Razor statments with embedded C#" }, { "include": "#comments" @@ -139,7 +144,7 @@ }, "patterns": [ { - "include": "#comments" + "include": "#general-includes" } ] }, @@ -152,6 +157,69 @@ }, "end": "\\*@", "name": "comment.block.cshtml" + }, + "line-comments": { + "name": "comment.line.double-slash.cshtml", + "begin": "(\\s*)//", + "end": "$(\\s*)" + }, + "block-comments": { + "name": "comment.block.cshtml", + "begin": "/\\*", + "end": "((?=})|(\\*/))" + }, + "single-quotes": { + "name": "string.quoted.single.cshtml", + "begin": "'", + "end": "'" + }, + "double-quotes": { + "name": "string.quoted.double.cshtml", + "begin": "\"", + "end": "\"", + "patterns": [ + { + "include": "text.html.basic" + } + ] + }, + "round-brackets": { + "name": "string.bracers.round.cshtml", + "begin": "\\(", + "end": "\\)" + }, + "squiggly-brackets": { + "name": "string.bracers.squiggly.cshtml", + "begin": "{", + "end": "}" + }, + "general-includes": { + "patterns": [ + { + "include": "#comments" + }, + { + "include": "#line-comments" + }, + { + "include": "#block-comments" + }, + { + "include": "#round-brackets" + }, + { + "include": "#squiggly-brackets" + }, + { + "include": "#single-quotes" + }, + { + "include": "#double-quotes" + }, + { + "include": "text.html.basic" + } + ] } } } \ No newline at end of file From c5bb500df0055ae1d179aec3f1f404c0459aa02d Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 11 Jul 2017 18:30:03 +0800 Subject: [PATCH 28/29] [razor] update grammar tests --- .../test/colorize-results/test_cshtml.json | 525 +++++++++--------- 1 file changed, 268 insertions(+), 257 deletions(-) diff --git a/extensions/razor/test/colorize-results/test_cshtml.json b/extensions/razor/test/colorize-results/test_cshtml.json index b87c41d8f04..2e3dbe31e97 100644 --- a/extensions/razor/test/colorize-results/test_cshtml.json +++ b/extensions/razor/test/colorize-results/test_cshtml.json @@ -66,7 +66,29 @@ } }, { - "c": " = ", + "c": " ", + "t": "text.html.cshtml section.embedded.source.cshtml", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "=", + "t": "text.html.cshtml section.embedded.source.cshtml keyword.operator.assignment.cs", + "r": { + "dark_plus": "keyword.operator: #D4D4D4", + "light_plus": "keyword.operator: #000000", + "dark_vs": "keyword.operator: #D4D4D4", + "light_vs": "keyword.operator: #000000", + "hc_black": "keyword.operator: #D4D4D4" + } + }, + { + "c": " ", "t": "text.html.cshtml section.embedded.source.cshtml", "r": { "dark_plus": "default: #D4D4D4", @@ -89,7 +111,7 @@ }, { "c": ";", - "t": "text.html.cshtml section.embedded.source.cshtml", + "t": "text.html.cshtml section.embedded.source.cshtml punctuation.terminator.statement.cs", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -143,7 +165,7 @@ } }, { - "c": " = \"\";", + "c": " ", "t": "text.html.cshtml section.embedded.source.cshtml", "r": { "dark_plus": "default: #D4D4D4", @@ -153,6 +175,50 @@ "hc_black": "default: #FFFFFF" } }, + { + "c": "=", + "t": "text.html.cshtml section.embedded.source.cshtml keyword.operator.assignment.cs", + "r": { + "dark_plus": "keyword.operator: #D4D4D4", + "light_plus": "keyword.operator: #000000", + "dark_vs": "keyword.operator: #D4D4D4", + "light_vs": "keyword.operator: #000000", + "hc_black": "keyword.operator: #D4D4D4" + } + }, + { + "c": " ", + "t": "text.html.cshtml section.embedded.source.cshtml", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "\"\"", + "t": "text.html.cshtml section.embedded.source.cshtml string.quoted.double.cshtml", + "r": { + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" + } + }, + { + "c": ";", + "t": "text.html.cshtml section.embedded.source.cshtml punctuation.terminator.statement.cs", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, { "c": " ", "t": "text.html.cshtml section.embedded.source.cshtml", @@ -231,7 +297,7 @@ } }, { - "c": " (", + "c": " ", "t": "text.html.cshtml section.embedded.source.cshtml", "r": { "dark_plus": "default: #D4D4D4", @@ -242,18 +308,18 @@ } }, { - "c": "IsPost", - "t": "text.html.cshtml section.embedded.source.cshtml keyword.control.cshtml", + "c": "(IsPost)", + "t": "text.html.cshtml section.embedded.source.cshtml string.bracers.round.cshtml", "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" } }, { - "c": ") ", + "c": " ", "t": "text.html.cshtml section.embedded.source.cshtml", "r": { "dark_plus": "default: #D4D4D4", @@ -275,30 +341,8 @@ } }, { - "c": " ", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.whitespace.comment.leading.cs", - "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" - } - }, - { - "c": "//", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cs punctuation.definition.comment.cs", - "r": { - "dark_plus": "comment: #608B4E", - "light_plus": "comment: #008000", - "dark_vs": "comment: #608B4E", - "light_vs": "comment: #008000", - "hc_black": "comment: #7CA668" - } - }, - { - "c": " Retrieve the numbers that the user entered.", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cs", + "c": " // Retrieve the numbers that the user entered.", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cshtml", "r": { "dark_plus": "comment: #608B4E", "light_plus": "comment: #008000", @@ -616,30 +660,8 @@ } }, { - "c": " ", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.whitespace.comment.leading.cs", - "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" - } - }, - { - "c": "//", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cs punctuation.definition.comment.cs", - "r": { - "dark_plus": "comment: #608B4E", - "light_plus": "comment: #008000", - "dark_vs": "comment: #608B4E", - "light_vs": "comment: #008000", - "hc_black": "comment: #7CA668" - } - }, - { - "c": " Convert the entered strings into integers numbers and add.", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cs", + "c": " // Convert the entered strings into integers numbers and add.", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml comment.line.double-slash.cshtml", "r": { "dark_plus": "comment: #608B4E", "light_plus": "comment: #008000", @@ -737,25 +759,14 @@ } }, { - "c": "(", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.parenthesis.open.cs", + "c": "()", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.bracers.round.cshtml", "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" - } - }, - { - "c": ")", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.parenthesis.close.cs", - "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" } }, { @@ -825,25 +836,14 @@ } }, { - "c": "(", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.parenthesis.open.cs", + "c": "()", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.bracers.round.cshtml", "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" - } - }, - { - "c": ")", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml punctuation.parenthesis.close.cs", - "r": { - "dark_plus": "default: #D4D4D4", - "light_plus": "default: #000000", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "default: #FFFFFF" + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" } }, { @@ -870,57 +870,68 @@ }, { "c": "<", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.begin.html", "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" } }, { "c": "italic", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.control.cshtml", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html entity.name.tag.other.html", "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" - } - }, - { - "c": "><", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", - "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" - } - }, - { - "c": "bold", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.control.cshtml", - "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" } }, { "c": ">", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.end.html", "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" + } + }, + { + "c": "<", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.begin.html", + "r": { + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" + } + }, + { + "c": "bold", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html entity.name.tag.other.html", + "r": { + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" + } + }, + { + "c": ">", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.end.html", + "r": { + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" } }, { @@ -968,30 +979,8 @@ } }, { - "c": "\"", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.quoted.double.cs punctuation.definition.string.begin.cs", - "r": { - "dark_plus": "string: #CE9178", - "light_plus": "string: #A31515", - "dark_vs": "string: #CE9178", - "light_vs": "string: #A31515", - "hc_black": "string: #CE9178" - } - }, - { - "c": "Total = ", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.quoted.double.cs", - "r": { - "dark_plus": "string: #CE9178", - "light_plus": "string: #A31515", - "dark_vs": "string: #CE9178", - "light_vs": "string: #A31515", - "hc_black": "string: #CE9178" - } - }, - { - "c": "\"", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.quoted.double.cs punctuation.definition.string.end.cs", + "c": "\"Total = \"", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml string.quoted.double.cshtml", "r": { "dark_plus": "string: #CE9178", "light_plus": "string: #A31515", @@ -1056,80 +1045,69 @@ } }, { - "c": "<", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", + "c": "<", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", - "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" - } - }, - { - "c": "/", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.arithmetic.cs", - "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" - } - }, - { - "c": "italic", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.control.cshtml", - "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" } }, { "c": ">", - "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml keyword.operator.relational.cs", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.end.html", "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" + } + }, + { + "c": "", + "t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.cshtml meta.tag.other.html punctuation.definition.tag.end.html", + "r": { + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" } }, { @@ -3168,30 +3146,19 @@ } }, { - "c": "<", - "t": "text.html.cshtml keyword.operator.relational.cs", + "c": "", - "t": "text.html.cshtml keyword.operator.relational.cs", + "t": "text.html.cshtml meta.tag.block.any.html punctuation.definition.tag.end.html", "r": { - "dark_plus": "keyword.operator: #D4D4D4", - "light_plus": "keyword.operator: #000000", - "dark_vs": "keyword.operator: #D4D4D4", - "light_vs": "keyword.operator: #000000", - "hc_black": "keyword.operator: #D4D4D4" + "dark_plus": "punctuation.definition.tag: #808080", + "light_plus": "punctuation.definition.tag: #800000", + "dark_vs": "punctuation.definition.tag: #808080", + "light_vs": "punctuation.definition.tag: #800000", + "hc_black": "punctuation.definition.tag: #808080" } }, { @@ -3256,8 +3223,52 @@ } }, { - "c": "@(totalMessage+\"!\")", - "t": "text.html.cshtml", + "c": "@(", + "t": "text.html.cshtml punctuation.section.embedded.begin.cshtml", + "r": { + "dark_plus": "default: #D4D4D4", + "light_plus": "default: #000000", + "dark_vs": "default: #D4D4D4", + "light_vs": "default: #000000", + "hc_black": "default: #FFFFFF" + } + }, + { + "c": "totalMessage", + "t": "text.html.cshtml keyword.control.cshtml", + "r": { + "dark_plus": "keyword.control: #C586C0", + "light_plus": "keyword.control: #AF00DB", + "dark_vs": "keyword.control: #569CD6", + "light_vs": "keyword.control: #0000FF", + "hc_black": "keyword.control: #C586C0" + } + }, + { + "c": "+", + "t": "text.html.cshtml keyword.operator.arithmetic.cs", + "r": { + "dark_plus": "keyword.operator: #D4D4D4", + "light_plus": "keyword.operator: #000000", + "dark_vs": "keyword.operator: #D4D4D4", + "light_vs": "keyword.operator: #000000", + "hc_black": "keyword.operator: #D4D4D4" + } + }, + { + "c": "\"!\"", + "t": "text.html.cshtml string.quoted.double.cshtml", + "r": { + "dark_plus": "string: #CE9178", + "light_plus": "string: #A31515", + "dark_vs": "string: #CE9178", + "light_vs": "string: #A31515", + "hc_black": "string: #CE9178" + } + }, + { + "c": ")", + "t": "text.html.cshtml punctuation.section.embedded.begin.cshtml", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3323,7 +3334,7 @@ }, { "c": ".", - "t": "text.html.cshtml punctuation.accessor.cs", + "t": "text.html.cshtml", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", @@ -3334,13 +3345,13 @@ }, { "c": "com", - "t": "text.html.cshtml variable.other.object.property.cs", + "t": "text.html.cshtml entity.name.tag.source.cshtml", "r": { - "dark_plus": "variable: #9CDCFE", - "light_plus": "variable: #001080", - "dark_vs": "default: #D4D4D4", - "light_vs": "default: #000000", - "hc_black": "variable: #9CDCFE" + "dark_plus": "entity.name.tag: #569CD6", + "light_plus": "entity.name.tag: #800000", + "dark_vs": "entity.name.tag: #569CD6", + "light_vs": "entity.name.tag: #800000", + "hc_black": "entity.name.tag: #569CD6" } }, { From c2f967ac1f04ae05e61e21faf1449c100dffda9f Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Tue, 11 Jul 2017 18:37:09 +0800 Subject: [PATCH 29/29] [cpp] update grammar --- extensions/cpp/syntaxes/c++.json | 1 + extensions/cpp/syntaxes/c.json | 38 ++++++++++--------- .../test/colorize-results/test-23630_cpp.json | 24 ++++++------ 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/extensions/cpp/syntaxes/c++.json b/extensions/cpp/syntaxes/c++.json index bc627e3a036..4cd5c4e8d91 100644 --- a/extensions/cpp/syntaxes/c++.json +++ b/extensions/cpp/syntaxes/c++.json @@ -4,6 +4,7 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], + "version": "https://github.com/atom/language-c/commit/3a269f88b12e512fb9495dc006a1dabf325d3d7f", "scopeName": "source.cpp", "fileTypes": [ "cc", diff --git a/extensions/cpp/syntaxes/c.json b/extensions/cpp/syntaxes/c.json index b83b31ad22e..c81bd51eadc 100644 --- a/extensions/cpp/syntaxes/c.json +++ b/extensions/cpp/syntaxes/c.json @@ -4,10 +4,12 @@ "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], + "version": "https://github.com/atom/language-c/commit/0a57fd7ee32bd14e3ee8291434263d744a8ecf1e", "scopeName": "source.c", "fileTypes": [ "c", - "h.in" + "h.in", + "xpm" ], "firstLineMatch": "(?i)-\\*-[^*]*(Mode:\\s*)?C(\\s*;.*?)?\\s*-\\*-", "name": "C", @@ -273,7 +275,7 @@ "include": "#parens" }, { - "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", "end": "(?<=\\))(?!\\w)", "name": "meta.function.c", "patterns": [ @@ -404,7 +406,7 @@ ] }, "c_function_call": { - "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|sizeof|[cr]?iterate)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", "end": "(?<=\\))(?!\\w)", "name": "meta.function-call.c", "patterns": [ @@ -778,7 +780,7 @@ }, "patterns": [ { - "begin": "\\G(?=.)", + "begin": "\\G", "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)", "end": "(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.c" @@ -1850,7 +1852,7 @@ "include": "#vararg_ellipses" }, { - "begin": "(?x)\n(?!(?: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*(\\()", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.c" @@ -1910,7 +1912,7 @@ "include": "#operators" }, { - "begin": "(?x)\n(?!(?: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*(\\()", + "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.c" diff --git a/extensions/cpp/test/colorize-results/test-23630_cpp.json b/extensions/cpp/test/colorize-results/test-23630_cpp.json index f22786a105f..0f6ce5827ae 100644 --- a/extensions/cpp/test/colorize-results/test-23630_cpp.json +++ b/extensions/cpp/test/colorize-results/test-23630_cpp.json @@ -100,24 +100,24 @@ }, { "c": "#", - "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c", + "t": "source.cpp meta.preprocessor.c", "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" + "dark_plus": "meta.preprocessor: #569CD6", + "light_plus": "meta.preprocessor: #0000FF", + "dark_vs": "meta.preprocessor: #569CD6", + "light_vs": "meta.preprocessor: #0000FF", + "hc_black": "meta.preprocessor: #569CD6" } }, { "c": "endif", - "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c", + "t": "source.cpp meta.preprocessor.c entity.name.function.preprocessor.c", "r": { - "dark_plus": "keyword.control: #C586C0", - "light_plus": "keyword.control: #AF00DB", - "dark_vs": "keyword.control: #569CD6", - "light_vs": "keyword.control: #0000FF", - "hc_black": "keyword.control: #C586C0" + "dark_plus": "entity.name.function: #DCDCAA", + "light_plus": "entity.name.function: #795E26", + "dark_vs": "meta.preprocessor: #569CD6", + "light_vs": "meta.preprocessor: #0000FF", + "hc_black": "entity.name.function: #DCDCAA" } } ] \ No newline at end of file