mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-12 19:18:32 -05:00
Merge VS Code 1.23.1 (#1520)
This commit is contained in:
@@ -9,9 +9,8 @@ import { Schemas } from 'vs/base/common/network';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { isEmptyObject } from 'vs/base/common/types';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import Event, { Emitter, debounceEvent } from 'vs/base/common/event';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import { IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics } from './markers';
|
||||
import { Event, Emitter, debounceEvent } from 'vs/base/common/event';
|
||||
import { IMarkerService, IMarkerData, IResourceMarker, IMarker, MarkerStatistics, MarkerSeverity } from './markers';
|
||||
|
||||
interface MapMap<V> {
|
||||
[key: string]: { [key: string]: V };
|
||||
@@ -88,11 +87,11 @@ class MarkerStats implements MarkerStatistics {
|
||||
}
|
||||
|
||||
for (const { severity } of this._service.read({ resource })) {
|
||||
if (severity === Severity.Error) {
|
||||
if (severity === MarkerSeverity.Error) {
|
||||
result.errors += 1;
|
||||
} else if (severity === Severity.Warning) {
|
||||
} else if (severity === MarkerSeverity.Warning) {
|
||||
result.warnings += 1;
|
||||
} else if (severity === Severity.Info) {
|
||||
} else if (severity === MarkerSeverity.Info) {
|
||||
result.infos += 1;
|
||||
} else {
|
||||
result.unknowns += 1;
|
||||
@@ -180,7 +179,12 @@ export class MarkerService implements IMarkerService {
|
||||
}
|
||||
|
||||
private static _toMarker(owner: string, resource: URI, data: IMarkerData): IMarker {
|
||||
let { code, severity, message, source, startLineNumber, startColumn, endLineNumber, endColumn } = data;
|
||||
let {
|
||||
code, severity,
|
||||
message, source,
|
||||
startLineNumber, startColumn, endLineNumber, endColumn,
|
||||
relatedInformation
|
||||
} = data;
|
||||
|
||||
if (!message) {
|
||||
return undefined;
|
||||
@@ -203,7 +207,8 @@ export class MarkerService implements IMarkerService {
|
||||
startLineNumber,
|
||||
startColumn,
|
||||
endLineNumber,
|
||||
endColumn
|
||||
endColumn,
|
||||
relatedInformation
|
||||
};
|
||||
}
|
||||
|
||||
@@ -257,9 +262,9 @@ export class MarkerService implements IMarkerService {
|
||||
}
|
||||
}
|
||||
|
||||
read(filter: { owner?: string; resource?: URI; take?: number; } = Object.create(null)): IMarker[] {
|
||||
read(filter: { owner?: string; resource?: URI; severities?: number, take?: number; } = Object.create(null)): IMarker[] {
|
||||
|
||||
let { owner, resource, take } = filter;
|
||||
let { owner, resource, severities, take } = filter;
|
||||
|
||||
if (!take || take < 0) {
|
||||
take = -1;
|
||||
@@ -267,11 +272,20 @@ export class MarkerService implements IMarkerService {
|
||||
|
||||
if (owner && resource) {
|
||||
// exactly one owner AND resource
|
||||
const result = MapMap.get(this._byResource, resource.toString(), owner);
|
||||
if (!result) {
|
||||
const data = MapMap.get(this._byResource, resource.toString(), owner);
|
||||
if (!data) {
|
||||
return [];
|
||||
} else {
|
||||
return result.slice(0, take > 0 ? take : undefined);
|
||||
const result: IMarker[] = [];
|
||||
for (const marker of data) {
|
||||
if (MarkerService._accept(marker, severities)) {
|
||||
const newLen = result.push(marker);
|
||||
if (take > 0 && newLen === take) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
} else if (!owner && !resource) {
|
||||
@@ -280,10 +294,11 @@ export class MarkerService implements IMarkerService {
|
||||
for (const key1 in this._byResource) {
|
||||
for (const key2 in this._byResource[key1]) {
|
||||
for (const data of this._byResource[key1][key2]) {
|
||||
const newLen = result.push(data);
|
||||
|
||||
if (take > 0 && newLen === take) {
|
||||
return result;
|
||||
if (MarkerService._accept(data, severities)) {
|
||||
const newLen = result.push(data);
|
||||
if (take > 0 && newLen === take) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -303,10 +318,11 @@ export class MarkerService implements IMarkerService {
|
||||
const result: IMarker[] = [];
|
||||
for (const key in map) {
|
||||
for (const data of map[key]) {
|
||||
const newLen = result.push(data);
|
||||
|
||||
if (take > 0 && newLen === take) {
|
||||
return result;
|
||||
if (MarkerService._accept(data, severities)) {
|
||||
const newLen = result.push(data);
|
||||
if (take > 0 && newLen === take) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,6 +330,10 @@ export class MarkerService implements IMarkerService {
|
||||
}
|
||||
}
|
||||
|
||||
private static _accept(marker: IMarker, severities?: number): boolean {
|
||||
return severities === void 0 || (severities & marker.severity) === marker.severity;
|
||||
}
|
||||
|
||||
// --- event debounce logic
|
||||
|
||||
private static _dedupeMap: { [uri: string]: boolean };
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
'use strict';
|
||||
|
||||
import URI from 'vs/base/common/uri';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import Event from 'vs/base/common/event';
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { localize } from 'vs/nls';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
|
||||
export interface IMarkerService {
|
||||
_serviceBrand: any;
|
||||
@@ -20,23 +21,68 @@ export interface IMarkerService {
|
||||
|
||||
remove(owner: string, resources: URI[]): void;
|
||||
|
||||
read(filter?: { owner?: string; resource?: URI; take?: number; }): IMarker[];
|
||||
read(filter?: { owner?: string; resource?: URI; severities?: number, take?: number; }): IMarker[];
|
||||
|
||||
onMarkerChanged: Event<URI[]>;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export interface IRelatedInformation {
|
||||
resource: URI;
|
||||
message: string;
|
||||
startLineNumber: number;
|
||||
startColumn: number;
|
||||
endLineNumber: number;
|
||||
endColumn: number;
|
||||
}
|
||||
|
||||
export enum MarkerSeverity {
|
||||
Hint = 1,
|
||||
Info = 2,
|
||||
Warning = 4,
|
||||
Error = 8,
|
||||
}
|
||||
|
||||
export namespace MarkerSeverity {
|
||||
|
||||
export function compare(a: MarkerSeverity, b: MarkerSeverity): number {
|
||||
return b - a;
|
||||
}
|
||||
|
||||
const _displayStrings: { [value: number]: string; } = Object.create(null);
|
||||
_displayStrings[MarkerSeverity.Error] = localize('sev.error', "Error");
|
||||
_displayStrings[MarkerSeverity.Warning] = localize('sev.warning', "Warning");
|
||||
_displayStrings[MarkerSeverity.Info] = localize('sev.info', "Info");
|
||||
|
||||
export function toString(a: MarkerSeverity): string {
|
||||
return _displayStrings[a] || '';
|
||||
}
|
||||
|
||||
export function fromSeverity(severity: Severity): MarkerSeverity {
|
||||
switch (severity) {
|
||||
case Severity.Error: return MarkerSeverity.Error;
|
||||
case Severity.Warning: return MarkerSeverity.Warning;
|
||||
case Severity.Info: return MarkerSeverity.Info;
|
||||
case Severity.Ignore: return MarkerSeverity.Hint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A structure defining a problem/warning/etc.
|
||||
*/
|
||||
export interface IMarkerData {
|
||||
code?: string;
|
||||
severity: Severity;
|
||||
severity: MarkerSeverity;
|
||||
message: string;
|
||||
source?: string;
|
||||
startLineNumber: number;
|
||||
startColumn: number;
|
||||
endLineNumber: number;
|
||||
endColumn: number;
|
||||
relatedInformation?: IRelatedInformation[];
|
||||
}
|
||||
|
||||
export interface IResourceMarker {
|
||||
@@ -47,7 +93,7 @@ export interface IResourceMarker {
|
||||
export interface IMarker {
|
||||
owner: string;
|
||||
resource: URI;
|
||||
severity: Severity;
|
||||
severity: MarkerSeverity;
|
||||
code?: string;
|
||||
message: string;
|
||||
source?: string;
|
||||
@@ -55,6 +101,7 @@ export interface IMarker {
|
||||
startColumn: number;
|
||||
endLineNumber: number;
|
||||
endColumn: number;
|
||||
relatedInformation?: IRelatedInformation[];
|
||||
}
|
||||
|
||||
export interface MarkerStatistics {
|
||||
@@ -79,7 +126,7 @@ export namespace IMarkerData {
|
||||
result.push(emptyString);
|
||||
}
|
||||
if (markerData.severity !== void 0 && markerData.severity !== null) {
|
||||
result.push(Severity.toString(markerData.severity));
|
||||
result.push(MarkerSeverity.toString(markerData.severity));
|
||||
} else {
|
||||
result.push(emptyString);
|
||||
}
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
'use strict';
|
||||
|
||||
|
||||
import assert = require('assert');
|
||||
import * as assert from 'assert';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import markerService = require('vs/platform/markers/common/markerService');
|
||||
import { IMarkerData } from 'vs/platform/markers/common/markers';
|
||||
import * as markerService from 'vs/platform/markers/common/markerService';
|
||||
import { IMarkerData, MarkerSeverity } from 'vs/platform/markers/common/markers';
|
||||
|
||||
function randomMarkerData(): IMarkerData {
|
||||
function randomMarkerData(severity = MarkerSeverity.Error): IMarkerData {
|
||||
return {
|
||||
severity: 1,
|
||||
severity,
|
||||
message: Math.random().toString(16),
|
||||
startLineNumber: 1,
|
||||
startColumn: 1,
|
||||
@@ -29,7 +29,7 @@ suite('Marker Service', () => {
|
||||
|
||||
service.changeAll('far', [{
|
||||
resource: URI.parse('file:///c/test/file.cs'),
|
||||
marker: randomMarkerData()
|
||||
marker: randomMarkerData(MarkerSeverity.Error)
|
||||
}]);
|
||||
|
||||
assert.equal(service.read().length, 1);
|
||||
@@ -40,12 +40,18 @@ suite('Marker Service', () => {
|
||||
|
||||
service.changeAll('boo', [{
|
||||
resource: URI.parse('file:///c/test/file.cs'),
|
||||
marker: randomMarkerData()
|
||||
marker: randomMarkerData(MarkerSeverity.Warning)
|
||||
}]);
|
||||
|
||||
assert.equal(service.read().length, 2);
|
||||
assert.equal(service.read({ owner: 'far' }).length, 1);
|
||||
assert.equal(service.read({ owner: 'boo' }).length, 1);
|
||||
|
||||
assert.equal(service.read({ severities: MarkerSeverity.Error }).length, 1);
|
||||
assert.equal(service.read({ severities: MarkerSeverity.Warning }).length, 1);
|
||||
assert.equal(service.read({ severities: MarkerSeverity.Hint }).length, 0);
|
||||
assert.equal(service.read({ severities: MarkerSeverity.Error | MarkerSeverity.Warning }).length, 2);
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user