提交 ade60477 编写于 作者: J Johannes Rieken

use IconLabel when rendering suggestions, #44860

上级 b72fede4
......@@ -21,6 +21,7 @@ export interface IIconLabelValueOptions {
extraClasses?: string[];
italic?: boolean;
matches?: IMatch[];
labelEscapeNewLines?: boolean;
descriptionMatches?: IMatch[];
}
......@@ -136,7 +137,7 @@ export class IconLabel extends Disposable {
this.domNode.title = options && options.title ? options.title : '';
if (this.labelNode instanceof HighlightedLabel) {
this.labelNode.set(label || '', options ? options.matches : void 0);
this.labelNode.set(label || '', options ? options.matches : void 0, void 0, options && options.labelEscapeNewLines);
} else {
this.labelNode.textContent = label || '';
}
......
......@@ -11,7 +11,6 @@ import { Event, Emitter, chain } from 'vs/base/common/event';
import { onUnexpectedError } from 'vs/base/common/errors';
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
import { addClass, append, $, hide, removeClass, show, toggleClass, getDomNodePagePosition, hasClass } from 'vs/base/browser/dom';
import { HighlightedLabel } from 'vs/base/browser/ui/highlightedlabel/highlightedLabel';
import { IListVirtualDelegate, IListEvent, IListRenderer } from 'vs/base/browser/ui/list/list';
import { List } from 'vs/base/browser/ui/list/listWidget';
import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
......@@ -33,6 +32,7 @@ import { IOpenerService } from 'vs/platform/opener/common/opener';
import { TimeoutTimer, CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
import { CancellationToken } from 'vs/base/common/cancellation';
import { CompletionItemKind, completionKindToCssClass } from 'vs/editor/common/modes';
import { IconLabel, IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel';
const expandSuggestionDocsByDefault = false;
const maxSuggestionsToShow = 12;
......@@ -41,7 +41,7 @@ interface ISuggestionTemplateData {
root: HTMLElement;
icon: HTMLElement;
colorspan: HTMLElement;
highlightedLabel: HighlightedLabel;
iconLabel: IconLabel;
typeLabel: HTMLElement;
readMore: HTMLElement;
disposables: IDisposable[];
......@@ -97,8 +97,10 @@ class Renderer implements IListRenderer<ICompletionItem, ISuggestionTemplateData
const text = append(container, $('.contents'));
const main = append(text, $('.main'));
data.highlightedLabel = new HighlightedLabel(main);
data.disposables.push(data.highlightedLabel);
data.iconLabel = new IconLabel(main, { supportHighlights: true });
data.disposables.push(data.iconLabel);
data.typeLabel = append(main, $('span.type-label'));
data.readMore = append(main, $('span.readMore'));
......@@ -147,8 +149,18 @@ class Renderer implements IListRenderer<ICompletionItem, ISuggestionTemplateData
}
}
data.highlightedLabel.set(suggestion.label, createMatches(element.matches), '', true);
// data.highlightedLabel.set(`${suggestion.label} <${element.score}=score(${element.word}, ${suggestion.filterText || suggestion.label})>`, createMatches(element.matches));
const labelOptions: IIconLabelValueOptions = {
labelEscapeNewLines: true,
matches: createMatches(element.matches)
};
if (suggestion.kind === CompletionItemKind.File) {
addClass(data.root, 'show-file-icons');
labelOptions.extraClasses = [];
}
data.iconLabel.setValue(suggestion.label, undefined, labelOptions);
data.typeLabel.textContent = (suggestion.detail || '').replace(/\n.*$/m, '');
if (canExpandCompletionItem(element)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册