mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-20 00:04:14 +08:00
ILanguageSelection should not be IDisposable (#119968)
This commit is contained in:
parent
abff1971b9
commit
4cd94d0299
@ -4,7 +4,6 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Event } from 'vs/base/common/event';
|
||||
import { IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IMode, LanguageId, LanguageIdentifier } from 'vs/editor/common/modes';
|
||||
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
||||
@ -22,7 +21,7 @@ export interface ILanguageExtensionPoint {
|
||||
configuration?: URI;
|
||||
}
|
||||
|
||||
export interface ILanguageSelection extends IDisposable {
|
||||
export interface ILanguageSelection {
|
||||
readonly languageIdentifier: LanguageIdentifier;
|
||||
readonly onDidChange: Event<LanguageIdentifier>;
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { Emitter, Event } from 'vs/base/common/event';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IMode, LanguageId, LanguageIdentifier } from 'vs/editor/common/modes';
|
||||
import { FrankensteinMode } from 'vs/editor/common/modes/abstractMode';
|
||||
@ -13,20 +13,28 @@ import { LanguagesRegistry } from 'vs/editor/common/services/languagesRegistry';
|
||||
import { ILanguageSelection, IModeService } from 'vs/editor/common/services/modeService';
|
||||
import { firstOrDefault } from 'vs/base/common/arrays';
|
||||
|
||||
class LanguageSelection extends Disposable implements ILanguageSelection {
|
||||
class LanguageSelection implements ILanguageSelection {
|
||||
|
||||
public languageIdentifier: LanguageIdentifier;
|
||||
|
||||
private readonly _selector: () => LanguageIdentifier;
|
||||
|
||||
private readonly _onDidChange: Emitter<LanguageIdentifier> = this._register(new Emitter<LanguageIdentifier>());
|
||||
public readonly onDidChange: Event<LanguageIdentifier> = this._onDidChange.event;
|
||||
private readonly _onDidChange: Emitter<LanguageIdentifier>;
|
||||
public readonly onDidChange: Event<LanguageIdentifier>;
|
||||
|
||||
constructor(onLanguagesMaybeChanged: Event<void>, selector: () => LanguageIdentifier) {
|
||||
super();
|
||||
this._selector = selector;
|
||||
this.languageIdentifier = this._selector();
|
||||
this._register(onLanguagesMaybeChanged(() => this._evaluate()));
|
||||
|
||||
let listener: IDisposable;
|
||||
this._onDidChange = new Emitter<LanguageIdentifier>({
|
||||
onFirstListenerAdd: () => {
|
||||
listener = onLanguagesMaybeChanged(() => this._evaluate());
|
||||
},
|
||||
onLastListenerRemove: () => {
|
||||
listener.dispose();
|
||||
}
|
||||
});
|
||||
this.onDidChange = this._onDidChange.event;
|
||||
}
|
||||
|
||||
private _evaluate(): void {
|
||||
|
||||
@ -78,10 +78,6 @@ class ModelData implements IDisposable {
|
||||
this._languageSelectionListener.dispose();
|
||||
this._languageSelectionListener = null;
|
||||
}
|
||||
if (this._languageSelection) {
|
||||
this._languageSelection.dispose();
|
||||
this._languageSelection = null;
|
||||
}
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
|
||||
@ -28,5 +28,4 @@ export class MockMode extends Disposable implements IMode {
|
||||
export class StaticLanguageSelector implements ILanguageSelection {
|
||||
readonly onDidChange: Event<LanguageIdentifier> = Event.None;
|
||||
constructor(public readonly languageIdentifier: LanguageIdentifier) { }
|
||||
public dispose(): void { }
|
||||
}
|
||||
|
||||
@ -104,7 +104,6 @@ class PerfModelContentProvider implements ITextModelContentProvider {
|
||||
this._model.setMode(e);
|
||||
}
|
||||
}));
|
||||
this._modelDisposables.push(langId);
|
||||
this._modelDisposables.push(this._extensionService.onDidChangeExtensionsStatus(this._updateModel, this));
|
||||
|
||||
writeTransientState(this._model, { wordWrapOverride: 'off' }, this._editorService);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user