diff --git a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts index 8ec337a949c032b2c454b951011e7ccf1a74ff9c..e8df1004e74ede26a4a39ab6328d448c1a7873a5 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsEditor2.ts @@ -41,6 +41,7 @@ import { DefaultSettingsEditorModel } from 'vs/workbench/services/preferences/co import { editorBackground, foreground } from 'vs/platform/theme/common/colorRegistry'; import { settingsHeaderForeground } from 'vs/workbench/parts/preferences/browser/settingsWidgets'; import { Separator } from 'vs/base/browser/ui/actionbar/actionbar'; +import { PreferencesEditor } from 'vs/workbench/parts/preferences/browser/preferencesEditor'; const $ = DOM.$; @@ -351,7 +352,13 @@ export class SettingsEditor2 extends BaseEditor { const renderer = this.instantiationService.createInstance(SettingsRenderer, this.settingsTreeContainer); this._register(renderer.onDidChangeSetting(e => this.onDidChangeSetting(e.key, e.value))); - this._register(renderer.onDidOpenSettings(() => this.openSettingsFile())); + this._register(renderer.onDidOpenSettings(settingKey => { + this.openSettingsFile().then(editor => { + if (editor instanceof PreferencesEditor && settingKey) { + editor.focusSearch(settingKey); + } + }); + })); this._register(renderer.onDidClickSettingLink(settingName => this.revealSetting(settingName))); this.settingsTree = this.instantiationService.createInstance(SettingsTree, diff --git a/src/vs/workbench/parts/preferences/browser/settingsTree.ts b/src/vs/workbench/parts/preferences/browser/settingsTree.ts index 85fca4d80cc5ea6a73aeba966f92cd141652e886..e1dfd2f0e4fdb90eedbcffcd091398b63d493bd4 100644 --- a/src/vs/workbench/parts/preferences/browser/settingsTree.ts +++ b/src/vs/workbench/parts/preferences/browser/settingsTree.ts @@ -537,8 +537,8 @@ export class SettingsRenderer implements ITreeRenderer { private readonly _onDidChangeSetting: Emitter = new Emitter(); public readonly onDidChangeSetting: Event = this._onDidChangeSetting.event; - private readonly _onDidOpenSettings: Emitter = new Emitter(); - public readonly onDidOpenSettings: Event = this._onDidOpenSettings.event; + private readonly _onDidOpenSettings: Emitter = new Emitter(); + public readonly onDidOpenSettings: Event = this._onDidOpenSettings.event; private readonly _onDidClickSettingLink: Emitter = new Emitter(); public readonly onDidClickSettingLink: Event = this._onDidClickSettingLink.event; @@ -917,7 +917,7 @@ export class SettingsRenderer implements ITreeRenderer { const openSettingsButton = new Button(common.controlElement, { title: true, buttonBackground: null, buttonHoverBackground: null }); common.toDispose.push(openSettingsButton); - common.toDispose.push(openSettingsButton.onDidClick(() => this._onDidOpenSettings.fire())); + common.toDispose.push(openSettingsButton.onDidClick(() => template.onChange(null))); openSettingsButton.label = localize('editInSettingsJson', "Edit in settings.json"); openSettingsButton.element.classList.add('edit-in-settings-button'); @@ -1126,8 +1126,7 @@ export class SettingsRenderer implements ITreeRenderer { private renderComplexSetting(dataElement: SettingsTreeSettingElement, isSelected: boolean, template: ISettingComplexItemTemplate): void { template.button.element.tabIndex = isSelected ? 0 : -1; - - template.onChange = () => this._onDidOpenSettings.fire(); + template.onChange = () => this._onDidOpenSettings.fire(dataElement.setting.key); } disposeTemplate(tree: ITree, templateId: string, template: IDisposableTemplate): void {