mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 13:00:58 +00:00
Merge branch 'master' into joh/ftp
This commit is contained in:
commit
90de7db5a1
|
@ -43,7 +43,7 @@ const nodeModules = ['electron', 'original-fs']
|
|||
// Build
|
||||
|
||||
const builtInExtensions = [
|
||||
{ name: 'ms-vscode.node-debug', version: '1.17.2' },
|
||||
{ name: 'ms-vscode.node-debug', version: '1.17.3' },
|
||||
{ name: 'ms-vscode.node-debug2', version: '1.17.1' }
|
||||
];
|
||||
|
||||
|
|
|
@ -1,59 +0,0 @@
|
|||
"use strict";
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
var __extends = (this && this.__extends) || (function () {
|
||||
var extendStatics = Object.setPrototypeOf ||
|
||||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
||||
return function (d, b) {
|
||||
extendStatics(d, b);
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
})();
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
var ts = require("typescript");
|
||||
var Lint = require("tslint");
|
||||
var Rule = /** @class */ (function (_super) {
|
||||
__extends(Rule, _super);
|
||||
function Rule() {
|
||||
return _super !== null && _super.apply(this, arguments) || this;
|
||||
}
|
||||
Rule.prototype.apply = function (sourceFile) {
|
||||
var allowed = this.getOptions().ruleArguments[0];
|
||||
return this.applyWithWalker(new AsyncRuleWalker(sourceFile, this.getOptions(), allowed));
|
||||
};
|
||||
return Rule;
|
||||
}(Lint.Rules.AbstractRule));
|
||||
exports.Rule = Rule;
|
||||
var AsyncRuleWalker = /** @class */ (function (_super) {
|
||||
__extends(AsyncRuleWalker, _super);
|
||||
function AsyncRuleWalker(file, opts, allowed) {
|
||||
var _this = _super.call(this, file, opts) || this;
|
||||
_this.allowed = allowed;
|
||||
return _this;
|
||||
}
|
||||
AsyncRuleWalker.prototype.visitMethodDeclaration = function (node) {
|
||||
this.visitFunctionLikeDeclaration(node);
|
||||
};
|
||||
AsyncRuleWalker.prototype.visitFunctionDeclaration = function (node) {
|
||||
this.visitFunctionLikeDeclaration(node);
|
||||
};
|
||||
AsyncRuleWalker.prototype.visitFunctionLikeDeclaration = function (node) {
|
||||
var _this = this;
|
||||
var flags = ts.getCombinedModifierFlags(node);
|
||||
if (!(flags & ts.ModifierFlags.Async)) {
|
||||
return;
|
||||
}
|
||||
var path = node.getSourceFile().path;
|
||||
var pathParts = path.split(/\\|\//);
|
||||
if (pathParts.some(function (part) { return _this.allowed.some(function (allowed) { return part === allowed; }); })) {
|
||||
return;
|
||||
}
|
||||
var message = "You are not allowed to use async function in this layer. Allowed layers are: [" + this.allowed + "]";
|
||||
this.addFailureAtNode(node, message);
|
||||
};
|
||||
return AsyncRuleWalker;
|
||||
}(Lint.RuleWalker));
|
|
@ -1,47 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as ts from 'typescript';
|
||||
import * as Lint from 'tslint';
|
||||
|
||||
export class Rule extends Lint.Rules.AbstractRule {
|
||||
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
|
||||
const allowed = this.getOptions().ruleArguments[0] as string[];
|
||||
return this.applyWithWalker(new AsyncRuleWalker(sourceFile, this.getOptions(), allowed));
|
||||
}
|
||||
}
|
||||
|
||||
class AsyncRuleWalker extends Lint.RuleWalker {
|
||||
|
||||
constructor(file: ts.SourceFile, opts: Lint.IOptions, private allowed: string[]) {
|
||||
super(file, opts);
|
||||
}
|
||||
|
||||
protected visitMethodDeclaration(node: ts.MethodDeclaration): void {
|
||||
this.visitFunctionLikeDeclaration(node);
|
||||
}
|
||||
|
||||
protected visitFunctionDeclaration(node: ts.FunctionDeclaration): void {
|
||||
this.visitFunctionLikeDeclaration(node);
|
||||
}
|
||||
|
||||
private visitFunctionLikeDeclaration(node: ts.FunctionLikeDeclaration) {
|
||||
const flags = ts.getCombinedModifierFlags(node);
|
||||
|
||||
if (!(flags & ts.ModifierFlags.Async)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const path = (node.getSourceFile() as any).path;
|
||||
const pathParts = path.split(/\\|\//);
|
||||
|
||||
if (pathParts.some(part => this.allowed.some(allowed => part === allowed))) {
|
||||
return;
|
||||
}
|
||||
|
||||
const message = `You are not allowed to use async function in this layer. Allowed layers are: [${this.allowed}]`;
|
||||
this.addFailureAtNode(node, message);
|
||||
}
|
||||
}
|
|
@ -69,8 +69,8 @@
|
|||
"c": "(",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -91,8 +91,8 @@
|
|||
"c": "+",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -102,8 +102,8 @@
|
|||
"c": ")",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -454,11 +454,11 @@
|
|||
"c": "#{",
|
||||
"t": "source.coffee string.regexp.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -476,11 +476,11 @@
|
|||
"c": "}",
|
||||
"t": "source.coffee string.regexp.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -311,11 +311,11 @@
|
|||
"c": "#{",
|
||||
"t": "source.coffee meta.function-call.coffee meta.arguments.coffee string.quoted.double.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -333,11 +333,11 @@
|
|||
"c": "}",
|
||||
"t": "source.coffee meta.function-call.coffee meta.arguments.coffee string.quoted.double.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -575,11 +575,11 @@
|
|||
"c": "#{",
|
||||
"t": "source.coffee meta.function-call.coffee meta.arguments.coffee string.quoted.double.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -597,11 +597,11 @@
|
|||
"c": "}",
|
||||
"t": "source.coffee meta.function-call.coffee meta.arguments.coffee string.quoted.double.coffee source.coffee.embedded.source punctuation.section.embedded.coffee",
|
||||
"r": {
|
||||
"dark_plus": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded.coffee: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.coffee: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded.coffee: #569CD6"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1378,8 +1378,8 @@
|
|||
"c": "(",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -1400,8 +1400,8 @@
|
|||
"c": "+",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -1411,8 +1411,8 @@
|
|||
"c": ")",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -1466,8 +1466,8 @@
|
|||
"c": "(",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -1488,8 +1488,8 @@
|
|||
"c": "*",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -1499,8 +1499,8 @@
|
|||
"c": ")",
|
||||
"t": "source.coffee string.regexp.coffee meta.group.regexp punctuation.definition.group.regexp",
|
||||
"r": {
|
||||
"dark_plus": "string.regexp: #D16969",
|
||||
"light_plus": "string.regexp: #811F3F",
|
||||
"dark_plus": "punctuation.definition.group.regexp: #D7BA7D",
|
||||
"light_plus": "punctuation.definition.group.regexp: #FF0000",
|
||||
"dark_vs": "string.regexp: #D16969",
|
||||
"light_vs": "string.regexp: #811F3F",
|
||||
"hc_black": "string.regexp: #D16969"
|
||||
|
@ -1554,8 +1554,8 @@
|
|||
"c": "$",
|
||||
"t": "source.coffee string.regexp.coffee keyword.control.anchor.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.control: #C586C0",
|
||||
"light_plus": "keyword.control: #AF00DB",
|
||||
"dark_plus": "keyword.control.anchor.regexp: #C586C0",
|
||||
"light_plus": "keyword.control.anchor.regexp: #09885A",
|
||||
"dark_vs": "keyword.control: #569CD6",
|
||||
"light_vs": "keyword.control: #0000FF",
|
||||
"hc_black": "keyword.control: #C586C0"
|
||||
|
|
4
extensions/css/server/npm-shrinkwrap.json
generated
4
extensions/css/server/npm-shrinkwrap.json
generated
|
@ -3,9 +3,9 @@
|
|||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"vscode-css-languageservice": {
|
||||
"version": "2.1.4",
|
||||
"version": "2.1.6",
|
||||
"from": "vscode-css-languageservice@next",
|
||||
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-2.1.4.tgz"
|
||||
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-2.1.6.tgz"
|
||||
},
|
||||
"vscode-jsonrpc": {
|
||||
"version": "3.3.1",
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
"node": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"vscode-css-languageservice": "^2.1.4",
|
||||
"vscode-css-languageservice": "^2.1.6",
|
||||
"vscode-languageserver": "3.4.0-next.6",
|
||||
"vscode-languageserver-protocol": "^3.1.1"
|
||||
},
|
||||
|
|
|
@ -529,6 +529,11 @@
|
|||
"group": "3_commit",
|
||||
"when": "config.git.enabled && scmProvider == git"
|
||||
},
|
||||
{
|
||||
"command": "git.stageAll",
|
||||
"group": "4_stage",
|
||||
"when": "config.git.enabled && scmProvider == git"
|
||||
},
|
||||
{
|
||||
"command": "git.unstageAll",
|
||||
"group": "4_stage",
|
||||
|
|
|
@ -345,9 +345,9 @@ export class Git {
|
|||
return folderPath;
|
||||
}
|
||||
|
||||
async getRepositoryRoot(path: string): Promise<string> {
|
||||
const result = await this.exec(path, ['rev-parse', '--show-toplevel']);
|
||||
return result.stdout.trim();
|
||||
async getRepositoryRoot(repositoryPath: string): Promise<string> {
|
||||
const result = await this.exec(repositoryPath, ['rev-parse', '--show-toplevel']);
|
||||
return path.normalize(result.stdout.trim());
|
||||
}
|
||||
|
||||
async exec(cwd: string, args: string[], options: any = {}): Promise<IExecutionResult> {
|
||||
|
|
|
@ -9232,33 +9232,33 @@
|
|||
"c": "${",
|
||||
"t": "source.groovy meta.definition.method.groovy meta.method.body.java string.quoted.double.groovy source.groovy.embedded.source punctuation.section.embedded.groovy",
|
||||
"r": {
|
||||
"dark_plus": "string: #CE9178",
|
||||
"light_plus": "string: #A31515",
|
||||
"dark_vs": "string: #CE9178",
|
||||
"light_vs": "string: #A31515",
|
||||
"hc_black": "string: #CE9178"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"c": "System.currentTimeMillis() - start",
|
||||
"t": "source.groovy meta.definition.method.groovy meta.method.body.java string.quoted.double.groovy source.groovy.embedded.source",
|
||||
"r": {
|
||||
"dark_plus": "string: #CE9178",
|
||||
"light_plus": "string: #A31515",
|
||||
"dark_vs": "string: #CE9178",
|
||||
"light_vs": "string: #A31515",
|
||||
"hc_black": "string: #CE9178"
|
||||
"dark_plus": "source.groovy.embedded: #D4D4D4",
|
||||
"light_plus": "source.groovy.embedded: #000000",
|
||||
"dark_vs": "source.groovy.embedded: #D4D4D4",
|
||||
"light_vs": "source.groovy.embedded: #000000",
|
||||
"hc_black": "source.groovy.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
"c": "}",
|
||||
"t": "source.groovy meta.definition.method.groovy meta.method.body.java string.quoted.double.groovy source.groovy.embedded.source punctuation.section.embedded.groovy",
|
||||
"r": {
|
||||
"dark_plus": "string: #CE9178",
|
||||
"light_plus": "string: #A31515",
|
||||
"dark_vs": "string: #CE9178",
|
||||
"light_vs": "string: #A31515",
|
||||
"hc_black": "string: #CE9178"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
8
extensions/html/server/npm-shrinkwrap.json
generated
8
extensions/html/server/npm-shrinkwrap.json
generated
|
@ -3,14 +3,14 @@
|
|||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"vscode-css-languageservice": {
|
||||
"version": "2.1.4",
|
||||
"version": "2.1.6",
|
||||
"from": "vscode-css-languageservice@next",
|
||||
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-2.1.4.tgz"
|
||||
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-2.1.6.tgz"
|
||||
},
|
||||
"vscode-html-languageservice": {
|
||||
"version": "2.0.7",
|
||||
"version": "2.0.8",
|
||||
"from": "vscode-html-languageservice@next",
|
||||
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-2.0.7.tgz"
|
||||
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-2.0.8.tgz"
|
||||
},
|
||||
"vscode-jsonrpc": {
|
||||
"version": "3.3.1",
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
"node": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"vscode-css-languageservice": "^2.1.4",
|
||||
"vscode-html-languageservice": "^2.0.7",
|
||||
"vscode-css-languageservice": "^2.1.6",
|
||||
"vscode-html-languageservice": "^2.0.8",
|
||||
"vscode-languageserver": "3.4.0-next.6",
|
||||
"vscode-languageserver-protocol": "^3.1.1",
|
||||
"vscode-languageserver-types": "^3.3.0",
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -51,7 +51,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -106,7 +106,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -128,7 +128,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -150,7 +150,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -194,7 +194,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -205,7 +205,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -293,7 +293,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -315,7 +315,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -337,7 +337,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -381,7 +381,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -392,7 +392,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -84,7 +84,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -139,7 +139,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -172,7 +172,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -194,7 +194,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -359,7 +359,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -381,7 +381,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -436,7 +436,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -458,7 +458,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -480,7 +480,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -502,7 +502,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -524,7 +524,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -601,7 +601,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -623,7 +623,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -678,7 +678,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -711,7 +711,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -733,7 +733,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -480,7 +480,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -502,7 +502,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -557,7 +557,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -579,7 +579,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -590,7 +590,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -601,7 +601,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -623,7 +623,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -634,7 +634,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -656,7 +656,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -667,7 +667,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -689,7 +689,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -700,7 +700,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -733,7 +733,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -744,7 +744,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -755,7 +755,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -766,7 +766,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1129,7 +1129,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1151,7 +1151,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1283,7 +1283,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1305,7 +1305,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1448,7 +1448,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1470,7 +1470,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1492,7 +1492,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1536,7 +1536,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1547,7 +1547,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1558,7 +1558,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1580,7 +1580,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1602,7 +1602,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1613,7 +1613,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1624,7 +1624,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1657,7 +1657,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1701,7 +1701,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1712,7 +1712,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1745,7 +1745,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1756,7 +1756,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1767,7 +1767,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1800,7 +1800,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1844,7 +1844,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1855,7 +1855,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1866,7 +1866,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1877,7 +1877,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1888,7 +1888,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1899,7 +1899,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1910,7 +1910,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1932,7 +1932,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1943,7 +1943,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1954,7 +1954,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1976,7 +1976,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1987,7 +1987,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1998,7 +1998,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2009,7 +2009,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2020,7 +2020,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2042,7 +2042,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2053,7 +2053,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2064,7 +2064,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2075,7 +2075,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2086,7 +2086,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2097,7 +2097,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2119,7 +2119,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2141,7 +2141,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2152,7 +2152,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2163,7 +2163,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2174,7 +2174,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2185,7 +2185,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2196,7 +2196,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2207,7 +2207,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -1664,11 +1664,11 @@
|
|||
"c": "{",
|
||||
"t": "source.js meta.var.expr.js meta.objectliteral.js meta.object.member.js meta.function.expression.js meta.block.js meta.tag.without-attributes.js meta.jsx.children.tsx meta.tag.without-attributes.js meta.jsx.children.tsx meta.embedded.expression.js punctuation.section.embedded.begin.js",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1686,11 +1686,11 @@
|
|||
"c": "}",
|
||||
"t": "source.js meta.var.expr.js meta.objectliteral.js meta.object.member.js meta.function.expression.js meta.block.js meta.tag.without-attributes.js meta.jsx.children.tsx meta.tag.without-attributes.js meta.jsx.children.tsx meta.embedded.expression.js punctuation.section.embedded.end.js",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1862,11 +1862,11 @@
|
|||
"c": "{",
|
||||
"t": "source.js meta.var.expr.js meta.objectliteral.js meta.object.member.js meta.function.expression.js meta.block.js meta.tag.without-attributes.js meta.jsx.children.tsx meta.tag.js meta.embedded.expression.js punctuation.section.embedded.begin.js",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1888,7 +1888,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1906,11 +1906,11 @@
|
|||
"c": "}",
|
||||
"t": "source.js meta.var.expr.js meta.objectliteral.js meta.object.member.js meta.function.expression.js meta.block.js meta.tag.without-attributes.js meta.jsx.children.tsx meta.tag.js meta.embedded.expression.js punctuation.section.embedded.end.js",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -656,7 +656,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -678,7 +678,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -733,7 +733,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -744,7 +744,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1030,7 +1030,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1052,7 +1052,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1063,7 +1063,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1074,7 +1074,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1096,7 +1096,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1107,7 +1107,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1151,7 +1151,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1162,7 +1162,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1173,7 +1173,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -62,7 +62,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -73,7 +73,7 @@
|
|||
"light_plus": "punctuation.section.embedded.begin.php: #800000",
|
||||
"dark_vs": "punctuation.section.embedded.begin.php: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.begin.php: #800000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -84,7 +84,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -106,7 +106,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -139,7 +139,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -161,7 +161,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -194,7 +194,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -205,7 +205,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -216,7 +216,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -227,7 +227,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -249,7 +249,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -414,7 +414,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -425,7 +425,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -436,7 +436,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -447,7 +447,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -458,7 +458,7 @@
|
|||
"light_plus": "punctuation.section.embedded.end.php: #800000",
|
||||
"dark_vs": "punctuation.section.embedded.end.php: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.end.php: #800000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -469,7 +469,7 @@
|
|||
"light_plus": "punctuation.section.embedded.end.php: #800000",
|
||||
"dark_vs": "punctuation.section.embedded.end.php: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded.end.php: #800000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -480,7 +480,7 @@
|
|||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "default: #FFFFFF"
|
||||
"hc_black": "meta.embedded: #FFFFFF"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -5338,8 +5338,8 @@
|
|||
"c": "*",
|
||||
"t": "source.python meta.function-call.python meta.function-call.arguments.python string.regexp.quoted.single.python keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -5371,8 +5371,8 @@
|
|||
"c": "*",
|
||||
"t": "source.python meta.function-call.python meta.function-call.arguments.python string.regexp.quoted.single.python keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -5426,8 +5426,8 @@
|
|||
"c": "+",
|
||||
"t": "source.python meta.function-call.python meta.function-call.arguments.python string.regexp.quoted.single.python keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -5470,8 +5470,8 @@
|
|||
"c": "+",
|
||||
"t": "source.python meta.function-call.python meta.function-call.arguments.python string.regexp.quoted.single.python keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
@ -5503,8 +5503,8 @@
|
|||
"c": "*",
|
||||
"t": "source.python meta.function-call.python meta.function-call.arguments.python string.regexp.quoted.single.python keyword.operator.quantifier.regexp",
|
||||
"r": {
|
||||
"dark_plus": "keyword.operator: #D4D4D4",
|
||||
"light_plus": "keyword.operator: #000000",
|
||||
"dark_plus": "keyword.operator.quantifier.regexp: #D4D4D4",
|
||||
"light_plus": "keyword.operator.quantifier.regexp: #0000FF",
|
||||
"dark_vs": "keyword.operator: #D4D4D4",
|
||||
"light_vs": "keyword.operator: #000000",
|
||||
"hc_black": "keyword.operator: #D4D4D4"
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
"c": "{",
|
||||
"t": "text.html.cshtml section.embedded.source.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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -333,11 +333,11 @@
|
|||
"c": "{",
|
||||
"t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1125,22 +1125,22 @@
|
|||
"c": "}",
|
||||
"t": "text.html.cshtml section.embedded.source.cshtml section.embedded.source.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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"c": "}",
|
||||
"t": "text.html.cshtml section.embedded.source.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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -3226,11 +3226,11 @@
|
|||
"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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -3270,11 +3270,11 @@
|
|||
"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"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -2258,11 +2258,11 @@
|
|||
"c": "#{",
|
||||
"t": "source.ruby string.interpolated.ruby meta.embedded.line.ruby punctuation.section.embedded.begin.ruby",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "string: #CE9178"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -2280,11 +2280,11 @@
|
|||
"c": "}",
|
||||
"t": "source.ruby string.interpolated.ruby meta.embedded.line.ruby punctuation.section.embedded.end.ruby source.ruby",
|
||||
"r": {
|
||||
"dark_plus": "meta.embedded: #D4D4D4",
|
||||
"light_plus": "meta.embedded: #000000",
|
||||
"dark_vs": "meta.embedded: #D4D4D4",
|
||||
"light_vs": "meta.embedded: #000000",
|
||||
"hc_black": "string: #CE9178"
|
||||
"dark_plus": "punctuation.section.embedded: #569CD6",
|
||||
"light_plus": "punctuation.section.embedded: #0000FF",
|
||||
"dark_vs": "punctuation.section.embedded: #569CD6",
|
||||
"light_vs": "punctuation.section.embedded: #0000FF",
|
||||
"hc_black": "punctuation.section.embedded: #569CD6"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#000c18",
|
||||
"foreground": "#6688cc"
|
||||
|
|
|
@ -101,6 +101,29 @@
|
|||
"settings": {
|
||||
"foreground": "#CE9178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"punctuation.definition.group.regexp",
|
||||
"punctuation.definition.group.assertion.regexp",
|
||||
"punctuation.definition.character-class.regexp",
|
||||
"keyword.operator.negation.regexp"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d7ba7d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.operator.quantifier.regexp",
|
||||
"settings": {
|
||||
"foreground": "#d4d4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.anchor.regexp",
|
||||
"settings": {
|
||||
"foreground": "#C586C0"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -10,7 +10,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"foreground": "#D4D4D4",
|
||||
"background": "#1E1E1E"
|
||||
|
@ -248,11 +248,12 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript string interpolation ${}",
|
||||
"name": "String interpolation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end",
|
||||
"punctuation.section.embedded.coffee"
|
||||
"punctuation.section.embedded",
|
||||
"constant.character.format.placeholder"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#569cd6"
|
||||
|
|
|
@ -14,6 +14,16 @@
|
|||
"background": "#000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"meta.embedded",
|
||||
"source.groovy.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#FFFFFF",
|
||||
"background": "#000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "emphasis",
|
||||
"settings": {
|
||||
|
@ -227,11 +237,12 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript string interpolation ${}",
|
||||
"name": "String interpolation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end",
|
||||
"punctuation.section.embedded.coffee"
|
||||
"punctuation.section.embedded",
|
||||
"constant.character.format.placeholder"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#569cd6"
|
||||
|
|
|
@ -101,6 +101,29 @@
|
|||
"settings": {
|
||||
"foreground": "#0451a5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"punctuation.definition.group.regexp",
|
||||
"punctuation.definition.group.assertion.regexp",
|
||||
"punctuation.definition.character-class.regexp",
|
||||
"keyword.operator.negation.regexp"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff0000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.operator.quantifier.regexp",
|
||||
"settings": {
|
||||
"foreground": "#0000ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.anchor.regexp",
|
||||
"settings": {
|
||||
"foreground": "#09885a"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
"include": "./light_defaults.json",
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"foreground": "#000000ff",
|
||||
"background":"#ffffffff"
|
||||
|
@ -244,11 +244,12 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript string interpolation ${}",
|
||||
"name": "String interpolation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end",
|
||||
"punctuation.section.embedded.coffee"
|
||||
"punctuation.section.embedded",
|
||||
"constant.character.format.placeholder"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#0000ff"
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#221a0f",
|
||||
"foreground": "#d3af86"
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#1e1e1e",
|
||||
"foreground": "#C5C8C6"
|
||||
|
@ -453,7 +453,9 @@
|
|||
},
|
||||
{
|
||||
"name": "Ruby Embedded Source",
|
||||
"scope": "source.ruby.embedded.source",
|
||||
"scope": [
|
||||
"punctuation.section.embedded.begin.ruby",
|
||||
"punctuation.section.embedded.end.ruby"],
|
||||
"settings": {
|
||||
"foreground": "#D08442"
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#272822",
|
||||
"foreground": "#F8F8F2"
|
||||
|
@ -121,7 +121,7 @@
|
|||
"name": "Template Definition",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression",
|
||||
"punctuation.section.embedded.coffee"
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#F92672"
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#F5F5F5",
|
||||
"foreground": "#333333"
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#390000",
|
||||
"foreground": "#F8F8F8"
|
||||
|
@ -169,14 +169,6 @@
|
|||
"foreground": "#aa5507ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String embedded-source",
|
||||
"scope": "string.quoted source",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#9df39fff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String constant",
|
||||
"scope": "string constant",
|
||||
|
@ -393,6 +385,18 @@
|
|||
"fontStyle": "",
|
||||
"foreground": "#fec758ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String interpolation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end",
|
||||
"punctuation.section.embedded",
|
||||
"constant.character.format.placeholder"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ec0d1e"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#002B36",
|
||||
"foreground": "#93A1A1"
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#FDF6E3",
|
||||
"foreground": "#657B83"
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.embedded",
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#002451",
|
||||
"foreground": "#FFFFFF"
|
||||
|
|
8
npm-shrinkwrap.json
generated
8
npm-shrinkwrap.json
generated
|
@ -552,9 +552,9 @@
|
|||
"resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.23.0.tgz"
|
||||
},
|
||||
"vscode-ripgrep": {
|
||||
"version": "0.0.25",
|
||||
"from": "vscode-ripgrep@0.0.25",
|
||||
"resolved": "https://registry.npmjs.org/vscode-ripgrep/-/vscode-ripgrep-0.0.25.tgz"
|
||||
"version": "0.0.26",
|
||||
"from": "vscode-ripgrep@0.0.26",
|
||||
"resolved": "https://registry.npmjs.org/vscode-ripgrep/-/vscode-ripgrep-0.0.26.tgz"
|
||||
},
|
||||
"vscode-textmate": {
|
||||
"version": "3.1.5",
|
||||
|
@ -574,7 +574,7 @@
|
|||
"xterm": {
|
||||
"version": "3.0.0",
|
||||
"from": "Tyriar/xterm.js#vscode-release/1.17",
|
||||
"resolved": "git+https://github.com/Tyriar/xterm.js.git#c3039b4d63b5c0e4a0c993e04714ad62fd056185"
|
||||
"resolved": "git+https://github.com/Tyriar/xterm.js.git#4483a2faf442101b507d033e4d25d134dddbe2ff"
|
||||
},
|
||||
"yauzl": {
|
||||
"version": "2.8.0",
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
"semver": "4.3.6",
|
||||
"v8-profiler": "jrieken/v8-profiler#vscode",
|
||||
"vscode-debugprotocol": "1.23.0",
|
||||
"vscode-ripgrep": "0.0.25",
|
||||
"vscode-ripgrep": "0.0.26",
|
||||
"vscode-textmate": "^3.1.5",
|
||||
"winreg": "1.2.0",
|
||||
"xterm": "Tyriar/xterm.js#vscode-release/1.17",
|
||||
|
|
|
@ -28,6 +28,7 @@ test -d node_modules || ./scripts/npm.sh install
|
|||
(test -f "$CODE" && [ $INTENDED_VERSION == $INSTALLED_VERSION ]) || ./node_modules/.bin/gulp electron
|
||||
|
||||
# Unit Tests
|
||||
export ELECTRON_ENABLE_LOGGING=1
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
cd $ROOT ; ulimit -n 4096 ; \
|
||||
"$CODE" \
|
||||
|
|
|
@ -348,8 +348,6 @@ class MouseController<T> implements IDisposable {
|
|||
}
|
||||
|
||||
private onMouseDown(e: IListMouseEvent<T>): void {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.view.domNode.focus();
|
||||
|
||||
let reference = this.list.getFocus()[0];
|
||||
|
@ -373,9 +371,6 @@ class MouseController<T> implements IDisposable {
|
|||
}
|
||||
|
||||
private onPointer(e: IListMouseEvent<T>): void {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
if (isSelectionChangeEvent(e)) {
|
||||
return;
|
||||
}
|
||||
|
@ -388,9 +383,6 @@ class MouseController<T> implements IDisposable {
|
|||
}
|
||||
|
||||
private onDoubleClick(e: IListMouseEvent<T>): void {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
if (isSelectionChangeEvent(e)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -244,9 +244,9 @@ export abstract class HeaderView extends View {
|
|||
protected abstract layoutBody(size: number): void;
|
||||
}
|
||||
|
||||
export interface ICollapsibleViewOptions {
|
||||
export interface IAbstractCollapsibleViewOptions {
|
||||
sizing: ViewSizing;
|
||||
ariaHeaderLabel: string;
|
||||
ariaHeaderLabel?: string;
|
||||
bodySize?: number;
|
||||
initialState?: CollapsibleState;
|
||||
}
|
||||
|
@ -268,7 +268,7 @@ export abstract class AbstractCollapsibleView extends HeaderView {
|
|||
private _previousSize: number = null;
|
||||
private readonly viewSizing: ViewSizing;
|
||||
|
||||
constructor(initialSize: number | undefined, opts: ICollapsibleViewOptions) {
|
||||
constructor(initialSize: number | undefined, opts: IAbstractCollapsibleViewOptions) {
|
||||
super(initialSize, opts);
|
||||
this.viewSizing = opts.sizing;
|
||||
this.ariaHeaderLabel = opts.ariaHeaderLabel;
|
||||
|
@ -493,6 +493,7 @@ export interface SplitViewStyles {
|
|||
export class SplitView extends lifecycle.Disposable implements
|
||||
sash.IHorizontalSashLayoutProvider,
|
||||
sash.IVerticalSashLayoutProvider {
|
||||
|
||||
private orientation: Orientation;
|
||||
private canDragAndDrop: boolean;
|
||||
private el: HTMLElement;
|
||||
|
@ -521,6 +522,10 @@ export class SplitView extends lifecycle.Disposable implements
|
|||
private _onDidOrderChange: Emitter<void> = this._register(new Emitter<void>());
|
||||
readonly onDidOrderChange: Event<void> = this._onDidOrderChange.event;
|
||||
|
||||
get length(): number {
|
||||
return this.views.length;
|
||||
}
|
||||
|
||||
constructor(container: HTMLElement, options?: IOptions) {
|
||||
super();
|
||||
options = options || {};
|
||||
|
@ -560,18 +565,18 @@ export class SplitView extends lifecycle.Disposable implements
|
|||
}
|
||||
|
||||
// The void space exists to handle the case where all other views are fixed size
|
||||
this.addView(new VoidView(), 1, 0);
|
||||
this.addView(new VoidView(), 0);
|
||||
}
|
||||
|
||||
getView(index: number): IView | undefined {
|
||||
return this.views[index];
|
||||
}
|
||||
|
||||
getViews<T extends IView>(): T[] {
|
||||
return <T[]>this.views.slice(0, this.views.length - 1);
|
||||
}
|
||||
|
||||
addView(view: IView, initialWeight: number = 1, index = this.views.length - 1): void {
|
||||
if (initialWeight <= 0) {
|
||||
throw new Error('Initial weight must be a positive number.');
|
||||
}
|
||||
|
||||
addView(view: IView, index = this.views.length - 1): void {
|
||||
/**
|
||||
* Reset size to null. This will layout newly added views to initial weights.
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,7 @@ export interface IToolBarOptions {
|
|||
actionItemProvider?: IActionItemProvider;
|
||||
ariaLabel?: string;
|
||||
getKeyBinding?: (action: IAction) => ResolvedKeybinding;
|
||||
actionRunner?: IActionRunner;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,6 +50,7 @@ export class ToolBar {
|
|||
this.actionBar = new ActionBar($(element), {
|
||||
orientation: options.orientation,
|
||||
ariaLabel: options.ariaLabel,
|
||||
actionRunner: options.actionRunner,
|
||||
actionItemProvider: (action: Action) => {
|
||||
|
||||
// Return special action item for the toggle menu action
|
||||
|
|
|
@ -58,8 +58,8 @@ export function getPathLabel(resource: URI | string, rootProvider?: IRootProvide
|
|||
}
|
||||
|
||||
// convert c:\something => C:\something
|
||||
if (platform.isWindows && resource.fsPath && resource.fsPath[1] === ':') {
|
||||
return normalize(resource.fsPath.charAt(0).toUpperCase() + resource.fsPath.slice(1), true);
|
||||
if (hasDriveLetter(resource.fsPath)) {
|
||||
return normalize(normalizeDriveLetter(resource.fsPath), true);
|
||||
}
|
||||
|
||||
// normalize and tildify (macOS, Linux only)
|
||||
|
@ -71,6 +71,18 @@ export function getPathLabel(resource: URI | string, rootProvider?: IRootProvide
|
|||
return res;
|
||||
}
|
||||
|
||||
function hasDriveLetter(path: string): boolean {
|
||||
return platform.isWindows && path && path[1] === ':';
|
||||
}
|
||||
|
||||
export function normalizeDriveLetter(path: string): string {
|
||||
if (hasDriveLetter(path)) {
|
||||
return path.charAt(0).toUpperCase() + path.slice(1);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
export function tildify(path: string, userHome: string): string {
|
||||
if (path && (platform.isMacintosh || platform.isLinux) && isEqualOrParent(path, userHome, !platform.isLinux /* ignorecase */)) {
|
||||
path = `~${path.substr(userHome.length)}`;
|
||||
|
|
|
@ -238,9 +238,19 @@ export function regExpLeadsToEndlessLoop(regexp: RegExp): boolean {
|
|||
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize}
|
||||
*/
|
||||
export const canNormalize = typeof ((<any>'').normalize) === 'function';
|
||||
const nonAsciiCharactersPattern = /[^\u0000-\u0080]/;
|
||||
const normalizedCache = new BoundedMap<string>(10000); // bounded to 10000 elements
|
||||
|
||||
const nfcCache = new BoundedMap<string>(10000); // bounded to 10000 elements
|
||||
export function normalizeNFC(str: string): string {
|
||||
return normalize(str, 'NFC', nfcCache);
|
||||
}
|
||||
|
||||
const nfdCache = new BoundedMap<string>(10000); // bounded to 10000 elements
|
||||
export function normalizeNFD(str: string): string {
|
||||
return normalize(str, 'NFD', nfdCache);
|
||||
}
|
||||
|
||||
const nonAsciiCharactersPattern = /[^\u0000-\u0080]/;
|
||||
function normalize(str: string, form: string, normalizedCache: BoundedMap<string>): string {
|
||||
if (!canNormalize || !str) {
|
||||
return str;
|
||||
}
|
||||
|
@ -252,7 +262,7 @@ export function normalizeNFC(str: string): string {
|
|||
|
||||
let res: string;
|
||||
if (nonAsciiCharactersPattern.test(str)) {
|
||||
res = (<any>str).normalize('NFC');
|
||||
res = (<any>str).normalize(form);
|
||||
} else {
|
||||
res = str;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
'use strict';
|
||||
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import { dirname, basename } from 'path';
|
||||
import * as objects from 'vs/base/common/objects';
|
||||
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
|
@ -49,9 +49,11 @@ export class ConfigWatcher<T> implements IConfigWatcher<T>, IDisposable {
|
|||
private timeoutHandle: NodeJS.Timer;
|
||||
private disposables: IDisposable[];
|
||||
private _onDidUpdateConfiguration: Emitter<IConfigurationChangeEvent<T>>;
|
||||
private configName: string;
|
||||
|
||||
constructor(private _path: string, private options: IConfigOptions<T> = { changeBufferDelay: 0, defaultConfig: Object.create(null), onError: error => console.error(error) }) {
|
||||
this.disposables = [];
|
||||
this.configName = basename(this._path);
|
||||
|
||||
this._onDidUpdateConfiguration = new Emitter<IConfigurationChangeEvent<T>>();
|
||||
this.disposables.push(this._onDidUpdateConfiguration);
|
||||
|
@ -121,8 +123,8 @@ export class ConfigWatcher<T> implements IConfigWatcher<T>, IDisposable {
|
|||
private registerWatcher(): void {
|
||||
|
||||
// Watch the parent of the path so that we detect ADD and DELETES
|
||||
const parentFolder = path.dirname(this._path);
|
||||
this.watch(parentFolder);
|
||||
const parentFolder = dirname(this._path);
|
||||
this.watch(parentFolder, true);
|
||||
|
||||
// Check if the path is a symlink and watch its target if so
|
||||
fs.lstat(this._path, (err, stat) => {
|
||||
|
@ -137,20 +139,20 @@ export class ConfigWatcher<T> implements IConfigWatcher<T>, IDisposable {
|
|||
return; // path is not a valid symlink
|
||||
}
|
||||
|
||||
this.watch(realPath);
|
||||
this.watch(realPath, false);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private watch(path: string): void {
|
||||
private watch(path: string, isParentFolder: boolean): void {
|
||||
if (this.disposed) {
|
||||
return; // avoid watchers that will never get disposed by checking for being disposed
|
||||
}
|
||||
|
||||
try {
|
||||
const watcher = fs.watch(path);
|
||||
watcher.on('change', () => this.onConfigFileChange());
|
||||
watcher.on('change', (type, file) => this.onConfigFileChange(type, file.toString(), isParentFolder));
|
||||
watcher.on('error', (code, signal) => this.options.onError(`Error watching ${path} for configuration changes (${code}, ${signal})`));
|
||||
|
||||
this.disposables.push(toDisposable(() => {
|
||||
|
@ -166,7 +168,11 @@ export class ConfigWatcher<T> implements IConfigWatcher<T>, IDisposable {
|
|||
}
|
||||
}
|
||||
|
||||
private onConfigFileChange(): void {
|
||||
private onConfigFileChange(eventType: string, filename: string, isParentFolder: boolean): void {
|
||||
if (isParentFolder && filename !== this.configName) {
|
||||
return; // a change to a sibling file that is not our config file
|
||||
}
|
||||
|
||||
if (this.timeoutHandle) {
|
||||
global.clearTimeout(this.timeoutHandle);
|
||||
this.timeoutHandle = null;
|
||||
|
|
|
@ -174,4 +174,9 @@ export class KeybindingsResolver {
|
|||
|
||||
return this.keybindings[commandId];
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
this._onKeybindingsChanged.dispose();
|
||||
this.keybindingsWatcher.dispose();
|
||||
}
|
||||
}
|
|
@ -174,7 +174,6 @@ export abstract class PeekViewWidget extends ZoneWidget {
|
|||
if (!this._isShowing && heightInPixel < 0) {
|
||||
// Looks like the view zone got folded away!
|
||||
this.dispose();
|
||||
this._onDidClose.fire(this);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||
import { ConfigWatcher } from 'vs/base/node/config';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { IDisposable, toDisposable, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ConfigurationSource, IConfigurationService, IConfigurationServiceEvent, IConfigurationValue, IConfigurationKeys, ConfigurationModel, IConfigurationOverrides, Configuration, IConfigurationValues, IConfigurationData } from 'vs/platform/configuration/common/configuration';
|
||||
import { CustomConfigurationModel, DefaultConfigurationModel } from 'vs/platform/configuration/common/model';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
|
@ -37,7 +37,7 @@ export class ConfigurationService<T> extends Disposable implements IConfiguratio
|
|||
return userConfigModel;
|
||||
}
|
||||
});
|
||||
this._register(toDisposable(() => this.userConfigModelWatcher.dispose()));
|
||||
this._register(this.userConfigModelWatcher);
|
||||
|
||||
// Listeners
|
||||
this._register(this.userConfigModelWatcher.onDidUpdateConfiguration(() => this.onConfigurationChange(ConfigurationSource.User)));
|
||||
|
|
|
@ -10,7 +10,7 @@ import * as os from 'os';
|
|||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { generateUuid } from 'vs/base/common/uuid';
|
||||
import { generateUuid, isUUID } from 'vs/base/common/uuid';
|
||||
import { memoize } from 'vs/base/common/decorators';
|
||||
import pkg from 'vs/platform/node/package';
|
||||
import product from 'vs/platform/node/product';
|
||||
|
@ -31,9 +31,13 @@ function getUniqueUserId(): string {
|
|||
return crypto.createHash('sha256').update(username).digest('hex').substr(0, 6);
|
||||
}
|
||||
|
||||
// Read this before there's any chance it is overwritten
|
||||
// Related to https://github.com/Microsoft/vscode/issues/30624
|
||||
const xdgRuntimeDir = process.env['XDG_RUNTIME_DIR'];
|
||||
|
||||
function getNixIPCHandle(userDataPath: string, type: string): string {
|
||||
if (process.env['XDG_RUNTIME_DIR']) {
|
||||
return path.join(process.env['XDG_RUNTIME_DIR'], `${pkg.name}-${pkg.version}-${type}.sock`);
|
||||
if (xdgRuntimeDir) {
|
||||
return path.join(xdgRuntimeDir, `${pkg.name}-${pkg.version}-${type}.sock`);
|
||||
}
|
||||
return path.join(userDataPath, `${pkg.version}-${type}.sock`);
|
||||
}
|
||||
|
@ -151,11 +155,15 @@ export class EnvironmentService implements IEnvironmentService {
|
|||
|
||||
try {
|
||||
this.machineUUID = fs.readFileSync(machineIdPath, 'utf8');
|
||||
|
||||
if (!isUUID(this.machineUUID)) {
|
||||
throw new Error('Not a UUID');
|
||||
}
|
||||
} catch (err) {
|
||||
this.machineUUID = generateUuid();
|
||||
|
||||
try {
|
||||
fs.writeFileSync(machineIdPath, this.machineUUID);
|
||||
fs.writeFileSync(machineIdPath, this.machineUUID, 'utf8');
|
||||
} catch (err) {
|
||||
console.warn('Could not store machine ID');
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import * as platform from 'vs/base/common/platform';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
@ -44,10 +43,7 @@ export class ExperimentService implements IExperimentService {
|
|||
|
||||
function loadExperiments(storageService: IStorageService, configurationService: IConfigurationService): IExperiments {
|
||||
const experiments = splitExperimentsRandomness(storageService);
|
||||
if (platform.isWindows) {
|
||||
// Ripgrep triggers MsMpEng.exe (https://github.com/BurntSushi/ripgrep/issues/600)
|
||||
experiments.ripgrepQuickSearch = false;
|
||||
}
|
||||
experiments.ripgrepQuickSearch = true;
|
||||
return applyOverrides(experiments, configurationService);
|
||||
}
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ export class ColorExtensionPoint {
|
|||
|
||||
extensionValue.forEach(extension => {
|
||||
if (typeof extension.id !== 'string' || extension.id.length === 0) {
|
||||
collector.error(nls.localize('invalid.id', "'configuration.colors.id' must be defined an can not be empty"));
|
||||
collector.error(nls.localize('invalid.id', "'configuration.colors.id' must be defined and can not be empty"));
|
||||
return;
|
||||
}
|
||||
if (!extension.id.match(colorIdPattern)) {
|
||||
|
@ -101,7 +101,7 @@ export class ColorExtensionPoint {
|
|||
return;
|
||||
}
|
||||
if (typeof extension.description !== 'string' || extension.id.length === 0) {
|
||||
collector.error(nls.localize('invalid.description', "'configuration.colors.description' must be defined an can not be empty"));
|
||||
collector.error(nls.localize('invalid.description', "'configuration.colors.description' must be defined and can not be empty"));
|
||||
return;
|
||||
}
|
||||
let defaults = extension.defaults;
|
||||
|
|
|
@ -12,14 +12,19 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
|
|||
import { extname, join, dirname, isAbsolute, resolve, relative } from 'path';
|
||||
import { mkdirp, writeFile, readFile } from 'vs/base/node/pfs';
|
||||
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
||||
import { isLinux } from 'vs/base/common/platform';
|
||||
import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform';
|
||||
import { delSync, readdirSync } from 'vs/base/node/extfs';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
import { isEqual, isEqualOrParent } from 'vs/base/common/paths';
|
||||
import { isEqual, isEqualOrParent, normalize } from 'vs/base/common/paths';
|
||||
import { coalesce } from 'vs/base/common/arrays';
|
||||
import { createHash } from 'crypto';
|
||||
import * as json from 'vs/base/common/json';
|
||||
import * as jsonEdit from 'vs/base/common/jsonEdit';
|
||||
import { applyEdit } from 'vs/base/common/jsonFormatter';
|
||||
import { normalizeDriveLetter } from 'vs/base/common/labels';
|
||||
|
||||
const SLASH = '/';
|
||||
|
||||
export class WorkspacesMainService implements IWorkspacesMainService {
|
||||
|
||||
|
@ -181,10 +186,11 @@ export class WorkspacesMainService implements IWorkspacesMainService {
|
|||
}
|
||||
|
||||
// Read the contents of the workspace file and resolve it
|
||||
return readFile(workspace.configPath).then(rawWorkspaceContents => {
|
||||
return readFile(workspace.configPath).then(raw => {
|
||||
const rawWorkspaceContents = raw.toString();
|
||||
let storedWorkspace: IStoredWorkspace;
|
||||
try {
|
||||
storedWorkspace = this.doParseStoredWorkspace(workspace.configPath, rawWorkspaceContents.toString());
|
||||
storedWorkspace = this.doParseStoredWorkspace(workspace.configPath, rawWorkspaceContents);
|
||||
} catch (error) {
|
||||
return TPromise.wrapError(error);
|
||||
}
|
||||
|
@ -192,6 +198,18 @@ export class WorkspacesMainService implements IWorkspacesMainService {
|
|||
const sourceConfigFolder = dirname(workspace.configPath);
|
||||
const targetConfigFolder = dirname(targetConfigPath);
|
||||
|
||||
// Determine which path separator to use:
|
||||
// - macOS/Linux: slash
|
||||
// - Windows: use slash if already used in that file
|
||||
let useSlashesForPath = !isWindows;
|
||||
if (isWindows) {
|
||||
storedWorkspace.folders.forEach(folder => {
|
||||
if (folder.path.indexOf(SLASH) >= 0) {
|
||||
useSlashesForPath = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Rewrite absolute paths to relative paths if the target workspace folder
|
||||
// is a parent of the location of the workspace file itself. Otherwise keep
|
||||
// using absolute paths.
|
||||
|
@ -203,9 +221,32 @@ export class WorkspacesMainService implements IWorkspacesMainService {
|
|||
if (isEqualOrParent(folder.path, targetConfigFolder, !isLinux)) {
|
||||
folder.path = relative(targetConfigFolder, folder.path) || '.'; // absolute paths get converted to relative ones to workspace location if possible
|
||||
}
|
||||
|
||||
// Windows gets special treatment:
|
||||
// - normalize all paths to get nice casing of drive letters
|
||||
// - convert to slashes if we want to use slashes for paths
|
||||
if (isWindows) {
|
||||
if (isAbsolute(folder.path)) {
|
||||
if (useSlashesForPath) {
|
||||
folder.path = normalize(folder.path, false /* do not use OS path separator */);
|
||||
}
|
||||
|
||||
folder.path = normalizeDriveLetter(folder.path);
|
||||
} else if (useSlashesForPath) {
|
||||
folder.path = folder.path.replace(/[\\]/g, SLASH);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return writeFile(targetConfigPath, JSON.stringify(storedWorkspace, null, '\t')).then(() => {
|
||||
// Preserve as much of the existing workspace as possible by using jsonEdit
|
||||
// and only changing the folders portion.
|
||||
let newRawWorkspaceContents = rawWorkspaceContents;
|
||||
const edits = jsonEdit.setProperty(rawWorkspaceContents, ['folders'], storedWorkspace.folders, { insertSpaces: false, tabSize: 4, eol: (isLinux || isMacintosh) ? '\n' : '\r\n' });
|
||||
edits.forEach(edit => {
|
||||
newRawWorkspaceContents = applyEdit(rawWorkspaceContents, edit);
|
||||
});
|
||||
|
||||
return writeFile(targetConfigPath, newRawWorkspaceContents).then(() => {
|
||||
const savedWorkspaceIdentifier = { id: this.getWorkspaceId(targetConfigPath), configPath: targetConfigPath };
|
||||
|
||||
// Event
|
||||
|
|
|
@ -245,6 +245,32 @@ suite('WorkspacesMainService', () => {
|
|||
});
|
||||
});
|
||||
|
||||
test('saveWorkspace (saved workspace, preserves comments)', done => {
|
||||
return service.createWorkspace([process.cwd(), os.tmpdir(), path.join(os.tmpdir(), 'somefolder')]).then(workspace => {
|
||||
const workspaceConfigPath = path.join(os.tmpdir(), `myworkspace.${Date.now()}.${WORKSPACE_EXTENSION}`);
|
||||
const newWorkspaceConfigPath = path.join(os.tmpdir(), `mySavedWorkspace.${Date.now()}.${WORKSPACE_EXTENSION}`);
|
||||
|
||||
return service.saveWorkspace(workspace, workspaceConfigPath).then(savedWorkspace => {
|
||||
const contents = fs.readFileSync(savedWorkspace.configPath).toString();
|
||||
fs.writeFileSync(savedWorkspace.configPath, `// this is a comment\n${contents}`);
|
||||
|
||||
return service.saveWorkspace(savedWorkspace, newWorkspaceConfigPath).then(newSavedWorkspace => {
|
||||
assert.ok(newSavedWorkspace.id);
|
||||
assert.notEqual(newSavedWorkspace.id, workspace.id);
|
||||
assert.equal(newSavedWorkspace.configPath, newWorkspaceConfigPath);
|
||||
|
||||
const savedContents = fs.readFileSync(newSavedWorkspace.configPath).toString();
|
||||
assert.equal(0, savedContents.indexOf('// this is a comment'));
|
||||
|
||||
extfs.delSync(workspaceConfigPath);
|
||||
extfs.delSync(newWorkspaceConfigPath);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
test('deleteUntitledWorkspaceSync (untitled)', done => {
|
||||
return service.createWorkspace([process.cwd(), os.tmpdir()]).then(workspace => {
|
||||
assert.ok(fs.existsSync(workspace.configPath));
|
||||
|
|
2
src/vs/vscode.d.ts
vendored
2
src/vs/vscode.d.ts
vendored
|
@ -773,7 +773,7 @@ declare module 'vscode' {
|
|||
export interface ThemableDecorationRenderOptions {
|
||||
/**
|
||||
* Background color of the decoration. Use rgba() and define transparent background colors to play well with other decorations.
|
||||
* Alternativly a color from the color registry an be [referenced](#ColorIdentifier).
|
||||
* Alternatively a color from the color registry can be [referenced](#ThemeColor).
|
||||
*/
|
||||
backgroundColor?: string | ThemeColor;
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ import { IDisposable, dispose, combinedDisposable } from 'vs/base/common/lifecyc
|
|||
import { RemoteFileService } from 'vs/workbench/services/files/electron-browser/remoteFileService';
|
||||
import { Emitter } from 'vs/base/common/event';
|
||||
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
|
||||
import { IExperimentService } from 'vs/platform/telemetry/common/experiments';
|
||||
|
||||
@extHostNamedCustomer(MainContext.MainThreadWorkspace)
|
||||
export class MainThreadWorkspace implements MainThreadWorkspaceShape {
|
||||
|
@ -35,6 +36,7 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
|
|||
@ITextFileService private readonly _textFileService: ITextFileService,
|
||||
@IWorkbenchEditorService private readonly _editorService: IWorkbenchEditorService,
|
||||
@ITextModelService private readonly _textModelResolverService: ITextModelService,
|
||||
@IExperimentService private experimentService: IExperimentService,
|
||||
@IFileService private readonly _fileService: IFileService
|
||||
) {
|
||||
this._proxy = extHostContext.get(ExtHostContext.ExtHostWorkspace);
|
||||
|
@ -70,6 +72,7 @@ export class MainThreadWorkspace implements MainThreadWorkspaceShape {
|
|||
maxResults,
|
||||
includePattern: { [include]: true },
|
||||
excludePattern: { [exclude]: true },
|
||||
useRipgrep: this.experimentService.getExperiments().ripgrepQuickSearch
|
||||
};
|
||||
this._searchService.extendQuery(query);
|
||||
|
||||
|
|
|
@ -35,86 +35,54 @@ import { SIDE_BAR_DRAG_AND_DROP_BACKGROUND, SIDE_BAR_SECTION_HEADER_FOREGROUND,
|
|||
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
|
||||
|
||||
export interface IViewOptions {
|
||||
|
||||
id: string;
|
||||
|
||||
name: string;
|
||||
|
||||
actionRunner: IActionRunner;
|
||||
|
||||
collapsed: boolean;
|
||||
|
||||
}
|
||||
|
||||
export interface IViewConstructorSignature {
|
||||
|
||||
new(initialSize: number, options: IViewOptions, ...services: { _serviceBrand: any; }[]): IView;
|
||||
|
||||
new(initialSize: number, options: IViewOptions, ...services: { _serviceBrand: any; }[]): IViewletView;
|
||||
}
|
||||
|
||||
export interface IView extends IBaseView, IThemable {
|
||||
|
||||
export interface IViewletView extends IBaseView, IThemable {
|
||||
id: string;
|
||||
|
||||
name: string;
|
||||
|
||||
getHeaderElement(): HTMLElement;
|
||||
|
||||
create(): TPromise<void>;
|
||||
|
||||
setVisible(visible: boolean): TPromise<void>;
|
||||
|
||||
isVisible(): boolean;
|
||||
|
||||
getActions(): IAction[];
|
||||
|
||||
getSecondaryActions(): IAction[];
|
||||
|
||||
getActionItem(action: IAction): IActionItem;
|
||||
|
||||
getActionsContext(): any;
|
||||
|
||||
showHeader(): boolean;
|
||||
|
||||
hideHeader(): boolean;
|
||||
|
||||
focusBody(): void;
|
||||
|
||||
isExpanded(): boolean;
|
||||
|
||||
expand(): void;
|
||||
|
||||
collapse(): void;
|
||||
|
||||
getOptimalWidth(): number;
|
||||
|
||||
shutdown(): void;
|
||||
}
|
||||
|
||||
export interface ICollapsibleViewOptions extends IViewOptions {
|
||||
|
||||
ariaHeaderLabel?: string;
|
||||
|
||||
sizing: ViewSizing;
|
||||
|
||||
initialBodySize?: number;
|
||||
|
||||
}
|
||||
|
||||
export abstract class CollapsibleView extends AbstractCollapsibleView implements IView {
|
||||
export abstract class CollapsibleView extends AbstractCollapsibleView implements IViewletView {
|
||||
|
||||
readonly id: string;
|
||||
readonly name: string;
|
||||
|
||||
protected treeContainer: HTMLElement;
|
||||
protected tree: ITree;
|
||||
protected toDispose: IDisposable[];
|
||||
protected toolBar: ToolBar;
|
||||
protected actionRunner: IActionRunner;
|
||||
protected isDisposed: boolean;
|
||||
|
||||
private _isVisible: boolean;
|
||||
|
||||
private dragHandler: DelayedDragHandler;
|
||||
|
||||
constructor(
|
||||
|
@ -144,7 +112,7 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
|
||||
get draggableLabel(): string { return this.name; }
|
||||
|
||||
public create(): TPromise<void> {
|
||||
create(): TPromise<void> {
|
||||
return TPromise.as(null);
|
||||
}
|
||||
|
||||
|
@ -152,7 +120,7 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
return this.header;
|
||||
}
|
||||
|
||||
public renderHeader(container: HTMLElement): void {
|
||||
renderHeader(container: HTMLElement): void {
|
||||
|
||||
// Tool bar
|
||||
this.toolBar = new ToolBar($('div.actions').appendTo(container).getHTMLElement(), this.contextMenuService, {
|
||||
|
@ -184,15 +152,15 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
return treeContainer;
|
||||
}
|
||||
|
||||
public getViewer(): ITree {
|
||||
getViewer(): ITree {
|
||||
return this.tree;
|
||||
}
|
||||
|
||||
public isVisible(): boolean {
|
||||
isVisible(): boolean {
|
||||
return this._isVisible;
|
||||
}
|
||||
|
||||
public setVisible(visible: boolean): TPromise<void> {
|
||||
setVisible(visible: boolean): TPromise<void> {
|
||||
if (this._isVisible !== visible) {
|
||||
this._isVisible = visible;
|
||||
this.updateTreeVisibility(this.tree, visible && this.state === CollapsibleState.EXPANDED);
|
||||
|
@ -201,7 +169,7 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
return TPromise.as(null);
|
||||
}
|
||||
|
||||
public focusBody(): void {
|
||||
focusBody(): void {
|
||||
this.focusTree();
|
||||
}
|
||||
|
||||
|
@ -213,38 +181,38 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
return this.tree.reveal(element, relativeTop);
|
||||
}
|
||||
|
||||
public layoutBody(size: number): void {
|
||||
layoutBody(size: number): void {
|
||||
if (this.tree) {
|
||||
this.treeContainer.style.height = size + 'px';
|
||||
this.tree.layout(size);
|
||||
}
|
||||
}
|
||||
|
||||
public getActions(): IAction[] {
|
||||
getActions(): IAction[] {
|
||||
return [];
|
||||
}
|
||||
|
||||
public getSecondaryActions(): IAction[] {
|
||||
getSecondaryActions(): IAction[] {
|
||||
return [];
|
||||
}
|
||||
|
||||
public getActionItem(action: IAction): IActionItem {
|
||||
getActionItem(action: IAction): IActionItem {
|
||||
return null;
|
||||
}
|
||||
|
||||
public getActionsContext(): any {
|
||||
getActionsContext(): any {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
public shutdown(): void {
|
||||
shutdown(): void {
|
||||
// Subclass to implement
|
||||
}
|
||||
|
||||
public getOptimalWidth(): number {
|
||||
getOptimalWidth(): number {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
dispose(): void {
|
||||
this.isDisposed = true;
|
||||
this.treeContainer = null;
|
||||
|
||||
|
@ -300,33 +268,24 @@ export abstract class CollapsibleView extends AbstractCollapsibleView implements
|
|||
}
|
||||
|
||||
export interface IViewletViewOptions extends IViewOptions {
|
||||
|
||||
viewletSettings: object;
|
||||
|
||||
}
|
||||
|
||||
export interface IViewState {
|
||||
|
||||
collapsed: boolean;
|
||||
|
||||
size: number | undefined;
|
||||
|
||||
isHidden: boolean;
|
||||
|
||||
order: number;
|
||||
|
||||
}
|
||||
|
||||
export class ViewsViewlet extends Viewlet {
|
||||
|
||||
protected viewletContainer: HTMLElement;
|
||||
protected lastFocusedView: IView;
|
||||
|
||||
protected lastFocusedView: IViewletView;
|
||||
private splitView: SplitView;
|
||||
private viewHeaderContextMenuListeners: IDisposable[] = [];
|
||||
protected dimension: Dimension;
|
||||
private viewletSettings: object;
|
||||
|
||||
private readonly viewsContextKeys: Set<string> = new Set<string>();
|
||||
protected viewsStates: Map<string, IViewState> = new Map<string, IViewState>();
|
||||
private areExtensionsReady: boolean = false;
|
||||
|
@ -339,7 +298,6 @@ export class ViewsViewlet extends Viewlet {
|
|||
@IStorageService protected storageService: IStorageService,
|
||||
@IInstantiationService protected instantiationService: IInstantiationService,
|
||||
@IThemeService themeService: IThemeService,
|
||||
@IWorkspaceContextService protected contextService: IWorkspaceContextService,
|
||||
@IContextKeyService protected contextKeyService: IContextKeyService,
|
||||
@IContextMenuService protected contextMenuService: IContextMenuService,
|
||||
@IExtensionService extensionService: IExtensionService
|
||||
|
@ -358,15 +316,15 @@ export class ViewsViewlet extends Viewlet {
|
|||
});
|
||||
}
|
||||
|
||||
public create(parent: Builder): TPromise<void> {
|
||||
create(parent: Builder): TPromise<void> {
|
||||
super.create(parent);
|
||||
|
||||
this.viewletContainer = DOM.append(parent.getHTMLElement(), DOM.$(''));
|
||||
this.splitView = this._register(new SplitView(this.viewletContainer, { canChangeOrderByDragAndDrop: true }));
|
||||
this.attachSplitViewStyler(this.splitView);
|
||||
this._register(this.splitView.onFocus((view: IView) => this.lastFocusedView = view));
|
||||
this._register(this.splitView.onFocus((view: IViewletView) => this.lastFocusedView = view));
|
||||
this._register(this.splitView.onDidOrderChange(() => {
|
||||
const views = this.splitView.getViews<IView>();
|
||||
const views = this.splitView.getViews<IViewletView>();
|
||||
for (let order = 0; order < views.length; order++) {
|
||||
this.viewsStates.get(views[order].id).order = order;
|
||||
}
|
||||
|
@ -374,34 +332,34 @@ export class ViewsViewlet extends Viewlet {
|
|||
|
||||
return this.onViewsRegistered(ViewsRegistry.getViews(this.location))
|
||||
.then(() => {
|
||||
this.lastFocusedView = this.splitView.getViews<IView>()[0];
|
||||
this.lastFocusedView = this.splitView.getViews<IViewletView>()[0];
|
||||
this.focus();
|
||||
});
|
||||
}
|
||||
|
||||
public getTitle(): string {
|
||||
getTitle(): string {
|
||||
let title = Registry.as<ViewletRegistry>(Extensions.Viewlets).getViewlet(this.getId()).name;
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IView>()[0]) {
|
||||
title += ': ' + this.splitView.getViews<IView>()[0].name;
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IViewletView>()[0]) {
|
||||
title += ': ' + this.splitView.getViews<IViewletView>()[0].name;
|
||||
}
|
||||
return title;
|
||||
}
|
||||
|
||||
public getActions(): IAction[] {
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IView>()[0]) {
|
||||
return this.splitView.getViews<IView>()[0].getActions();
|
||||
getActions(): IAction[] {
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IViewletView>()[0]) {
|
||||
return this.splitView.getViews<IViewletView>()[0].getActions();
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
public getSecondaryActions(): IAction[] {
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IView>()[0]) {
|
||||
return this.splitView.getViews<IView>()[0].getSecondaryActions();
|
||||
getSecondaryActions(): IAction[] {
|
||||
if (this.showHeaderInTitleArea() && this.splitView.getViews<IViewletView>()[0]) {
|
||||
return this.splitView.getViews<IViewletView>()[0].getSecondaryActions();
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
public getContextMenuActions(): IAction[] {
|
||||
getContextMenuActions(): IAction[] {
|
||||
return this.getViewDescriptorsFromRegistry(true)
|
||||
.filter(viewDescriptor => viewDescriptor.canToggleVisibility && this.contextKeyService.contextMatchesRules(viewDescriptor.when))
|
||||
.map(viewDescriptor => (<IAction>{
|
||||
|
@ -413,14 +371,14 @@ export class ViewsViewlet extends Viewlet {
|
|||
}));
|
||||
}
|
||||
|
||||
public setVisible(visible: boolean): TPromise<void> {
|
||||
setVisible(visible: boolean): TPromise<void> {
|
||||
return super.setVisible(visible)
|
||||
.then(() => TPromise.join(this.splitView.getViews<IView>().filter(view => view.isVisible() !== visible)
|
||||
.then(() => TPromise.join(this.splitView.getViews<IViewletView>().filter(view => view.isVisible() !== visible)
|
||||
.map((view) => view.setVisible(visible))))
|
||||
.then(() => void 0);
|
||||
}
|
||||
|
||||
public focus(): void {
|
||||
focus(): void {
|
||||
super.focus();
|
||||
|
||||
if (this.lastFocusedView) {
|
||||
|
@ -430,26 +388,26 @@ export class ViewsViewlet extends Viewlet {
|
|||
}
|
||||
}
|
||||
|
||||
public layout(dimension: Dimension): void {
|
||||
layout(dimension: Dimension): void {
|
||||
this.dimension = dimension;
|
||||
this.layoutViews();
|
||||
}
|
||||
|
||||
public getOptimalWidth(): number {
|
||||
getOptimalWidth(): number {
|
||||
const additionalMargin = 16;
|
||||
const optimalWidth = Math.max(...this.splitView.getViews<IView>().map(view => view.getOptimalWidth() || 0));
|
||||
const optimalWidth = Math.max(...this.splitView.getViews<IViewletView>().map(view => view.getOptimalWidth() || 0));
|
||||
return optimalWidth + additionalMargin;
|
||||
}
|
||||
|
||||
public shutdown(): void {
|
||||
this.splitView.getViews<IView>().forEach((view) => view.shutdown());
|
||||
shutdown(): void {
|
||||
this.splitView.getViews<IViewletView>().forEach((view) => view.shutdown());
|
||||
super.shutdown();
|
||||
}
|
||||
|
||||
private layoutViews(): void {
|
||||
if (this.splitView) {
|
||||
this.splitView.layout(this.dimension.height);
|
||||
for (const view of this.splitView.getViews<IView>()) {
|
||||
for (const view of this.splitView.getViews<IViewletView>()) {
|
||||
let viewState = this.updateViewStateSize(view);
|
||||
this.viewsStates.set(view.id, viewState);
|
||||
}
|
||||
|
@ -470,7 +428,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
this.updateViews();
|
||||
}
|
||||
|
||||
private onViewsRegistered(views: IViewDescriptor[]): TPromise<IView[]> {
|
||||
private onViewsRegistered(views: IViewDescriptor[]): TPromise<IViewletView[]> {
|
||||
this.viewsContextKeys.clear();
|
||||
for (const viewDescriptor of this.getViewDescriptorsFromRegistry()) {
|
||||
if (viewDescriptor.when) {
|
||||
|
@ -483,7 +441,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
return this.updateViews();
|
||||
}
|
||||
|
||||
private onViewsDeregistered(views: IViewDescriptor[]): TPromise<IView[]> {
|
||||
private onViewsDeregistered(views: IViewDescriptor[]): TPromise<IViewletView[]> {
|
||||
return this.updateViews(views);
|
||||
}
|
||||
|
||||
|
@ -505,7 +463,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
}
|
||||
}
|
||||
|
||||
protected updateViews(unregisteredViews: IViewDescriptor[] = []): TPromise<IView[]> {
|
||||
protected updateViews(unregisteredViews: IViewDescriptor[] = []): TPromise<IViewletView[]> {
|
||||
if (this.splitView) {
|
||||
|
||||
const registeredViews = this.getViewDescriptorsFromRegistry();
|
||||
|
@ -529,10 +487,10 @@ export class ViewsViewlet extends Viewlet {
|
|||
|
||||
}, [[], [], unregisteredViews]);
|
||||
|
||||
const toCreate: IView[] = [];
|
||||
const toCreate: IViewletView[] = [];
|
||||
|
||||
if (toAdd.length || toRemove.length) {
|
||||
for (const view of this.splitView.getViews<IView>()) {
|
||||
for (const view of this.splitView.getViews<IViewletView>()) {
|
||||
let viewState = this.viewsStates.get(view.id);
|
||||
if (!viewState || typeof viewState.size === 'undefined' || view.size !== viewState.size || !view.isExpanded() !== viewState.collapsed) {
|
||||
viewState = this.updateViewStateSize(view);
|
||||
|
@ -564,7 +522,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
toCreate.push(view);
|
||||
|
||||
this.attachViewStyler(view);
|
||||
this.splitView.addView(view, viewState && viewState.size ? Math.max(viewState.size, 1) : viewDescriptor.size, index);
|
||||
this.splitView.addView(view, index);
|
||||
}
|
||||
|
||||
return TPromise.join(toCreate.map(view => view.create()))
|
||||
|
@ -611,14 +569,14 @@ export class ViewsViewlet extends Viewlet {
|
|||
}
|
||||
|
||||
if (this.showHeaderInTitleArea()) {
|
||||
if (this.splitView.getViews<IView>()[0]) {
|
||||
this.splitView.getViews<IView>()[0].hideHeader();
|
||||
if (!this.splitView.getViews<IView>()[0].isExpanded()) {
|
||||
this.splitView.getViews<IView>()[0].expand();
|
||||
if (this.splitView.getViews<IViewletView>()[0]) {
|
||||
this.splitView.getViews<IViewletView>()[0].hideHeader();
|
||||
if (!this.splitView.getViews<IViewletView>()[0].isExpanded()) {
|
||||
this.splitView.getViews<IViewletView>()[0].expand();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (const view of this.splitView.getViews<IView>()) {
|
||||
for (const view of this.splitView.getViews<IViewletView>()) {
|
||||
view.showHeader();
|
||||
}
|
||||
}
|
||||
|
@ -647,7 +605,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
return this.setVisible(this.isVisible());
|
||||
}
|
||||
|
||||
private onContextMenu(event: StandardMouseEvent, view: IView): void {
|
||||
private onContextMenu(event: StandardMouseEvent, view: IViewletView): void {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
|
||||
|
@ -667,7 +625,7 @@ export class ViewsViewlet extends Viewlet {
|
|||
if (!this.showHeaderInTitleWhenSingleView) {
|
||||
return false;
|
||||
}
|
||||
if (this.splitView.getViews<IView>().length > 1) {
|
||||
if (this.splitView.getViews<IViewletView>().length > 1) {
|
||||
return false;
|
||||
}
|
||||
if (ViewLocation.getContributedViewLocation(this.location.id) && !this.areExtensionsReady) {
|
||||
|
@ -705,32 +663,32 @@ export class ViewsViewlet extends Viewlet {
|
|||
});
|
||||
}
|
||||
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IView {
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IViewletView {
|
||||
return this.instantiationService.createInstance(viewDescriptor.ctor, initialSize, options);
|
||||
}
|
||||
|
||||
protected get views(): IView[] {
|
||||
return this.splitView ? this.splitView.getViews<IView>() : [];
|
||||
protected get views(): IViewletView[] {
|
||||
return this.splitView ? this.splitView.getViews<IViewletView>() : [];
|
||||
}
|
||||
|
||||
protected getView(id: string): IView {
|
||||
return this.splitView.getViews<IView>().filter(view => view.id === id)[0];
|
||||
protected getView(id: string): IViewletView {
|
||||
return this.splitView.getViews<IViewletView>().filter(view => view.id === id)[0];
|
||||
}
|
||||
|
||||
private updateViewStateSize(view: IView): IViewState {
|
||||
private updateViewStateSize(view: IViewletView): IViewState {
|
||||
const currentState = this.viewsStates.get(view.id);
|
||||
const newViewState = this.createViewState(view);
|
||||
return currentState ? { ...currentState, collapsed: newViewState.collapsed, size: newViewState.size } : newViewState;
|
||||
}
|
||||
|
||||
protected createViewState(view: IView): IViewState {
|
||||
protected createViewState(view: IViewletView): IViewState {
|
||||
const collapsed = !view.isExpanded();
|
||||
const size = collapsed && view instanceof CollapsibleView ? view.previousSize : view.size;
|
||||
return {
|
||||
collapsed,
|
||||
size: size && size > 0 ? size : void 0,
|
||||
isHidden: false,
|
||||
order: this.splitView.getViews<IView>().indexOf(view)
|
||||
order: this.splitView.getViews<IViewletView>().indexOf(view)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -746,12 +704,12 @@ export class PersistentViewsViewlet extends ViewsViewlet {
|
|||
@IStorageService storageService: IStorageService,
|
||||
@IInstantiationService instantiationService: IInstantiationService,
|
||||
@IThemeService themeService: IThemeService,
|
||||
@IWorkspaceContextService contextService: IWorkspaceContextService,
|
||||
@IWorkspaceContextService protected contextService: IWorkspaceContextService,
|
||||
@IContextKeyService contextKeyService: IContextKeyService,
|
||||
@IContextMenuService contextMenuService: IContextMenuService,
|
||||
@IExtensionService extensionService: IExtensionService
|
||||
) {
|
||||
super(id, location, showHeaderInTitleWhenSingleView, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService);
|
||||
super(id, location, showHeaderInTitleWhenSingleView, telemetryService, storageService, instantiationService, themeService, contextKeyService, contextMenuService, extensionService);
|
||||
this.loadViewsStates();
|
||||
}
|
||||
|
||||
|
|
|
@ -613,7 +613,7 @@ export class Process implements IProcess {
|
|||
}
|
||||
|
||||
public clearThreads(removeThreads: boolean, reference: number = undefined): void {
|
||||
if (reference) {
|
||||
if (reference !== undefined && reference !== null) {
|
||||
if (this.threads.has(reference)) {
|
||||
const thread = this.threads.get(reference);
|
||||
thread.clearCallStack();
|
||||
|
|
|
@ -365,7 +365,7 @@ export class DebugEditorContribution implements IDebugEditorContribution {
|
|||
|
||||
// First call stack frame that is available is the frame where exception has been thrown
|
||||
const exceptionSf = first(callStack, sf => sf.source && sf.source.available, undefined);
|
||||
if (!exceptionSf) {
|
||||
if (!exceptionSf || exceptionSf !== focusedSf) {
|
||||
this.closeExceptionWidget();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -254,7 +254,8 @@ export class DebugHoverWidget implements IContentWidget {
|
|||
this.valueContainer.hidden = false;
|
||||
renderExpressionValue(expression, this.valueContainer, {
|
||||
showChanged: false,
|
||||
preserveWhitespace: true
|
||||
preserveWhitespace: true,
|
||||
colorize: true
|
||||
});
|
||||
this.valueContainer.title = '';
|
||||
this.editor.layoutContentWidget(this);
|
||||
|
|
|
@ -48,6 +48,7 @@ export interface IRenderValueOptions {
|
|||
showChanged?: boolean;
|
||||
maxValueLength?: number;
|
||||
showHover?: boolean;
|
||||
colorize?: boolean;
|
||||
}
|
||||
|
||||
function replaceWhitespace(value: string): string {
|
||||
|
@ -66,12 +67,16 @@ export function renderExpressionValue(expressionOrValue: debug.IExpression | str
|
|||
if (value !== Expression.DEFAULT_VALUE) {
|
||||
dom.addClass(container, 'error');
|
||||
}
|
||||
} else if (!isNaN(+value)) {
|
||||
dom.addClass(container, 'number');
|
||||
} else if (booleanRegex.test(value)) {
|
||||
dom.addClass(container, 'boolean');
|
||||
} else if (stringRegex.test(value)) {
|
||||
dom.addClass(container, 'string');
|
||||
}
|
||||
|
||||
if (options.colorize) {
|
||||
if (!isNaN(+value)) {
|
||||
dom.addClass(container, 'number');
|
||||
} else if (booleanRegex.test(value)) {
|
||||
dom.addClass(container, 'boolean');
|
||||
} else if (stringRegex.test(value)) {
|
||||
dom.addClass(container, 'string');
|
||||
}
|
||||
}
|
||||
|
||||
if (options.showChanged && (<any>expressionOrValue).valueChanged && value !== Expression.DEFAULT_VALUE) {
|
||||
|
@ -104,7 +109,8 @@ export function renderVariable(tree: ITree, variable: Variable, data: IVariableT
|
|||
showChanged,
|
||||
maxValueLength: MAX_VALUE_RENDER_LENGTH_IN_VIEWLET,
|
||||
preserveWhitespace: false,
|
||||
showHover: true
|
||||
showHover: true,
|
||||
colorize: true
|
||||
});
|
||||
} else {
|
||||
data.value.textContent = '';
|
||||
|
@ -209,7 +215,7 @@ export class BaseDebugController extends DefaultController {
|
|||
this.contributedContextMenu = menuService.createMenu(menuId, contextKeyService);
|
||||
}
|
||||
|
||||
public onContextMenu(tree: ITree, element: debug.IEnablement, event: ContextMenuEvent): boolean {
|
||||
public onContextMenu(tree: ITree, element: debug.IEnablement, event: ContextMenuEvent, focusElement = true): boolean {
|
||||
if (event.target && event.target.tagName && event.target.tagName.toLowerCase() === 'input') {
|
||||
return false;
|
||||
}
|
||||
|
@ -217,7 +223,9 @@ export class BaseDebugController extends DefaultController {
|
|||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
tree.setFocus(element);
|
||||
if (focusElement) {
|
||||
tree.setFocus(element);
|
||||
}
|
||||
|
||||
if (this.actionProvider.hasSecondaryActions(tree, element)) {
|
||||
const anchor = { x: event.posx, y: event.posy };
|
||||
|
@ -942,7 +950,8 @@ export class WatchExpressionsRenderer implements IRenderer {
|
|||
showChanged: true,
|
||||
maxValueLength: MAX_VALUE_RENDER_LENGTH_IN_VIEWLET,
|
||||
preserveWhitespace: false,
|
||||
showHover: true
|
||||
showHover: true,
|
||||
colorize: true
|
||||
});
|
||||
data.name.title = watchExpression.type ? watchExpression.type : watchExpression.value;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { IActionItem } from 'vs/base/browser/ui/actionbar/actionbar';
|
|||
import * as dom from 'vs/base/browser/dom';
|
||||
import severity from 'vs/base/common/severity';
|
||||
import { IMouseEvent } from 'vs/base/browser/mouseEvent';
|
||||
import { ITree, IAccessibilityProvider, IDataSource, IRenderer, IActionProvider } from 'vs/base/parts/tree/browser/tree';
|
||||
import { ITree, IAccessibilityProvider, ContextMenuEvent, IDataSource, IRenderer, IActionProvider } from 'vs/base/parts/tree/browser/tree';
|
||||
import { ICancelableEvent } from 'vs/base/parts/tree/browser/treeDefaults';
|
||||
import { IExpressionContainer, IExpression } from 'vs/workbench/parts/debug/common/debug';
|
||||
import { Model, OutputNameValueElement, Expression, OutputElement, Variable } from 'vs/workbench/parts/debug/common/debugModel';
|
||||
|
@ -431,4 +431,8 @@ export class ReplExpressionsController extends BaseDebugController {
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
public onContextMenu(tree: ITree, element: any, event: ContextMenuEvent): boolean {
|
||||
return super.onContextMenu(tree, element, event, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
|
|||
import { inputForeground, inputBackground, inputBorder } from 'vs/platform/theme/common/colorRegistry';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { ViewsRegistry, ViewLocation, IViewDescriptor } from 'vs/workbench/browser/parts/views/viewsRegistry';
|
||||
import { PersistentViewsViewlet, IView } from 'vs/workbench/browser/parts/views/views';
|
||||
import { PersistentViewsViewlet, IViewletView } from 'vs/workbench/browser/parts/views/views';
|
||||
import { IStorageService } from 'vs/platform/storage/common/storage';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { IContextKeyService, ContextKeyExpr, RawContextKey, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
|
@ -310,7 +310,7 @@ export class ExtensionsViewlet extends PersistentViewsViewlet implements IExtens
|
|||
await this.updateViews([], !!value);
|
||||
}
|
||||
|
||||
protected async updateViews(unregisteredViews: IViewDescriptor[] = [], showAll = false): TPromise<IView[]> {
|
||||
protected async updateViews(unregisteredViews: IViewDescriptor[] = [], showAll = false): TPromise<IViewletView[]> {
|
||||
const created = await super.updateViews();
|
||||
const toShow = showAll ? this.views : created;
|
||||
if (toShow.length) {
|
||||
|
|
|
@ -12,7 +12,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
|||
import * as DOM from 'vs/base/browser/dom';
|
||||
import { Builder } from 'vs/base/browser/builder';
|
||||
import { VIEWLET_ID, ExplorerViewletVisibleContext, IFilesConfiguration, OpenEditorsVisibleContext, OpenEditorsVisibleCondition } from 'vs/workbench/parts/files/common/files';
|
||||
import { PersistentViewsViewlet, IView, IViewletViewOptions } from 'vs/workbench/browser/parts/views/views';
|
||||
import { PersistentViewsViewlet, IViewletView, IViewletViewOptions } from 'vs/workbench/browser/parts/views/views';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
import { IConfigurationEditingService } from 'vs/workbench/services/configuration/common/configurationEditing';
|
||||
import { ActionRunner, FileViewletState } from 'vs/workbench/parts/files/browser/views/explorerViewer';
|
||||
|
@ -125,7 +125,7 @@ export class ExplorerViewlet extends PersistentViewsViewlet {
|
|||
this.openEditorsVisibleContextKey.set(!this.contextService.hasWorkspace() || (<IFilesConfiguration>this.configurationService.getConfiguration()).explorer.openEditors.visible !== 0);
|
||||
}
|
||||
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IView {
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IViewletView {
|
||||
if (viewDescriptor.id === ExplorerView.ID) {
|
||||
// Create a delegating editor service for the explorer to be able to delay the refresh in the opened
|
||||
// editors view above. This is a workaround for being able to double click on a file to make it pinned
|
||||
|
@ -223,7 +223,7 @@ export class ExplorerViewlet extends PersistentViewsViewlet {
|
|||
super.focus();
|
||||
}
|
||||
|
||||
private hasSelectionOrFocus(view: IView): boolean {
|
||||
private hasSelectionOrFocus(view: IViewletView): boolean {
|
||||
if (!view) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -549,7 +549,8 @@ export class FileSorter implements ISorter {
|
|||
private sortOrder: SortOrder;
|
||||
|
||||
constructor(
|
||||
@IConfigurationService private configurationService: IConfigurationService
|
||||
@IConfigurationService private configurationService: IConfigurationService,
|
||||
@IWorkspaceContextService private contextService: IWorkspaceContextService
|
||||
) {
|
||||
this.toDispose = [];
|
||||
|
||||
|
@ -570,6 +571,10 @@ export class FileSorter implements ISorter {
|
|||
|
||||
// Do not sort roots
|
||||
if (statA.isRoot) {
|
||||
if (statB.isRoot) {
|
||||
const ws = this.contextService.getWorkspace();
|
||||
return ws.roots.indexOf(statA.resource) - ws.roots.indexOf(statB.resource);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if (statB.isRoot) {
|
||||
|
|
|
@ -12,7 +12,7 @@ import { chain } from 'vs/base/common/event';
|
|||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { Builder } from 'vs/base/browser/builder';
|
||||
import { PersistentViewsViewlet, CollapsibleView, IViewletViewOptions, IView, IViewOptions } from 'vs/workbench/browser/parts/views/views';
|
||||
import { PersistentViewsViewlet, CollapsibleView, IViewletViewOptions, IViewletView, IViewOptions } from 'vs/workbench/browser/parts/views/views';
|
||||
import { append, $, toggleClass, trackFocus } from 'vs/base/browser/dom';
|
||||
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
|
||||
import { List } from 'vs/base/browser/ui/list/listWidget';
|
||||
|
@ -545,14 +545,14 @@ export class SCMViewlet extends PersistentViewsViewlet {
|
|||
await super.create(parent);
|
||||
|
||||
parent.addClass('scm-viewlet', 'empty');
|
||||
append(parent.getHTMLElement(), $('div.empty-message', null, localize('no open repo', "There are no source controls active.")));
|
||||
append(parent.getHTMLElement(), $('div.empty-message', null, localize('no open repo', "There are no source control providers active.")));
|
||||
|
||||
this.scmService.onDidAddRepository(this.onDidAddRepository, this, this.disposables);
|
||||
this.scmService.onDidRemoveRepository(this.onDidRemoveRepository, this, this.disposables);
|
||||
this.scmService.repositories.forEach(p => this.onDidAddRepository(p));
|
||||
}
|
||||
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IView {
|
||||
protected createView(viewDescriptor: IViewDescriptor, initialSize: number, options: IViewletViewOptions): IViewletView {
|
||||
if (viewDescriptor instanceof SourceControlViewDescriptor) {
|
||||
return this.instantiationService.createInstance(SourceControlView, initialSize, viewDescriptor.repository, options);
|
||||
}
|
||||
|
|
|
@ -36,11 +36,19 @@ namespace schema {
|
|||
|
||||
export function isValidSnippet(extension: IExtensionPointUser<ISnippetsExtensionPoint[]>, snippet: ISnippetsExtensionPoint, modeService: IModeService): boolean {
|
||||
if (!snippet.language || (typeof snippet.language !== 'string') || !modeService.isRegisteredMode(snippet.language)) {
|
||||
extension.collector.error(localize('invalid.language', "Unknown language in `contributes.{0}.language`. Provided value: {0}", String(snippet.language)));
|
||||
extension.collector.error(localize(
|
||||
'invalid.language',
|
||||
"Unknown language in `contributes.{0}.language`. Provided value: {1}",
|
||||
extension.description.name, String(snippet.language)
|
||||
));
|
||||
return false;
|
||||
|
||||
} else if (!snippet.path || (typeof snippet.path !== 'string')) {
|
||||
extension.collector.error(localize('invalid.path.0', "Expected string in `contributes.{0}.path`. Provided value: {0}", String(snippet.path)));
|
||||
extension.collector.error(localize(
|
||||
'invalid.path.0',
|
||||
"Expected string in `contributes.{0}.path`. Provided value: {1}",
|
||||
extension.description.name, String(snippet.path)
|
||||
));
|
||||
return false;
|
||||
|
||||
} else {
|
||||
|
|
|
@ -206,7 +206,16 @@ export class TerminalInstance implements ITerminalInstance {
|
|||
}
|
||||
const font = this._configHelper.getFont();
|
||||
this._cols = Math.max(Math.floor(dimension.width / font.charWidth), 1);
|
||||
this._rows = Math.max(Math.floor(dimension.height / Math.floor(font.charHeight * font.lineHeight)), 1);
|
||||
|
||||
// xterm.js does the horizontal space calculation using values scaled
|
||||
// with window.devicePixelRatio. In these calculations, ceil and floor
|
||||
// are used which require us to check it on this side as well or we
|
||||
// would lose that precision.
|
||||
const scaledSpaceAvailable = dimension.height * window.devicePixelRatio;
|
||||
const scaledCharHeight = Math.ceil(font.charHeight * window.devicePixelRatio);
|
||||
const scaledLineHeight = Math.floor(scaledCharHeight * font.lineHeight);
|
||||
this._rows = Math.floor(scaledSpaceAvailable / scaledLineHeight);
|
||||
|
||||
return dimension.width;
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ const lineAndColumnClause = [
|
|||
|
||||
// Changing any regex may effect this value, hence changes this as well if required.
|
||||
const winLineAndColumnMatchIndex = 12;
|
||||
const unixLineAndColumnMatchIndex = 15;
|
||||
const unixLineAndColumnMatchIndex = 23;
|
||||
|
||||
// Each line and column clause have 6 groups (ie no. of expressions in round brackets)
|
||||
const lineAndColumnClauseGroupCount = 6;
|
||||
|
|
|
@ -138,16 +138,16 @@ suite('Workbench - TerminalLinkHandler', () => {
|
|||
// { urlFormat: '{0} on line {1}, column {2}', line: '5', column: '3' },
|
||||
// { urlFormat: '{0}:line {1}', line: '5' },
|
||||
// { urlFormat: '{0}:line {1}, column {2}', line: '5', column: '3' },
|
||||
// { urlFormat: '{0}({1})', line: '5' },
|
||||
// { urlFormat: '{0} ({1})', line: '5' },
|
||||
// { urlFormat: '{0}({1},{2})', line: '5', column: '3' },
|
||||
// { urlFormat: '{0} ({1},{2})', line: '5', column: '3' },
|
||||
// { urlFormat: '{0}:{1}', line: '5' },
|
||||
// { urlFormat: '{0}:{1}:{2}', line: '5', column: '3' },
|
||||
// { urlFormat: '{0}[{1}]', line: '5' },
|
||||
// { urlFormat: '{0} [{1}]', line: '5' },
|
||||
// { urlFormat: '{0}[{1},{2}]', line: '5', column: '3' },
|
||||
// { urlFormat: '{0} [{1},{2}]', line: '5', column: '3' }
|
||||
{ urlFormat: '{0}({1})', line: '5' },
|
||||
{ urlFormat: '{0} ({1})', line: '5' },
|
||||
{ urlFormat: '{0}({1},{2})', line: '5', column: '3' },
|
||||
{ urlFormat: '{0} ({1},{2})', line: '5', column: '3' },
|
||||
{ urlFormat: '{0}:{1}', line: '5' },
|
||||
{ urlFormat: '{0}:{1}:{2}', line: '5', column: '3' },
|
||||
{ urlFormat: '{0}[{1}]', line: '5' },
|
||||
{ urlFormat: '{0} [{1}]', line: '5' },
|
||||
{ urlFormat: '{0}[{1},{2}]', line: '5', column: '3' },
|
||||
{ urlFormat: '{0} [{1},{2}]', line: '5', column: '3' }
|
||||
];
|
||||
|
||||
linkUrls.forEach(linkUrl => {
|
||||
|
|
|
@ -13,7 +13,7 @@ import { equals, coalesce } from 'vs/base/common/arrays';
|
|||
import * as objects from 'vs/base/common/objects';
|
||||
import * as errors from 'vs/base/common/errors';
|
||||
import * as collections from 'vs/base/common/collections';
|
||||
import { Disposable, toDisposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { readFile, stat } from 'vs/base/node/pfs';
|
||||
import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
|
||||
|
@ -631,7 +631,7 @@ class WorkspaceConfiguration extends Disposable {
|
|||
return workspaceConfigurationModel;
|
||||
}, initCallback: () => c(null)
|
||||
});
|
||||
this._workspaceConfigurationWatcherDisposables.push(toDisposable(() => this._workspaceConfigurationWatcher.dispose()));
|
||||
this._workspaceConfigurationWatcherDisposables.push(this._workspaceConfigurationWatcher);
|
||||
this._workspaceConfigurationWatcher.onDidUpdateConfiguration(() => this._onDidUpdateConfiguration.fire(), this, this._workspaceConfigurationWatcherDisposables);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import * as nls from 'vs/nls';
|
|||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||
import { ResolvedKeybinding, Keybinding } from 'vs/base/common/keyCodes';
|
||||
import { OS, OperatingSystem } from 'vs/base/common/platform';
|
||||
import { toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { ExtensionMessageCollector, ExtensionsRegistry } from 'vs/platform/extensions/common/extensionsRegistry';
|
||||
import { Extensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
|
||||
import { AbstractKeybindingService } from 'vs/platform/keybinding/common/abstractKeybindingService';
|
||||
|
@ -296,7 +295,7 @@ export class WorkbenchKeybindingService extends AbstractKeybindingService {
|
|||
this._firstTimeComputingResolver = true;
|
||||
|
||||
this.userKeybindings = new ConfigWatcher(environmentService.appKeybindingsPath, { defaultConfig: [], onError: error => onUnexpectedError(error) });
|
||||
this.toDispose.push(toDisposable(() => this.userKeybindings.dispose()));
|
||||
this.toDispose.push(this.userKeybindings);
|
||||
|
||||
keybindingsExtPoint.setHandler((extensions) => {
|
||||
let commandAdded = false;
|
||||
|
|
|
@ -49,6 +49,7 @@ interface IDirectoryTree {
|
|||
|
||||
export class FileWalker {
|
||||
private config: IRawSearch;
|
||||
private useRipgrep: boolean;
|
||||
private filePattern: string;
|
||||
private normalizedFilePatternLowercase: string;
|
||||
private includePattern: glob.ParsedExpression;
|
||||
|
@ -73,6 +74,7 @@ export class FileWalker {
|
|||
|
||||
constructor(config: IRawSearch) {
|
||||
this.config = config;
|
||||
this.useRipgrep = config.useRipgrep !== false;
|
||||
this.filePattern = config.filePattern;
|
||||
this.includePattern = config.includePattern && glob.parse(config.includePattern);
|
||||
this.maxResults = config.maxResults || null;
|
||||
|
@ -153,7 +155,7 @@ export class FileWalker {
|
|||
|
||||
let traverse = this.nodeJSTraversal;
|
||||
if (!this.maxFilesize) {
|
||||
if (this.config.useRipgrep) {
|
||||
if (this.useRipgrep) {
|
||||
this.traversal = Traversal.Ripgrep;
|
||||
traverse = this.cmdTraversal;
|
||||
} else if (platform.isMacintosh) {
|
||||
|
@ -216,11 +218,12 @@ export class FileWalker {
|
|||
let first = true;
|
||||
const tree = this.initDirectoryTree();
|
||||
|
||||
const useRipgrep = this.config.useRipgrep;
|
||||
const useRipgrep = this.useRipgrep;
|
||||
let cmd: childProcess.ChildProcess;
|
||||
let noSiblingsClauses: boolean;
|
||||
let filePatternSeen = false;
|
||||
if (useRipgrep) {
|
||||
const ripgrep = spawnRipgrepCmd(folderQuery, this.config.includePattern, this.folderExcludePatterns.get(folderQuery.folder));
|
||||
const ripgrep = spawnRipgrepCmd(folderQuery, this.config.includePattern, this.folderExcludePatterns.get(folderQuery.folder).expression);
|
||||
cmd = ripgrep.cmd;
|
||||
noSiblingsClauses = !Object.keys(ripgrep.siblingClauses).length;
|
||||
} else {
|
||||
|
@ -236,7 +239,7 @@ export class FileWalker {
|
|||
// Mac: uses NFD unicode form on disk, but we want NFC
|
||||
const normalized = leftover + (isMac ? strings.normalizeNFC(stdout) : stdout);
|
||||
const relativeFiles = normalized.split(useRipgrep ? '\n' : '\n./');
|
||||
if (first && normalized.length >= 2) {
|
||||
if (!useRipgrep && first && normalized.length >= 2) {
|
||||
first = false;
|
||||
relativeFiles[0] = relativeFiles[0].trim().substr(2);
|
||||
}
|
||||
|
@ -260,11 +263,28 @@ export class FileWalker {
|
|||
|
||||
if (useRipgrep && noSiblingsClauses) {
|
||||
for (const relativePath of relativeFiles) {
|
||||
if (relativePath === this.filePattern) {
|
||||
filePatternSeen = true;
|
||||
}
|
||||
const basename = path.basename(relativePath);
|
||||
this.matchFile(onResult, { base: rootFolder, relativePath, basename });
|
||||
}
|
||||
if (last) {
|
||||
done();
|
||||
if (!filePatternSeen) {
|
||||
this.checkFilePatternRelativeMatch(folderQuery.folder, (match, size) => {
|
||||
if (match) {
|
||||
this.resultCount++;
|
||||
onResult({
|
||||
base: folderQuery.folder,
|
||||
relativePath: this.filePattern,
|
||||
basename: path.basename(this.filePattern),
|
||||
});
|
||||
}
|
||||
done();
|
||||
});
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -367,7 +387,7 @@ export class FileWalker {
|
|||
|
||||
cmd.on('close', (code: number) => {
|
||||
if (code !== 0) {
|
||||
done(new Error(`find failed with error code ${code}: ${this.decodeData(stderr, encoding)}`));
|
||||
done(new Error(`command failed with error code ${code}: ${this.decodeData(stderr, encoding)}`));
|
||||
} else {
|
||||
done(null, '', true);
|
||||
}
|
||||
|
@ -710,8 +730,8 @@ class AbsoluteAndRelativeParsedExpression {
|
|||
private absoluteParsedExpr: glob.ParsedExpression;
|
||||
private relativeParsedExpr: glob.ParsedExpression;
|
||||
|
||||
constructor(expr: glob.IExpression, private root: string) {
|
||||
this.init(expr);
|
||||
constructor(public expression: glob.IExpression, private root: string) {
|
||||
this.init(expression);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -83,6 +83,7 @@ export class SearchService implements IRawSearchService {
|
|||
includePattern: config.includePattern,
|
||||
excludePattern: config.excludePattern,
|
||||
filePattern: config.filePattern,
|
||||
useRipgrep: false,
|
||||
maxFilesize: MAX_FILE_SIZE
|
||||
}),
|
||||
this.textSearchWorkerProvider);
|
||||
|
|
|
@ -6,7 +6,9 @@
|
|||
import * as cp from 'child_process';
|
||||
import { rgPath } from 'vscode-ripgrep';
|
||||
|
||||
import { isMacintosh as isMac } from 'vs/base/common/platform';
|
||||
import * as glob from 'vs/base/common/glob';
|
||||
import { normalizeNFD } from 'vs/base/common/strings';
|
||||
|
||||
import { IFolderSearch } from './search';
|
||||
import { foldersToIncludeGlobs, foldersToRgExcludeGlobs } from './ripgrepTextSearch';
|
||||
|
@ -24,14 +26,14 @@ function getRgArgs(folderQuery: IFolderSearch, includePattern: glob.IExpression,
|
|||
|
||||
// includePattern can't have siblingClauses
|
||||
foldersToIncludeGlobs([folderQuery], includePattern, false).forEach(globArg => {
|
||||
args.push('-g', globArg);
|
||||
args.push('-g', isMac ? normalizeNFD(globArg) : globArg);
|
||||
});
|
||||
|
||||
let siblingClauses: glob.IExpression;
|
||||
|
||||
const rgGlobs = foldersToRgExcludeGlobs([folderQuery], excludePattern, undefined, false);
|
||||
rgGlobs.globArgs
|
||||
.forEach(rgGlob => args.push('-g', `!${rgGlob}`));
|
||||
.forEach(rgGlob => args.push('-g', `!${isMac ? normalizeNFD(rgGlob) : rgGlob}`));
|
||||
siblingClauses = rgGlobs.siblingClauses;
|
||||
|
||||
// Don't use .gitignore or .ignore
|
||||
|
|
|
@ -37,7 +37,7 @@ const textSearchWorkerProvider = new TextSearchWorkerProvider();
|
|||
|
||||
function doLegacySearchTest(config: IRawSearch, expectedResultCount: number | Function): TPromise<void> {
|
||||
return new TPromise<void>((resolve, reject) => {
|
||||
let engine = new TextSearchEngine(config, new FileWalker(config), textSearchWorkerProvider);
|
||||
let engine = new TextSearchEngine(config, new FileWalker({ ...config, useRipgrep: false }), textSearchWorkerProvider);
|
||||
|
||||
let c = 0;
|
||||
engine.search((result) => {
|
||||
|
|
|
@ -15,10 +15,10 @@ describe('CSS', () => {
|
|||
|
||||
it('verifies quick outline', async () => {
|
||||
await app.workbench.quickopen.openFile('style.css');
|
||||
|
||||
const outline = await app.workbench.editor.openOutline();
|
||||
const elements = await outline.getQuickOpenElements();
|
||||
await app.screenCapturer.capture('CSS Outline result');
|
||||
assert.equal(elements.length, 2, `Did not find two outline elements`);
|
||||
|
||||
await outline.waitForQuickOpenElements(2);
|
||||
});
|
||||
|
||||
it('verifies warnings for the empty rule', async () => {
|
||||
|
|
|
@ -115,7 +115,7 @@ describe('Debug', () => {
|
|||
});
|
||||
|
||||
it('debug console', async function () {
|
||||
const result = await app.workbench.debug.console('2 + 2 \n', 'number');
|
||||
const result = await app.workbench.debug.console('2 + 2 \n');
|
||||
assert.equal(result, '4');
|
||||
});
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ const TOOLBAR_HIDDEN = `.debug-actions-widget.builder-hidden`;
|
|||
const STACK_FRAME = `${VIEWLET} .monaco-tree-row .stack-frame`;
|
||||
const VARIABLE = `${VIEWLET} .debug-variables .monaco-tree-row .expression`;
|
||||
const CONSOLE_OUTPUT = `.repl .output.expression`;
|
||||
const CONSOLE_INPUT_OUTPUT = `.repl .input-output-pair .output.expression`;
|
||||
const CONSOLE_INPUT_OUTPUT = `.repl .input-output-pair .output.expression .value`;
|
||||
const SCOPE = `${VIEWLET} .debug-variables .scope`;
|
||||
|
||||
const REPL_FOCUSED = '.repl-input-wrapper .monaco-editor.focused';
|
||||
|
@ -103,11 +103,11 @@ export class Debug extends Viewlet {
|
|||
await this.spectron.workbench.waitForOpen(name);
|
||||
}
|
||||
|
||||
async console(text: string, type: string): Promise<string> {
|
||||
await this.spectron.workbench.commandPallette.runCommand('Debug: Focus Debug Console');
|
||||
async console(text: string): Promise<string> {
|
||||
await this.spectron.workbench.quickopen.runCommand('Debug: Focus Debug Console');
|
||||
await this.spectron.client.waitForElement(REPL_FOCUSED);
|
||||
await this.spectron.client.type(text);
|
||||
await this.spectron.client.waitForElement(CONSOLE_INPUT_OUTPUT + ` .${type}`);
|
||||
await this.spectron.client.waitForElement(CONSOLE_INPUT_OUTPUT);
|
||||
|
||||
const result = await this.getConsoleOutput();
|
||||
return result[result.length - 1] || '';
|
||||
|
|
|
@ -18,9 +18,7 @@ describe('Editor', () => {
|
|||
|
||||
const outline = await app.workbench.editor.openOutline();
|
||||
|
||||
const symbols = await outline.getQuickOpenElements();
|
||||
await app.screenCapturer.capture('Javascript Outline result');
|
||||
assert.equal(symbols.length, 12, 'Quick outline elements count does not match to expected.');
|
||||
await outline.waitForQuickOpenElements(12);
|
||||
});
|
||||
|
||||
it(`finds 'All References' to 'app'`, async function () {
|
||||
|
|
|
@ -35,7 +35,7 @@ export class Editor {
|
|||
|
||||
public async findReferences(term: string, line: number): Promise<References> {
|
||||
await this.clickOnTerm(term, line);
|
||||
await this.spectron.workbench.commandPallette.runCommand('Find All References');
|
||||
await this.spectron.workbench.quickopen.runCommand('Find All References');
|
||||
const references = new References(this.spectron);
|
||||
await references.waitUntilOpen();
|
||||
return references;
|
||||
|
@ -43,7 +43,7 @@ export class Editor {
|
|||
|
||||
public async rename(term: string, line: number): Promise<Rename> {
|
||||
await this.clickOnTerm(term, line);
|
||||
await this.spectron.workbench.commandPallette.runCommand('Rename Symbol');
|
||||
await this.spectron.workbench.quickopen.runCommand('Rename Symbol');
|
||||
const rename = new Rename(term, this.spectron);
|
||||
await rename.waitUntilOpen();
|
||||
return rename;
|
||||
|
@ -51,12 +51,12 @@ export class Editor {
|
|||
|
||||
public async gotoDefinition(term: string, line: number): Promise<void> {
|
||||
await this.clickOnTerm(term, line);
|
||||
await this.spectron.workbench.commandPallette.runCommand('Go to Definition');
|
||||
await this.spectron.workbench.quickopen.runCommand('Go to Definition');
|
||||
}
|
||||
|
||||
public async peekDefinition(term: string, line: number): Promise<References> {
|
||||
await this.clickOnTerm(term, line);
|
||||
await this.spectron.workbench.commandPallette.runCommand('Peek Definition');
|
||||
await this.spectron.workbench.quickopen.runCommand('Peek Definition');
|
||||
const peek = new References(this.spectron);
|
||||
await peek.waitUntilOpen();
|
||||
return peek;
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as assert from 'assert';
|
||||
import { SpectronApplication } from '../../spectron/application';
|
||||
|
||||
describe('Explorer', () => {
|
||||
|
@ -14,22 +13,19 @@ describe('Explorer', () => {
|
|||
|
||||
it('quick open search produces correct result', async function () {
|
||||
await app.workbench.quickopen.openQuickOpen();
|
||||
await app.client.type('.js');
|
||||
const elements = await app.workbench.quickopen.getQuickOpenElements();
|
||||
await app.client.keys(['Escape', 'NULL']);
|
||||
|
||||
await app.screenCapturer.capture('Quick open result');
|
||||
assert.equal(elements.length, 7, 'There are 7 elements in quick open');
|
||||
await app.client.type('.js');
|
||||
|
||||
await app.workbench.quickopen.waitForQuickOpenElements(7);
|
||||
await app.client.keys(['Escape', 'NULL']);
|
||||
});
|
||||
|
||||
it('quick open respects fuzzy matching', async function () {
|
||||
await app.workbench.quickopen.openQuickOpen();
|
||||
|
||||
await app.client.type('a.s');
|
||||
|
||||
const elements = await app.workbench.quickopen.getQuickOpenElements();
|
||||
await app.workbench.quickopen.waitForQuickOpenElements(3);
|
||||
await app.client.keys(['Escape', 'NULL']);
|
||||
|
||||
await app.screenCapturer.capture('fuzzy match result');
|
||||
assert.equal(elements.length, 3, 'There are 3 elements in quick open');
|
||||
});
|
||||
});
|
|
@ -22,7 +22,7 @@ describe('Extensions', () => {
|
|||
|
||||
await app.reload();
|
||||
await app.workbench.extensions.waitForExtensionsViewlet();
|
||||
await app.workbench.commandPallette.runCommand('Smoke Test Check');
|
||||
await app.workbench.quickopen.runCommand('Smoke Test Check');
|
||||
|
||||
const statusbarText = await app.workbench.statusbar.getStatusbarTextByTitle('smoke test');
|
||||
await app.screenCapturer.capture('Statusbar');
|
||||
|
|
|
@ -68,7 +68,7 @@ describe('Git', () => {
|
|||
await app.workbench.scm.commit('first commit');
|
||||
await app.client.waitForText(SYNC_STATUSBAR, ' 0↓ 1↑');
|
||||
|
||||
await app.workbench.commandPallette.runCommand('Git: Stage All Changes');
|
||||
await app.workbench.quickopen.runCommand('Git: Stage All Changes');
|
||||
await app.workbench.scm.waitForChange(c => c.name === 'index.jade' && c.type === 'Index Modified');
|
||||
|
||||
await app.workbench.scm.commit('second commit');
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
|
||||
import * as assert from 'assert';
|
||||
import { SpectronApplication, CODE_WORKSPACE_PATH, VSCODE_BUILD } from '../../spectron/application';
|
||||
import { QuickOpen } from '../quickopen/quickopen';
|
||||
import { Window } from '../window';
|
||||
|
||||
describe('Multi Root', () => {
|
||||
|
@ -19,12 +18,11 @@ describe('Multi Root', () => {
|
|||
beforeEach(function () { app.screenCapturer.testName = this.currentTest.title; });
|
||||
|
||||
it('shows results from all folders', async function () {
|
||||
let quickOpen = new QuickOpen(app);
|
||||
await quickOpen.openQuickOpen();
|
||||
await app.client.type('*.*');
|
||||
const elements = await quickOpen.getQuickOpenElements();
|
||||
await app.screenCapturer.capture('quick open result');
|
||||
assert.equal(elements.length, 6);
|
||||
await app.workbench.quickopen.openQuickOpen();
|
||||
|
||||
await app.workbench.quickopen.type('*.*');
|
||||
|
||||
await app.workbench.quickopen.waitForQuickOpenElements(6);
|
||||
});
|
||||
|
||||
it('shows workspace name in title', async function () {
|
||||
|
|
|
@ -8,6 +8,10 @@ import { Element } from 'webdriverio';
|
|||
|
||||
export class QuickOpen {
|
||||
|
||||
static QUICK_OPEN_HIDDEN = 'div.quick-open-widget[aria-hidden="true"]';
|
||||
static QUICK_OPEN = 'div.quick-open-widget[aria-hidden="false"]';
|
||||
static QUICK_OPEN_FOCUSSED_INPUT = `${QuickOpen.QUICK_OPEN} .quick-open-input input:focus`;
|
||||
static QUICK_OPEN_FOCUSED_ELEMENT = `${QuickOpen.QUICK_OPEN} .quick-open-tree .monaco-tree-row.focused .monaco-highlighted-label`;
|
||||
static QUICK_OPEN_ENTRY_SELECTOR = 'div[aria-label="Quick Picker"] .monaco-tree-rows.show-twisties .monaco-tree-row .quick-open-entry';
|
||||
|
||||
constructor(readonly spectron: SpectronApplication) {
|
||||
|
@ -18,18 +22,34 @@ export class QuickOpen {
|
|||
await this.waitForQuickOpenOpened();
|
||||
}
|
||||
|
||||
public async openCommandPallette(): Promise<void> {
|
||||
await this.spectron.command('workbench.action.showCommands');
|
||||
await this.waitForQuickOpenOpened();
|
||||
}
|
||||
|
||||
public async closeQuickOpen(): Promise<void> {
|
||||
await this.spectron.command('workbench.action.closeQuickOpen');
|
||||
await this.waitForQuickOpenClosed();
|
||||
}
|
||||
|
||||
public async type(text: string): Promise<void> {
|
||||
let prefix = await this.spectron.client.getValue(QuickOpen.QUICK_OPEN_FOCUSSED_INPUT);
|
||||
await this.spectron.client.type(text);
|
||||
await this.spectron.client.waitForValue(QuickOpen.QUICK_OPEN_FOCUSSED_INPUT, prefix + text);
|
||||
}
|
||||
|
||||
public async getQuickOpenElements(): Promise<Element[]> {
|
||||
return this.spectron.client.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_SELECTOR);
|
||||
}
|
||||
|
||||
public async waitForQuickOpenElements(count: number): Promise<Element[]> {
|
||||
return this.spectron.client.waitForElements(QuickOpen.QUICK_OPEN_ENTRY_SELECTOR, elements => elements && elements.length === count);
|
||||
}
|
||||
|
||||
public async openFile(fileName: string): Promise<void> {
|
||||
await this.openQuickOpen();
|
||||
await this.spectron.client.type(fileName);
|
||||
await this.type(fileName);
|
||||
|
||||
await this.getQuickOpenElements();
|
||||
await this.spectron.client.keys(['Enter', 'NULL']);
|
||||
await this.spectron.client.waitForElement(`.tabs-container div[aria-selected="true"][aria-label="${fileName}, tab"]`);
|
||||
|
@ -37,12 +57,25 @@ export class QuickOpen {
|
|||
await this.spectron.workbench.waitForEditorFocus(fileName);
|
||||
}
|
||||
|
||||
public async runCommand(commandText: string): Promise<void> {
|
||||
await this.openCommandPallette();
|
||||
|
||||
// type the text
|
||||
await this.type(commandText);
|
||||
|
||||
// wait for best choice to be focused
|
||||
await this.spectron.client.waitForTextContent(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT, commandText);
|
||||
|
||||
// wait and click on best choice
|
||||
await this.spectron.client.waitAndClick(QuickOpen.QUICK_OPEN_FOCUSED_ELEMENT);
|
||||
}
|
||||
|
||||
protected waitForQuickOpenOpened(): Promise<Element> {
|
||||
return this.spectron.client.waitForElement('.quick-open-widget .quick-open-input input:focus');
|
||||
return this.spectron.client.waitForElement(QuickOpen.QUICK_OPEN_FOCUSSED_INPUT);
|
||||
}
|
||||
|
||||
protected waitForQuickOpenClosed(): Promise<Element> {
|
||||
return this.spectron.client.waitForElement('div.quick-open-widget[aria-hidden="true"]');
|
||||
return this.spectron.client.waitForElement(QuickOpen.QUICK_OPEN_HIDDEN);
|
||||
}
|
||||
|
||||
public async isQuickOpenVisible(): Promise<boolean> {
|
||||
|
|
|
@ -16,7 +16,7 @@ export class Terminal {
|
|||
|
||||
public async showTerminal(): Promise<void> {
|
||||
if (!await this.isVisible()) {
|
||||
await this.spectron.workbench.commandPallette.runCommand('View: Toggle Integrated Terminal');
|
||||
await this.spectron.workbench.quickopen.runCommand('View: Toggle Integrated Terminal');
|
||||
await this.spectron.client.waitForElement(Terminal.TERMINAL_CURSOR);
|
||||
await this.waitForTerminalText(text => text.length > 0, 'Waiting for Terminal to be ready');
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { QuickOpen } from '../quickopen/quickopen';
|
||||
|
||||
const QUICK_OPEN_INPUT = '.quick-open-widget .quick-open-input input';
|
||||
const QUICK_OPEN_FOCUSED_ELEMENT = '.quick-open-widget .quick-open-tree .monaco-tree-row.focused .monaco-highlighted-label';
|
||||
|
||||
export class CommandPallette extends QuickOpen {
|
||||
|
||||
public async runCommand(commandText: string): Promise<void> {
|
||||
// run command
|
||||
await this.spectron.command('workbench.action.showCommands');
|
||||
|
||||
// wait for quick open
|
||||
await this.waitForQuickOpenOpened();
|
||||
|
||||
// type the text
|
||||
await this.spectron.client.keys([commandText, 'NULL']);
|
||||
|
||||
// wait for text to be in input box
|
||||
await this.spectron.client.waitForValue(QUICK_OPEN_INPUT, `>${commandText}`);
|
||||
|
||||
// wait for best choice to be focused
|
||||
await this.spectron.client.waitForTextContent(QUICK_OPEN_FOCUSED_ELEMENT, commandText);
|
||||
|
||||
// wait and click on best choice
|
||||
await this.spectron.client.waitAndClick(QUICK_OPEN_FOCUSED_ELEMENT);
|
||||
}
|
||||
}
|
|
@ -16,21 +16,24 @@ describe('Dataloss', () => {
|
|||
const textToType = 'Hello, Code', textToTypeInUntitled = 'Hello, Unitled Code', fileName = 'readme.md', untitled = 'Untitled-1';
|
||||
await app.workbench.newUntitledFile();
|
||||
await app.client.type(textToTypeInUntitled);
|
||||
await app.screenCapturer.capture('Untitled file before reload');
|
||||
await app.workbench.explorer.openFile(fileName);
|
||||
await app.client.type(textToType);
|
||||
await app.screenCapturer.capture(`${fileName} before reload`);
|
||||
await app.screenCapturer.capture('Before reload');
|
||||
|
||||
await app.reload();
|
||||
await app.screenCapturer.capture('After reload');
|
||||
|
||||
await app.workbench.waitForActiveOpen(fileName, true);
|
||||
await app.screenCapturer.capture(`${fileName} after reload`);
|
||||
let actual = await app.workbench.editor.getEditorFirstLineText();
|
||||
await app.screenCapturer.capture(fileName + ' text');
|
||||
assert.ok(actual.startsWith(textToType), `${actual} did not start with ${textToType}`);
|
||||
|
||||
await app.workbench.waitForOpen(untitled, true);
|
||||
await app.workbench.selectTab('Untitled-1', true);
|
||||
await app.screenCapturer.capture('Untitled file after reload');
|
||||
actual = await app.workbench.editor.getEditorFirstLineText();
|
||||
await app.screenCapturer.capture('Untitled file text');
|
||||
assert.ok(actual.startsWith(textToTypeInUntitled), `${actual} did not start with ${textToTypeInUntitled}`);
|
||||
});
|
||||
});
|
|
@ -8,7 +8,6 @@ import { Explorer } from '../explorer/explorer';
|
|||
import { ActivityBar } from '../activitybar/activityBar';
|
||||
import { QuickOpen } from '../quickopen/quickopen';
|
||||
import { Extensions } from '../extensions/extensions';
|
||||
import { CommandPallette } from './commandPallette';
|
||||
import { Search } from '../search/search';
|
||||
import { Editor } from '../editor/editor';
|
||||
import { SCM } from '../git/scm';
|
||||
|
@ -23,7 +22,6 @@ export class Workbench {
|
|||
|
||||
readonly explorer: Explorer;
|
||||
readonly activitybar: ActivityBar;
|
||||
readonly commandPallette: CommandPallette;
|
||||
readonly quickopen: QuickOpen;
|
||||
readonly search: Search;
|
||||
readonly extensions: Extensions;
|
||||
|
@ -40,7 +38,6 @@ export class Workbench {
|
|||
this.explorer = new Explorer(spectron);
|
||||
this.activitybar = new ActivityBar(spectron);
|
||||
this.quickopen = new QuickOpen(spectron);
|
||||
this.commandPallette = new CommandPallette(spectron);
|
||||
this.search = new Search(spectron);
|
||||
this.extensions = new Extensions(spectron);
|
||||
this.editor = new Editor(spectron);
|
||||
|
|
|
@ -101,10 +101,10 @@ function getKeybindingPlatform(): string {
|
|||
|
||||
function toUri(path: string): string {
|
||||
if (process.platform === 'win32') {
|
||||
return `file:///${path.replace(/\\/g, '/')}`;
|
||||
return `${path.replace(/\\/g, '/')}`;
|
||||
}
|
||||
|
||||
return `file://${path}`;
|
||||
return `${path}`;
|
||||
}
|
||||
|
||||
async function setup(): Promise<void> {
|
||||
|
@ -127,11 +127,16 @@ async function setup(): Promise<void> {
|
|||
if (!fs.existsSync(workspacePath)) {
|
||||
console.log('*** Creating workspace file...');
|
||||
const workspace = {
|
||||
id: (Date.now() + Math.round(Math.random() * 1000)).toString(),
|
||||
folders: [
|
||||
toUri(path.join(testRepoLocalDir, 'public')),
|
||||
toUri(path.join(testRepoLocalDir, 'routes')),
|
||||
toUri(path.join(testRepoLocalDir, 'views'))
|
||||
{
|
||||
path: toUri(path.join(testRepoLocalDir, 'public'))
|
||||
},
|
||||
{
|
||||
path: toUri(path.join(testRepoLocalDir, 'routes'))
|
||||
},
|
||||
{
|
||||
path: toUri(path.join(testRepoLocalDir, 'views'))
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -190,7 +195,7 @@ import './areas/css/css.test';
|
|||
import './areas/editor/editor.test';
|
||||
import './areas/debug/debug.test';
|
||||
import './areas/git/git.test';
|
||||
import './areas/terminal/terminal.test';
|
||||
// import './areas/terminal/terminal.test';
|
||||
import './areas/statusbar/statusbar.test';
|
||||
import './areas/extensions/extensions.test';
|
||||
import './areas/workbench/localization.test';
|
|
@ -79,7 +79,7 @@ export class SpectronApplication {
|
|||
}
|
||||
|
||||
public async reload(): Promise<any> {
|
||||
await this.workbench.commandPallette.runCommand('Reload Window');
|
||||
await this.workbench.quickopen.runCommand('Reload Window');
|
||||
// TODO @sandy: Find a proper condition to wait for reload
|
||||
await this.wait(.5);
|
||||
await this.checkWindowReady();
|
||||
|
@ -165,7 +165,7 @@ export class SpectronApplication {
|
|||
public command(command: string, capture?: boolean): Promise<any> {
|
||||
const binding = this.keybindings.find(x => x['command'] === command);
|
||||
if (!binding) {
|
||||
return this.workbench.commandPallette.runCommand(command);
|
||||
return this.workbench.quickopen.runCommand(command);
|
||||
}
|
||||
|
||||
const keys: string = binding.key;
|
||||
|
|
10
tslint.json
10
tslint.json
|
@ -391,16 +391,6 @@
|
|||
}
|
||||
],
|
||||
"duplicate-imports": true,
|
||||
"allow-async": [
|
||||
true,
|
||||
[
|
||||
"node",
|
||||
"electron-main",
|
||||
"electron-browser",
|
||||
"extensions",
|
||||
"smoke"
|
||||
]
|
||||
],
|
||||
"translation-remind": true
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue