💄 editor configuration handling (#171029)

This commit is contained in:
Benjamin Pasero 2023-01-11 10:52:30 +01:00 committed by GitHub
parent 6d25477523
commit c82c88f53a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 24 deletions

View file

@ -233,8 +233,8 @@ export class TextDiffEditor extends AbstractTextEditor<IDiffEditorViewState> imp
}
}
protected override shouldComputeConfiguration(e: ITextResourceConfigurationChangeEvent, resource: URI): boolean {
if (super.shouldComputeConfiguration(e, resource)) {
protected override shouldHandleConfigurationChangeEvent(e: ITextResourceConfigurationChangeEvent, resource: URI): boolean {
if (super.shouldHandleConfigurationChangeEvent(e, resource)) {
return true;
}

View file

@ -64,16 +64,8 @@ export abstract class AbstractTextEditor<T extends IEditorViewState> extends Abs
) {
super(id, AbstractTextEditor.VIEW_STATE_PREFERENCE_KEY, telemetryService, instantiationService, storageService, textResourceConfigurationService, themeService, editorService, editorGroupService);
this._register(this.textResourceConfigurationService.onDidChangeConfiguration(e => {
const resource = this.getActiveResource();
if (!this.shouldComputeConfiguration(e, resource)) {
return;
}
const value = resource ? this.textResourceConfigurationService.getValue<IEditorConfiguration>(resource) : undefined;
return this.handleConfigurationChangeEvent(value);
}));
// Listen to configuration changes
this._register(this.textResourceConfigurationService.onDidChangeConfiguration(e => this.handleConfigurationChangeEvent(e)));
// ARIA: if a group is added or removed, update the editor's ARIA
// label so that it appears in the label for when there are > 1 groups
@ -90,14 +82,23 @@ export abstract class AbstractTextEditor<T extends IEditorViewState> extends Abs
this._register(this.fileService.onDidChangeFileSystemProviderRegistrations(e => this.onDidChangeFileSystemProvider(e.scheme)));
}
private handleConfigurationChangeEvent(configuration?: IEditorConfiguration): void {
private handleConfigurationChangeEvent(e: ITextResourceConfigurationChangeEvent): void {
const resource = this.getActiveResource();
if (!this.shouldHandleConfigurationChangeEvent(e, resource)) {
return;
}
if (this.isVisible()) {
this.updateEditorConfiguration(configuration);
this.updateEditorConfiguration(resource);
} else {
this.hasPendingConfigurationChange = true;
}
}
protected shouldHandleConfigurationChangeEvent(e: ITextResourceConfigurationChangeEvent, resource: URI | undefined): boolean {
return e.affectsConfiguration(resource, 'editor');
}
private consumePendingConfigurationChangeEvent(): void {
if (this.hasPendingConfigurationChange) {
this.updateEditorConfiguration();
@ -105,10 +106,6 @@ export abstract class AbstractTextEditor<T extends IEditorViewState> extends Abs
}
}
protected shouldComputeConfiguration(e: ITextResourceConfigurationChangeEvent, resource: URI | undefined): boolean {
return e.affectsConfiguration(resource, 'editor');
}
protected computeConfiguration(configuration: IEditorConfiguration): ICodeEditorOptions {
// Specific editor options always overwrite user configuration
@ -257,12 +254,10 @@ export abstract class AbstractTextEditor<T extends IEditorViewState> extends Abs
return input.resource;
}
private updateEditorConfiguration(configuration?: IEditorConfiguration): void {
if (!configuration) {
const resource = this.getActiveResource();
if (resource) {
configuration = this.textResourceConfigurationService.getValue<IEditorConfiguration>(resource);
}
private updateEditorConfiguration(resource = this.getActiveResource()): void {
let configuration: IEditorConfiguration | undefined = undefined;
if (resource) {
configuration = this.textResourceConfigurationService.getValue<IEditorConfiguration>(resource);
}
if (!configuration) {