diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index ceaff9385dd..9bdff8a8db0 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -18,7 +18,7 @@ import { LanguageFeatureRegistry } from 'vs/editor/common/modes/languageFeatureR import { TokenizationRegistryImpl } from 'vs/editor/common/modes/tokenizationRegistry'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { IMarkerData } from 'vs/platform/markers/common/markers'; -import { iconRegistry, Codicon } from 'vs/base/common/codicons'; +import { iconRegistry, Codicon, CSSIcon } from 'vs/base/common/codicons'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; /** * Open ended enum at runtime @@ -1103,84 +1103,43 @@ export const enum SymbolTag { */ export namespace SymbolKinds { - const byName = new Map(); - byName.set('file', SymbolKind.File); - byName.set('module', SymbolKind.Module); - byName.set('namespace', SymbolKind.Namespace); - byName.set('package', SymbolKind.Package); - byName.set('class', SymbolKind.Class); - byName.set('method', SymbolKind.Method); - byName.set('property', SymbolKind.Property); - byName.set('field', SymbolKind.Field); - byName.set('constructor', SymbolKind.Constructor); - byName.set('enum', SymbolKind.Enum); - byName.set('interface', SymbolKind.Interface); - byName.set('function', SymbolKind.Function); - byName.set('variable', SymbolKind.Variable); - byName.set('constant', SymbolKind.Constant); - byName.set('string', SymbolKind.String); - byName.set('number', SymbolKind.Number); - byName.set('boolean', SymbolKind.Boolean); - byName.set('array', SymbolKind.Array); - byName.set('object', SymbolKind.Object); - byName.set('key', SymbolKind.Key); - byName.set('null', SymbolKind.Null); - byName.set('enum-member', SymbolKind.EnumMember); - byName.set('struct', SymbolKind.Struct); - byName.set('event', SymbolKind.Event); - byName.set('operator', SymbolKind.Operator); - byName.set('type-parameter', SymbolKind.TypeParameter); - - const byKind = new Map(); - byKind.set(SymbolKind.File, 'file'); - byKind.set(SymbolKind.Module, 'module'); - byKind.set(SymbolKind.Namespace, 'namespace'); - byKind.set(SymbolKind.Package, 'package'); - byKind.set(SymbolKind.Class, 'class'); - byKind.set(SymbolKind.Method, 'method'); - byKind.set(SymbolKind.Property, 'property'); - byKind.set(SymbolKind.Field, 'field'); - byKind.set(SymbolKind.Constructor, 'constructor'); - byKind.set(SymbolKind.Enum, 'enum'); - byKind.set(SymbolKind.Interface, 'interface'); - byKind.set(SymbolKind.Function, 'function'); - byKind.set(SymbolKind.Variable, 'variable'); - byKind.set(SymbolKind.Constant, 'constant'); - byKind.set(SymbolKind.String, 'string'); - byKind.set(SymbolKind.Number, 'number'); - byKind.set(SymbolKind.Boolean, 'boolean'); - byKind.set(SymbolKind.Array, 'array'); - byKind.set(SymbolKind.Object, 'object'); - byKind.set(SymbolKind.Key, 'key'); - byKind.set(SymbolKind.Null, 'null'); - byKind.set(SymbolKind.EnumMember, 'enum-member'); - byKind.set(SymbolKind.Struct, 'struct'); - byKind.set(SymbolKind.Event, 'event'); - byKind.set(SymbolKind.Operator, 'operator'); - byKind.set(SymbolKind.TypeParameter, 'type-parameter'); + const byKind = new Map(); + byKind.set(SymbolKind.File, Codicon.symbolFile); + byKind.set(SymbolKind.Module, Codicon.symbolModule); + byKind.set(SymbolKind.Namespace, Codicon.symbolNamespace); + byKind.set(SymbolKind.Package, Codicon.symbolPackage); + byKind.set(SymbolKind.Class, Codicon.symbolClass); + byKind.set(SymbolKind.Method, Codicon.symbolMethod); + byKind.set(SymbolKind.Property, Codicon.symbolProperty); + byKind.set(SymbolKind.Field, Codicon.symbolField); + byKind.set(SymbolKind.Constructor, Codicon.symbolConstructor); + byKind.set(SymbolKind.Enum, Codicon.symbolEnum); + byKind.set(SymbolKind.Interface, Codicon.symbolInterface); + byKind.set(SymbolKind.Function, Codicon.symbolFunction); + byKind.set(SymbolKind.Variable, Codicon.symbolVariable); + byKind.set(SymbolKind.Constant, Codicon.symbolConstant); + byKind.set(SymbolKind.String, Codicon.symbolString); + byKind.set(SymbolKind.Number, Codicon.symbolNumber); + byKind.set(SymbolKind.Boolean, Codicon.symbolBoolean); + byKind.set(SymbolKind.Array, Codicon.symbolArray); + byKind.set(SymbolKind.Object, Codicon.symbolObject); + byKind.set(SymbolKind.Key, Codicon.symbolKey); + byKind.set(SymbolKind.Null, Codicon.symbolNull); + byKind.set(SymbolKind.EnumMember, Codicon.symbolEnumMember); + byKind.set(SymbolKind.Struct, Codicon.symbolStruct); + byKind.set(SymbolKind.Event, Codicon.symbolEvent); + byKind.set(SymbolKind.Operator, Codicon.symbolOperator); + byKind.set(SymbolKind.TypeParameter, Codicon.symbolTypeParameter); /** * @internal */ - export function fromString(value: string): SymbolKind | undefined { - return byName.get(value); - } - /** - * @internal - */ - export function toString(kind: SymbolKind): string | undefined { - return byKind.get(kind); - } - /** - * @internal - */ - export function toCssClassName(kind: SymbolKind, inline?: boolean): string { - const symbolName = byKind.get(kind); - let codicon = symbolName && iconRegistry.get('symbol-' + symbolName); - if (!codicon) { + export function toIcon(kind: SymbolKind): CSSIcon { + let icon = byKind.get(kind); + if (!icon) { console.info('No codicon found for SymbolKind ' + kind); - codicon = Codicon.symbolProperty; + icon = Codicon.symbolProperty; } - return `${inline ? 'inline' : 'block'} ${codicon.classNames}`; + return icon; } } diff --git a/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts b/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts index ddc4b3e90af..8a79f95f1d0 100644 --- a/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts +++ b/src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts @@ -235,7 +235,7 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit const symbol = symbols[index]; const symbolLabel = trim(symbol.name); - const symbolLabelWithIcon = `$(symbol-${SymbolKinds.toString(symbol.kind) || 'property'}) ${symbolLabel}`; + const symbolLabelWithIcon = `$(${SymbolKinds.toIcon(symbol.kind).id}) ${symbolLabel}`; const symbolLabelIconOffset = symbolLabelWithIcon.length - symbolLabel.length; let containerLabel = symbol.containerName; diff --git a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts index c1bc2e5377d..1be8e5b2d0c 100644 --- a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts +++ b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts @@ -14,6 +14,7 @@ import { compare } from 'vs/base/common/strings'; import { Range } from 'vs/editor/common/core/range'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { localize } from 'vs/nls'; +import { CSSIcon } from 'vs/base/common/codicons'; export class Call { constructor( @@ -118,7 +119,7 @@ export class CallRenderer implements ITreeRenderer, _index: number, template: CallRenderingTemplate): void { const { element, filterData } = node; const deprecated = element.item.tags?.includes(SymbolTag.Deprecated); - template.icon.className = SymbolKinds.toCssClassName(element.item.kind, true); + template.icon.classList.add('inline', ...CSSIcon.asClassNameArray(SymbolKinds.toIcon(element.item.kind))); template.label.setLabel( element.item.name, element.item.detail, diff --git a/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.ts b/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.ts index 2f34a0ee93c..8c606fe87bc 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/outline/documentSymbolsTree.ts @@ -23,6 +23,7 @@ import { IdleValue } from 'vs/base/common/async'; import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfigurationService'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { IOutlineComparator, OutlineConfigKeys } from 'vs/workbench/services/outline/browser/outline'; +import { CSSIcon } from 'vs/base/common/codicons'; export type DocumentSymbolItem = OutlineGroup | OutlineElement; @@ -141,7 +142,7 @@ export class DocumentSymbolRenderer implements ITreeRenderer= 0) { options.extraClasses!.push(`deprecated`); diff --git a/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts b/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts index 159ed9e7e72..cf1f3e760ec 100644 --- a/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts +++ b/src/vs/workbench/contrib/search/browser/symbolsQuickAccess.ts @@ -129,7 +129,7 @@ export class SymbolsQuickAccessProvider extends PickerQuickAccessProvider, _index: number, template: TypeRenderingTemplate): void { const { element, filterData } = node; const deprecated = element.item.tags?.includes(SymbolTag.Deprecated); - template.icon.className = SymbolKinds.toCssClassName(element.item.kind, true); + template.icon.classList.add('inline', ...CSSIcon.asClassNameArray(SymbolKinds.toIcon(element.item.kind))); template.label.setLabel( element.item.name, element.item.detail,