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

Merge branch 'joh/next'

......@@ -7,14 +7,15 @@ import * as strings from 'vs/base/common/strings';
import { sep } from 'vs/base/common/path';
import { IdleValue } from 'vs/base/common/async';
let intlFileNameCollator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }>;
export function setFileNameComparer(collator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }>): void {
intlFileNameCollator = collator;
}
const intlFileNameCollator: IdleValue<{ collator: Intl.Collator, collatorIsNumeric: boolean }> = new IdleValue(() => {
const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });
return {
collator: collator,
collatorIsNumeric: collator.resolvedOptions().numeric
};
});
export function compareFileNames(one: string | null, other: string | null, caseSensitive = false): number {
if (intlFileNameCollator) {
const a = one || '';
const b = other || '';
const result = intlFileNameCollator.getValue().collator.compare(a, b);
......@@ -26,9 +27,6 @@ export function compareFileNames(one: string | null, other: string | null, caseS
}
return result;
}
return noIntlCompareFileNames(one, other, caseSensitive);
}
const FileNameMatch = /^(.*?)(\.([^.]*))?$/;
......@@ -54,7 +52,6 @@ export function noIntlCompareFileNames(one: string | null, other: string | null,
}
export function compareFileExtensions(one: string | null, other: string | null): number {
if (intlFileNameCollator) {
const [oneName, oneExtension] = extractNameAndExtension(one);
const [otherName, otherExtension] = extractNameAndExtension(other);
......@@ -76,24 +73,6 @@ export function compareFileExtensions(one: string | null, other: string | null):
}
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] {
......
......@@ -3,23 +3,13 @@
* 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 { IdleValue } from 'vs/base/common/async';
suite('Comparers', () => {
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, 'abc') < 0, 'null should be come before real values');
assert(compareFileNames('', '') === 0, 'empty should be equal');
......@@ -35,15 +25,6 @@ suite('Comparers', () => {
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, '.abc') < 0, 'null should come before real files');
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
import { MenuService } from 'vs/platform/actions/common/menuService';
import { IMarkerDecorationsService } from 'vs/editor/common/services/markersDecorationService';
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 { BrowserAccessibilityService } from 'vs/platform/accessibility/common/accessibilityService';
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 {
[index: string]: any;
......@@ -100,6 +99,11 @@ export module StaticServices {
// Create a fresh service collection
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
for (let serviceId in overrides) {
if (overrides.hasOwnProperty(serviceId)) {
......@@ -157,10 +161,6 @@ export module StaticServices {
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 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 {
......
......@@ -6,10 +6,9 @@
import 'vs/workbench/browser/style';
import { localize } from 'vs/nls';
import { setFileNameComparer } from 'vs/base/common/comparers';
import { Event, Emitter, setGlobalLeakWarningThreshold } from 'vs/base/common/event';
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 { mark } from 'vs/base/common/performance';
import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors';
......@@ -114,15 +113,6 @@ export class Workbench extends Layout {
// Configure emitter leak warning threshold
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
setARIAContainer(document.body);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册