From 9fd562538b797195dca0e68df1275051f93c47b8 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 14 Nov 2017 22:37:44 +0100 Subject: [PATCH] #38329 Always compute most relevant line offset --- .../preferences/common/preferencesModels.ts | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/vs/workbench/parts/preferences/common/preferencesModels.ts b/src/vs/workbench/parts/preferences/common/preferencesModels.ts index 55712af7626..4c650a8c81b 100644 --- a/src/vs/workbench/parts/preferences/common/preferencesModels.ts +++ b/src/vs/workbench/parts/preferences/common/preferencesModels.ts @@ -7,7 +7,7 @@ import * as nls from 'vs/nls'; import { assign } from 'vs/base/common/objects'; import { tail } from 'vs/base/common/arrays'; import URI from 'vs/base/common/uri'; -import { IReference } from 'vs/base/common/lifecycle'; +import { IReference, Disposable } from 'vs/base/common/lifecycle'; import Event, { Emitter } from 'vs/base/common/event'; import { Registry } from 'vs/platform/registry/common/platform'; import { visit, JSONVisitor } from 'vs/base/common/json'; @@ -499,17 +499,20 @@ export class WorkspaceConfigModel extends SettingsEditorModel implements ISettin } } -export class DefaultSettings { - +export class DefaultSettings extends Disposable { private _allSettingsGroups: ISettingsGroup[]; private _content: string; private _settingsByName: Map; + private _onDidChange: Emitter = this._register(new Emitter()); + readonly onDidChange: Event = this._onDidChange.event; + constructor( private _mostCommonlyUsedSettingsKeys: string[], readonly configurationScope: ConfigurationScope, ) { + super(); } public get content(): string { @@ -527,12 +530,16 @@ export class DefaultSettings { } parse(): string { + const currentContent = this._content; const configurations = Registry.as(Extensions.Configuration).getConfigurations().slice(); const settingsGroups = this.removeEmptySettingsGroups(configurations.sort(this.compareConfigurationNodes).reduce((result, config, index, array) => this.parseConfig(config, result, array), [])); this.initAllSettingsMap(settingsGroups); const mostCommonlyUsed = this.getMostCommonlyUsedSettings(settingsGroups); this._allSettingsGroups = [mostCommonlyUsed, ...settingsGroups]; this._content = this.toContent(mostCommonlyUsed, settingsGroups); + if (this._content !== currentContent) { + this._onDidChange.fire(); + } return this._content; } @@ -678,9 +685,6 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements private _model: IModel; private _settingsByName: Map; - private _mostRelevantLineOffset: number; - - private _settingsGroups: ISettingsGroup[]; private _onDidChangeGroups: Emitter = this._register(new Emitter()); readonly onDidChangeGroups: Event = this._onDidChangeGroups.event; @@ -689,20 +693,15 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements private _uri: URI, reference: IReference, readonly configurationScope: ConfigurationScope, - defaultSettings: DefaultSettings + private readonly defaultSettings: DefaultSettings ) { super(); - this._settingsGroups = defaultSettings.settingsGroups; + this._register(defaultSettings.onDidChange(() => this._onDidChangeGroups.fire())); this._model = reference.object.textEditorModel; this._register(this.onDispose(() => reference.dispose())); - this._register(this._model.onDidChangeContent(() => { - this._settingsGroups = defaultSettings.settingsGroups; - this._onDidChangeGroups.fire(); - })); this.initAllSettingsMap(); - this._mostRelevantLineOffset = tail(this.settingsGroups).range.endLineNumber + 2; } public get uri(): URI { @@ -710,7 +709,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements } public get settingsGroups(): ISettingsGroup[] { - return this._settingsGroups; + return this.defaultSettings.settingsGroups; } public filterSettings(filter: string, groupFilter: IGroupFilter, settingFilter: ISettingFilter, mostRelevantSettings?: string[]): IFilterResult { @@ -733,7 +732,8 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements } private renderMostRelevantSettings(mostRelevantSettings: string[]): ISettingsGroup { - const builder = new SettingsContentBuilder(this._mostRelevantLineOffset - 1); + const mostRelevantLineOffset = tail(this.settingsGroups).range.endLineNumber + 2; + const builder = new SettingsContentBuilder(mostRelevantLineOffset - 1); builder.pushLine(','); const mostRelevantGroup = this.getMostRelevantSettings(mostRelevantSettings); builder.pushGroups([mostRelevantGroup]); @@ -746,7 +746,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements { text: mostRelevantContent, forceMoveMarkers: false, - range: new Range(this._mostRelevantLineOffset, 1, mostRelevantEndLine, 1), + range: new Range(mostRelevantLineOffset, 1, mostRelevantEndLine, 1), identifier: { major: 1, minor: 0 } } ]); -- GitLab