mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-14 16:52:56 -05:00
Settings editor - add setting to configure TOC behavior during search
This commit is contained in:
@@ -306,6 +306,12 @@ configurationRegistry.registerConfiguration({
|
||||
'type': 'boolean',
|
||||
'description': nls.localize('enableNaturalLanguageSettingsSearch', "Controls whether to enable the natural language search mode for settings."),
|
||||
'default': true
|
||||
},
|
||||
'workbench.settings.settingsSearchTocBehavior': {
|
||||
'type': 'string',
|
||||
'enum': ['hide', 'filter', 'show'],
|
||||
'description': nls.localize('settingsSearchTocBehavior', "Controls the behavior of the settings editor TOC while searching."),
|
||||
'default': 'hide'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -101,7 +101,6 @@
|
||||
.settings-editor > .settings-body {
|
||||
display: flex;
|
||||
margin: auto;
|
||||
margin-top: 5px;
|
||||
max-width: 1000px;
|
||||
}
|
||||
|
||||
@@ -115,7 +114,7 @@
|
||||
}
|
||||
|
||||
.search-mode .settings-toc-container {
|
||||
/* display: none; */
|
||||
display: none;
|
||||
}
|
||||
|
||||
.settings-editor > .settings-body .settings-toc-container .monaco-tree-row .settings-toc-entry {
|
||||
|
||||
@@ -468,7 +468,10 @@ export class SettingsEditor2 extends BaseEditor {
|
||||
}
|
||||
|
||||
private toggleSearchMode(): void {
|
||||
DOM.toggleClass(this.rootElement, 'search-mode', !!this.searchResultModel);
|
||||
DOM.removeClass(this.rootElement, 'search-mode');
|
||||
if (this.configurationService.getValue('workbench.settings.settingsSearchTocBehavior') === 'hide') {
|
||||
DOM.toggleClass(this.rootElement, 'search-mode', !!this.searchResultModel);
|
||||
}
|
||||
}
|
||||
|
||||
private onConfigUpdate(): TPromise<void> {
|
||||
|
||||
@@ -8,10 +8,12 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { IDataSource, IRenderer, ITree } from 'vs/base/parts/tree/browser/tree';
|
||||
import { SearchResultModel, SettingsTreeElement, SettingsTreeGroupElement, SettingsTreeSettingElement } from 'vs/workbench/parts/preferences/browser/settingsTree';
|
||||
import { ISetting } from 'vs/workbench/services/preferences/common/preferences';
|
||||
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
||||
|
||||
const $ = DOM.$;
|
||||
|
||||
export class TOCTreeModel {
|
||||
|
||||
private _currentSearchModel: SearchResultModel;
|
||||
private _settingsTreeRoot: SettingsTreeGroupElement;
|
||||
|
||||
@@ -67,6 +69,11 @@ export class TOCTreeModel {
|
||||
export type TOCTreeElement = SettingsTreeGroupElement | TOCTreeModel;
|
||||
|
||||
export class TOCDataSource implements IDataSource {
|
||||
constructor(
|
||||
@IConfigurationService private configService: IConfigurationService
|
||||
) {
|
||||
}
|
||||
|
||||
getId(tree: ITree, element: SettingsTreeGroupElement): string {
|
||||
return element.id;
|
||||
}
|
||||
@@ -77,7 +84,18 @@ export class TOCDataSource implements IDataSource {
|
||||
}
|
||||
|
||||
getChildren(tree: ITree, element: TOCTreeElement): TPromise<SettingsTreeElement[], any> {
|
||||
return TPromise.as(<SettingsTreeElement[]>element.children);
|
||||
return TPromise.as(this._getChildren(element));
|
||||
}
|
||||
|
||||
private _getChildren(element: TOCTreeElement): SettingsTreeElement[] {
|
||||
if (this.configService.getValue('workbench.settings.settingsSearchTocBehavior') === 'filter') {
|
||||
const children = element.children as SettingsTreeElement[]; // ????
|
||||
return children.filter(group => {
|
||||
return (<any>group).count !== 0;
|
||||
});
|
||||
}
|
||||
|
||||
return element.children;
|
||||
}
|
||||
|
||||
getParent(tree: ITree, element: TOCTreeElement): TPromise<any, any> {
|
||||
@@ -96,6 +114,11 @@ interface ITOCEntryTemplate {
|
||||
}
|
||||
|
||||
export class TOCRenderer implements IRenderer {
|
||||
constructor(
|
||||
@IConfigurationService private configService: IConfigurationService
|
||||
) {
|
||||
}
|
||||
|
||||
getHeight(tree: ITree, element: SettingsTreeElement): number {
|
||||
return 22;
|
||||
}
|
||||
@@ -115,7 +138,10 @@ export class TOCRenderer implements IRenderer {
|
||||
`${element.label} (${(<any>element).count})` :
|
||||
element.label;
|
||||
|
||||
DOM.toggleClass(template.element, 'no-results', (<any>element).count === 0);
|
||||
if (this.configService.getValue('workbench.settings.settingsSearchTocBehavior') === 'show') {
|
||||
DOM.toggleClass(template.element, 'no-results', (<any>element).count === 0);
|
||||
}
|
||||
|
||||
template.element.textContent = label;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user