mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
allow to always show a pick entry even when the user searches (for #5073)
This commit is contained in:
@@ -289,13 +289,13 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
|
||||
// Model
|
||||
let model = new QuickOpenModel();
|
||||
let entries = picks.map((e) => {
|
||||
let entries = picks.map(e => {
|
||||
let entry = (<IPickOpenEntryItem>e);
|
||||
if (entry.height && entry.render) {
|
||||
return new PickOpenItem(entry.label, entry.description, entry.height, entry.render.bind(entry), () => progress(e));
|
||||
return new PickOpenItem(entry.label, entry.description, entry.height, entry.render.bind(entry), () => progress(e), entry.alwaysShow);
|
||||
}
|
||||
|
||||
return new PickOpenEntry(entry.label, entry.description, entry.detail, () => progress(e), entry.separator && entry.separator.border, entry.separator && entry.separator.label);
|
||||
return new PickOpenEntry(entry.label, entry.description, entry.detail, () => progress(e), entry.separator && entry.separator.border, entry.separator && entry.separator.label, entry.alwaysShow);
|
||||
});
|
||||
|
||||
if (picks.length === 0) {
|
||||
@@ -346,7 +346,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
|
||||
// Reset filtering
|
||||
if (!value) {
|
||||
entries.forEach((e) => {
|
||||
entries.forEach(e => {
|
||||
e.setHighlights(null);
|
||||
e.setHidden(false);
|
||||
});
|
||||
@@ -354,12 +354,12 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
|
||||
// Filter by value
|
||||
else {
|
||||
entries.forEach((entry) => {
|
||||
entries.forEach(entry => {
|
||||
let labelHighlights = filters.matchesFuzzy(value, entry.getLabel());
|
||||
let descriptionHighlights = options.matchOnDescription && filters.matchesFuzzy(value, entry.getDescription());
|
||||
let detailHighlights = options.matchOnDetail && entry.getDetail() && filters.matchesFuzzy(value, entry.getDetail());
|
||||
|
||||
if (labelHighlights || descriptionHighlights || detailHighlights) {
|
||||
if (entry.shouldAlwaysShow() || labelHighlights || descriptionHighlights || detailHighlights) {
|
||||
entry.setHighlights(labelHighlights, descriptionHighlights, detailHighlights);
|
||||
entry.setHidden(false);
|
||||
} else {
|
||||
@@ -441,7 +441,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
|
||||
this.previousValue = prefix;
|
||||
|
||||
let promiseCompletedOnHide = new TPromise<void>((c) => {
|
||||
let promiseCompletedOnHide = new TPromise<void>(c => {
|
||||
this.promisesToCompleteOnHide.push(c);
|
||||
});
|
||||
|
||||
@@ -660,13 +660,13 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
|
||||
// Resolve all default handlers
|
||||
let resolvePromises: TPromise<QuickOpenHandler>[] = [];
|
||||
defaultHandlers.forEach((defaultHandler) => {
|
||||
defaultHandlers.forEach(defaultHandler => {
|
||||
resolvePromises.push(this.resolveHandler(defaultHandler));
|
||||
});
|
||||
|
||||
return TPromise.join(resolvePromises).then((resolvedHandlers: QuickOpenHandler[]) => {
|
||||
let resultPromises: TPromise<void>[] = [];
|
||||
resolvedHandlers.forEach((resolvedHandler) => {
|
||||
resolvedHandlers.forEach(resolvedHandler => {
|
||||
|
||||
// Return early if the handler can not run in the current environment
|
||||
let canRun = resolvedHandler.canRun();
|
||||
@@ -675,7 +675,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
}
|
||||
|
||||
// Receive Results from Handler and apply
|
||||
resultPromises.push(resolvedHandler.getResults(value).then((result) => {
|
||||
resultPromises.push(resolvedHandler.getResults(value).then(result => {
|
||||
if (this.currentResultToken === currentResultToken) {
|
||||
let handlerResults = result && result.entries;
|
||||
|
||||
@@ -788,7 +788,7 @@ export class QuickOpenController extends WorkbenchComponent implements IQuickOpe
|
||||
}
|
||||
|
||||
// Receive Results from Handler and apply
|
||||
return resolvedHandler.getResults(value).then((result) => {
|
||||
return resolvedHandler.getResults(value).then(result => {
|
||||
if (this.currentResultToken === currentResultToken) {
|
||||
if (!result || !result.entries.length) {
|
||||
const model = new QuickOpenModel([new PlaceholderQuickOpenEntry(resolvedHandler.getEmptyLabel(value))]);
|
||||
@@ -891,7 +891,15 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
|
||||
private description: string;
|
||||
private detail: string;
|
||||
|
||||
constructor(label: string, description?: string, detail?: string, private onPreview?: () => void, private hasSeparator?: boolean, private separatorLabel?: string) {
|
||||
constructor(
|
||||
label: string,
|
||||
description?: string,
|
||||
detail?: string,
|
||||
private onPreview?: () => void,
|
||||
private hasSeparator?: boolean,
|
||||
private separatorLabel?: string,
|
||||
private alwaysShow?: boolean
|
||||
) {
|
||||
super(label);
|
||||
|
||||
this.description = description;
|
||||
@@ -918,6 +926,10 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
|
||||
return this.separatorLabel;
|
||||
}
|
||||
|
||||
public shouldAlwaysShow(): boolean {
|
||||
return this.alwaysShow;
|
||||
}
|
||||
|
||||
public run(mode: Mode, context: IEntryRunContext): boolean {
|
||||
if (mode === Mode.OPEN) {
|
||||
this._shouldRunWithContext = context;
|
||||
@@ -936,7 +948,14 @@ class PickOpenEntry extends PlaceholderQuickOpenEntry {
|
||||
class PickOpenItem extends QuickOpenEntryItem {
|
||||
private _shouldRunWithContext: IEntryRunContext;
|
||||
|
||||
constructor(private label: string, private description: string, private height: number, private renderFn: (tree: ITree, container: HTMLElement, previousCleanupFn: IElementCallback) => IElementCallback, private onPreview?: () => void) {
|
||||
constructor(
|
||||
private label: string,
|
||||
private description: string,
|
||||
private height: number,
|
||||
private renderFn: (tree: ITree, container: HTMLElement, previousCleanupFn: IElementCallback) => IElementCallback,
|
||||
private onPreview?: () => void,
|
||||
private alwaysShow?: boolean
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
||||
@@ -960,6 +979,10 @@ class PickOpenItem extends QuickOpenEntryItem {
|
||||
return this.description;
|
||||
}
|
||||
|
||||
public shouldAlwaysShow(): boolean {
|
||||
return this.alwaysShow;
|
||||
}
|
||||
|
||||
public run(mode: Mode, context: IEntryRunContext): boolean {
|
||||
if (mode === Mode.OPEN) {
|
||||
this._shouldRunWithContext = context;
|
||||
|
||||
@@ -71,6 +71,7 @@ class SelectThemeAction extends Action {
|
||||
id: 'themes.findmore',
|
||||
label: localize('findMore', "Find more in the Marketplace..."),
|
||||
separator: { border: true },
|
||||
alwaysShow: true,
|
||||
run
|
||||
});
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ export interface IPickOpenEntry {
|
||||
description?: string;
|
||||
detail?: string;
|
||||
separator?: ISeparator;
|
||||
alwaysShow?: boolean;
|
||||
run?: (context: IEntryRunContext) => void;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user