提交 58588dcf 编写于 作者: J Johannes Rieken

Merge branch 'joh/next'

...@@ -7,14 +7,15 @@ import * as strings from 'vs/base/common/strings'; ...@@ -7,14 +7,15 @@ import * as strings from 'vs/base/common/strings';
import { sep } from 'vs/base/common/path'; import { sep } from 'vs/base/common/path';
import { IdleValue } from 'vs/base/common/async'; import { IdleValue } from 'vs/base/common/async';
let intlFileNameCollator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }>; const intlFileNameCollator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }> = new IdleValue(() => {
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
export function setFileNameComparer(collator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }>): void { return {
intlFileNameCollator = collator; collator: collator,
} collatorIsNumeric: collator.resolvedOptions().numeric
};
});
export function compareFileNames(one: string | null, other: string | null, caseSensitive = false): number { export function compareFileNames(one: string | null, other: string | null, caseSensitive = false): number {
if (intlFileNameCollator) {
const a = one || ''; const a = one || '';
const b = other || ''; const b = other || '';
const result = intlFileNameCollator.getValue().collator.compare(a, b); const result = intlFileNameCollator.getValue().collator.compare(a, b);
...@@ -26,9 +27,6 @@ export function compareFileNames(one: string | null, other: string | null, caseS ...@@ -26,9 +27,6 @@ export function compareFileNames(one: string | null, other: string | null, caseS
} }
return result; return result;
}
return noIntlCompareFileNames(one, other, caseSensitive);
} }
const FileNameMatch = /^(.*?)(\.([^.]*))?$/; const FileNameMatch = /^(.*?)(\.([^.]*))?$/;
...@@ -54,7 +52,6 @@ export function noIntlCompareFileNames(one: string | null, other: string | null, ...@@ -54,7 +52,6 @@ export function noIntlCompareFileNames(one: string | null, other: string | null,
} }
export function compareFileExtensions(one: string | null, other: string | null): number { export function compareFileExtensions(one: string | null, other: string | null): number {
if (intlFileNameCollator) {
const [oneName, oneExtension] = extractNameAndExtension(one); const [oneName, oneExtension] = extractNameAndExtension(one);
const [otherName, otherExtension] = extractNameAndExtension(other); const [otherName, otherExtension] = extractNameAndExtension(other);
...@@ -76,24 +73,6 @@ export function compareFileExtensions(one: string | null, other: string | null): ...@@ -76,24 +73,6 @@ export function compareFileExtensions(one: string | null, other: string | null):
} }
return result; return result;
}
return noIntlCompareFileExtensions(one, other);
}
function noIntlCompareFileExtensions(one: string | null, other: string | null): number {
const [oneName, oneExtension] = extractNameAndExtension(one && one.toLowerCase());
const [otherName, otherExtension] = extractNameAndExtension(other && other.toLowerCase());
if (oneExtension !== otherExtension) {
return oneExtension < otherExtension ? -1 : 1;
}
if (oneName === otherName) {
return 0;
}
return oneName < otherName ? -1 : 1;
} }
function extractNameAndExtension(str?: string | null): [string, string] { function extractNameAndExtension(str?: string | null): [string, string] {
......
...@@ -3,23 +3,13 @@ ...@@ -3,23 +3,13 @@
* Licensed under the MIT License. See License.txt in the project root for license information. * Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { compareFileNames, compareFileExtensions, setFileNameComparer } from 'vs/base/common/comparers'; import { compareFileNames, compareFileExtensions } from 'vs/base/common/comparers';
import * as assert from 'assert'; import * as assert from 'assert';
import { IdleValue } from 'vs/base/common/async';
suite('Comparers', () => { suite('Comparers', () => {
test('compareFileNames', () => { test('compareFileNames', () => {
// Setup Intl
setFileNameComparer(new IdleValue(() => {
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
return {
collator: collator,
collatorIsNumeric: collator.resolvedOptions().numeric
};
}));
assert(compareFileNames(null, null) === 0, 'null should be equal'); assert(compareFileNames(null, null) === 0, 'null should be equal');
assert(compareFileNames(null, 'abc') < 0, 'null should be come before real values'); assert(compareFileNames(null, 'abc') < 0, 'null should be come before real values');
assert(compareFileNames('', '') === 0, 'empty should be equal'); assert(compareFileNames('', '') === 0, 'empty should be equal');
...@@ -35,15 +25,6 @@ suite('Comparers', () => { ...@@ -35,15 +25,6 @@ suite('Comparers', () => {
test('compareFileExtensions', () => { test('compareFileExtensions', () => {
// Setup Intl
setFileNameComparer(new IdleValue(() => {
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
return {
collator: collator,
collatorIsNumeric: collator.resolvedOptions().numeric
};
}));
assert(compareFileExtensions(null, null) === 0, 'null should be equal'); assert(compareFileExtensions(null, null) === 0, 'null should be equal');
assert(compareFileExtensions(null, '.abc') < 0, 'null should come before real files'); assert(compareFileExtensions(null, '.abc') < 0, 'null should come before real files');
assert(compareFileExtensions(null, 'abc') < 0, 'null should come before real files without extension'); assert(compareFileExtensions(null, 'abc') < 0, 'null should come before real files without extension');
......
...@@ -44,11 +44,10 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace ...@@ -44,11 +44,10 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace
import { MenuService } from 'vs/platform/actions/common/menuService'; import { MenuService } from 'vs/platform/actions/common/menuService';
import { IMarkerDecorationsService } from 'vs/editor/common/services/markersDecorationService'; import { IMarkerDecorationsService } from 'vs/editor/common/services/markersDecorationService';
import { MarkerDecorationsService } from 'vs/editor/common/services/markerDecorationsServiceImpl'; import { MarkerDecorationsService } from 'vs/editor/common/services/markerDecorationsServiceImpl';
import { ISuggestMemoryService, SuggestMemoryService } from 'vs/editor/contrib/suggest/suggestMemory';
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
import { BrowserAccessibilityService } from 'vs/platform/accessibility/common/accessibilityService'; import { BrowserAccessibilityService } from 'vs/platform/accessibility/common/accessibilityService';
import { ILayoutService } from 'vs/platform/layout/browser/layoutService'; import { ILayoutService } from 'vs/platform/layout/browser/layoutService';
import { ICodeLensCache, CodeLensCache } from 'vs/editor/contrib/codelens/codeLensCache'; import { getServices } from 'vs/platform/instantiation/common/extensions';
export interface IEditorOverrideServices { export interface IEditorOverrideServices {
[index: string]: any; [index: string]: any;
...@@ -100,6 +99,11 @@ export module StaticServices { ...@@ -100,6 +99,11 @@ export module StaticServices {
// Create a fresh service collection // Create a fresh service collection
let result = new ServiceCollection(); let result = new ServiceCollection();
// make sure to add all services that use `registerSingleton`
for (const { id, descriptor } of getServices()) {
result.set(id, descriptor);
}
// Initialize the service collection with the overrides // Initialize the service collection with the overrides
for (let serviceId in overrides) { for (let serviceId in overrides) {
if (overrides.hasOwnProperty(serviceId)) { if (overrides.hasOwnProperty(serviceId)) {
...@@ -157,10 +161,6 @@ export module StaticServices { ...@@ -157,10 +161,6 @@ export module StaticServices {
export const logService = define(ILogService, () => new NullLogService()); export const logService = define(ILogService, () => new NullLogService());
export const editorWorkerService = define(IEditorWorkerService, (o) => new EditorWorkerServiceImpl(modelService.get(o), resourceConfigurationService.get(o), logService.get(o))); export const editorWorkerService = define(IEditorWorkerService, (o) => new EditorWorkerServiceImpl(modelService.get(o), resourceConfigurationService.get(o), logService.get(o)));
export const suggestMemoryService = define(ISuggestMemoryService, (o) => new SuggestMemoryService(storageService.get(o), configurationService.get(o)));
export const codeLensCacheService = define(ICodeLensCache, (o) => new CodeLensCache(storageService.get(o)));
} }
export class DynamicStandaloneServices extends Disposable { export class DynamicStandaloneServices extends Disposable {
......
...@@ -6,10 +6,9 @@ ...@@ -6,10 +6,9 @@
import 'vs/workbench/browser/style'; import 'vs/workbench/browser/style';
import { localize } from 'vs/nls'; import { localize } from 'vs/nls';
import { setFileNameComparer } from 'vs/base/common/comparers';
import { Event, Emitter, setGlobalLeakWarningThreshold } from 'vs/base/common/event'; import { Event, Emitter, setGlobalLeakWarningThreshold } from 'vs/base/common/event';
import { addClasses, addClass, removeClasses } from 'vs/base/browser/dom'; import { addClasses, addClass, removeClasses } from 'vs/base/browser/dom';
import { runWhenIdle, IdleValue } from 'vs/base/common/async'; import { runWhenIdle } from 'vs/base/common/async';
import { getZoomLevel } from 'vs/base/browser/browser'; import { getZoomLevel } from 'vs/base/browser/browser';
import { mark } from 'vs/base/common/performance'; import { mark } from 'vs/base/common/performance';
import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors'; import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors';
...@@ -114,15 +113,6 @@ export class Workbench extends Layout { ...@@ -114,15 +113,6 @@ export class Workbench extends Layout {
// Configure emitter leak warning threshold // Configure emitter leak warning threshold
setGlobalLeakWarningThreshold(175); setGlobalLeakWarningThreshold(175);
// Setup Intl for comparers
setFileNameComparer(new IdleValue(() => {
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
return {
collator: collator,
collatorIsNumeric: collator.resolvedOptions().numeric
};
}));
// ARIA // ARIA
setARIAContainer(document.body); setARIAContainer(document.body);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册