Skip to content

Commit d75c4f8

Browse files
committed
Move clean up of markers to markers decoration service
1 parent 41ae0c7 commit d75c4f8

9 files changed

Lines changed: 20 additions & 32 deletions

File tree

src/vs/editor/common/services/markerDecorationsServiceImpl.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { IModelService } from 'vs/editor/common/services/modelService';
1414
import { Range } from 'vs/editor/common/core/range';
1515
import { keys } from 'vs/base/common/map';
1616
import { IMarkerDecorationsService } from 'vs/editor/common/services/markersDecorationService';
17+
import { Schemas } from 'vs/base/common/network';
1718

1819
function MODEL_ID(resource: URI): string {
1920
return resource.toString();
@@ -87,6 +88,15 @@ export class MarkerDecorationsService extends Disposable implements IMarkerDecor
8788
markerDecorations.dispose();
8889
this._markerDecorations.delete(MODEL_ID(model.uri));
8990
}
91+
92+
// clean up markers for internal, transient models
93+
if (model.uri.scheme === Schemas.inMemory
94+
|| model.uri.scheme === Schemas.internal
95+
|| model.uri.scheme === Schemas.vscode) {
96+
if (this._markerService) {
97+
this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService.remove(owner, [model.uri]));
98+
}
99+
}
90100
}
91101

92102
private updateDecorations(markerDecorations: MarkerDecorations): void {

src/vs/editor/common/services/modelServiceImpl.ts

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import { Emitter, Event } from 'vs/base/common/event';
77
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
8-
import * as network from 'vs/base/common/network';
98
import * as platform from 'vs/base/common/platform';
109
import { URI } from 'vs/base/common/uri';
1110
import { EDITOR_MODEL_DEFAULTS } from 'vs/editor/common/config/editorOptions';
@@ -20,7 +19,6 @@ import { ILanguageSelection } from 'vs/editor/common/services/modeService';
2019
import { IModelService } from 'vs/editor/common/services/modelService';
2120
import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration';
2221
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
23-
import { IMarkerService } from 'vs/platform/markers/common/markers';
2422

2523
function MODEL_ID(resource: URI): string {
2624
return resource.toString();
@@ -92,8 +90,6 @@ const DEFAULT_EOL = (platform.isLinux || platform.isMacintosh) ? DefaultEndOfLin
9290
export class ModelServiceImpl extends Disposable implements IModelService {
9391
public _serviceBrand: any;
9492

95-
private _markerService: IMarkerService | null;
96-
private _markerServiceSubscription: IDisposable;
9793
private _configurationService: IConfigurationService;
9894
private _configurationServiceSubscription: IDisposable;
9995
private _resourcePropertiesService: ITextResourcePropertiesService;
@@ -117,12 +113,10 @@ export class ModelServiceImpl extends Disposable implements IModelService {
117113
private _models: { [modelId: string]: ModelData; };
118114

119115
constructor(
120-
@IMarkerService markerService: IMarkerService | null,
121116
@IConfigurationService configurationService: IConfigurationService,
122117
@ITextResourcePropertiesService resourcePropertiesService: ITextResourcePropertiesService
123118
) {
124119
super();
125-
this._markerService = markerService;
126120
this._configurationService = configurationService;
127121
this._resourcePropertiesService = resourcePropertiesService;
128122
this._models = {};
@@ -237,27 +231,10 @@ export class ModelServiceImpl extends Disposable implements IModelService {
237231
}
238232

239233
public dispose(): void {
240-
if (this._markerServiceSubscription) {
241-
this._markerServiceSubscription.dispose();
242-
}
243234
this._configurationServiceSubscription.dispose();
244235
super.dispose();
245236
}
246237

247-
private _cleanUp(model: ITextModel): void {
248-
// clean up markers for internal, transient models
249-
if (model.uri.scheme === network.Schemas.inMemory
250-
|| model.uri.scheme === network.Schemas.internal
251-
|| model.uri.scheme === network.Schemas.vscode) {
252-
if (this._markerService) {
253-
this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService!.remove(owner, [model.uri]));
254-
}
255-
}
256-
257-
// clean up cache
258-
delete this._modelCreationOptionsByLanguageAndResource[model.getLanguageIdentifier().language + model.uri];
259-
}
260-
261238
// --- begin IModelService
262239

263240
private _createModelData(value: string | ITextBufferFactory, languageIdentifier: LanguageIdentifier, resource: URI | null | undefined, isForSimpleWidget: boolean): ModelData {
@@ -416,7 +393,9 @@ export class ModelServiceImpl extends Disposable implements IModelService {
416393
delete this._models[modelId];
417394
modelData.dispose();
418395

419-
this._cleanUp(model);
396+
// clean up cache
397+
delete this._modelCreationOptionsByLanguageAndResource[model.getLanguageIdentifier().language + model.uri];
398+
420399
this._onModelRemoved.fire(model);
421400
}
422401

src/vs/editor/contrib/smartSelect/test/smartSelect.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import { javascriptOnEnterRules } from 'vs/editor/test/common/modes/supports/jav
1515
import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration';
1616
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1717
import { isLinux, isMacintosh } from 'vs/base/common/platform';
18-
import { MarkerService } from 'vs/platform/markers/common/markerService';
1918
import { BracketSelectionRangeProvider } from 'vs/editor/contrib/smartSelect/bracketSelections';
2019
import { provideSelectionRanges } from 'vs/editor/contrib/smartSelect/smartSelect';
2120
import { CancellationToken } from 'vs/base/common/cancellation';
@@ -66,7 +65,7 @@ suite('SmartSelect', () => {
6665

6766
setup(() => {
6867
const configurationService = new TestConfigurationService();
69-
modelService = new ModelServiceImpl(new MarkerService(), configurationService, new TestTextResourcePropertiesService(configurationService));
68+
modelService = new ModelServiceImpl(configurationService, new TestTextResourcePropertiesService(configurationService));
7069
mode = new MockJSMode();
7170
});
7271

src/vs/editor/standalone/browser/standaloneServices.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ export module StaticServices {
135135

136136
export const modeService = define(IModeService, (o) => new ModeServiceImpl());
137137

138-
export const modelService = define(IModelService, (o) => new ModelServiceImpl(markerService.get(o), configurationService.get(o), resourcePropertiesService.get(o)));
138+
export const modelService = define(IModelService, (o) => new ModelServiceImpl(configurationService.get(o), resourcePropertiesService.get(o)));
139139

140140
export const markerDecorationsService = define(IMarkerDecorationsService, (o) => new MarkerDecorationsService(modelService.get(o), markerService.get(o)));
141141

src/vs/editor/test/common/services/modelService.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ suite('ModelService', () => {
2727
configService.setUserConfiguration('files', { 'eol': '\n' });
2828
configService.setUserConfiguration('files', { 'eol': '\r\n' }, URI.file(platform.isWindows ? 'c:\\myroot' : '/myroot'));
2929

30-
modelService = new ModelServiceImpl(null, configService, new TestTextResourcePropertiesService(configService));
30+
modelService = new ModelServiceImpl(configService, new TestTextResourcePropertiesService(configService));
3131
});
3232

3333
teardown(() => {

src/vs/workbench/test/electron-browser/api/mainThreadDocumentsAndEditors.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ suite('MainThreadDocumentsAndEditors', () => {
4242
deltas.length = 0;
4343
const configService = new TestConfigurationService();
4444
configService.setUserConfiguration('editor', { 'detectIndentation': false });
45-
modelService = new ModelServiceImpl(null, configService, new TestTextResourcePropertiesService(configService));
45+
modelService = new ModelServiceImpl(configService, new TestTextResourcePropertiesService(configService));
4646
codeEditorService = new TestCodeEditorService();
4747
textFileService = new class extends mock<ITextFileService>() {
4848
isDirty() { return false; }

src/vs/workbench/test/electron-browser/api/mainThreadEditors.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ suite('MainThreadEditors', () => {
4141

4242
setup(() => {
4343
const configService = new TestConfigurationService();
44-
modelService = new ModelServiceImpl(null, configService, new TestTextResourcePropertiesService(configService));
44+
modelService = new ModelServiceImpl(configService, new TestTextResourcePropertiesService(configService));
4545
const codeEditorService = new TestCodeEditorService();
4646

4747
movedResources.clear();

src/vs/workbench/test/electron-browser/quickopen.perf.integrationTest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ suite.skip('QuickOpen performance (integration)', () => {
7272
[ITelemetryService, telemetryService],
7373
[IConfigurationService, configurationService],
7474
[ITextResourcePropertiesService, textResourcePropertiesService],
75-
[IModelService, new ModelServiceImpl(null, configurationService, textResourcePropertiesService)],
75+
[IModelService, new ModelServiceImpl(configurationService, textResourcePropertiesService)],
7676
[IWorkspaceContextService, new TestContextService(testWorkspace(URI.file(testWorkspacePath)))],
7777
[IEditorService, new TestEditorService()],
7878
[IEditorGroupsService, new TestEditorGroupsService()],

src/vs/workbench/test/electron-browser/textsearch.perf.integrationTest.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ suite.skip('TextSearch performance (integration)', () => {
6262
[ITelemetryService, telemetryService],
6363
[IConfigurationService, configurationService],
6464
[ITextResourcePropertiesService, textResourcePropertiesService],
65-
[IModelService, new ModelServiceImpl(null, configurationService, textResourcePropertiesService)],
65+
[IModelService, new ModelServiceImpl(configurationService, textResourcePropertiesService)],
6666
[IWorkspaceContextService, new TestContextService(testWorkspace(URI.file(testWorkspacePath)))],
6767
[IEditorService, new TestEditorService()],
6868
[IEditorGroupsService, new TestEditorGroupsService()],

0 commit comments

Comments
 (0)