diff --git a/src/vs/editor/browser/standalone/standaloneLanguages.ts b/src/vs/editor/browser/standalone/standaloneLanguages.ts index d48d4afb65a..f3f5584a0db 100644 --- a/src/vs/editor/browser/standalone/standaloneLanguages.ts +++ b/src/vs/editor/browser/standalone/standaloneLanguages.ts @@ -700,6 +700,7 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages { // enums DocumentHighlightKind: modes.DocumentHighlightKind, CompletionItemKind: CompletionItemKind, + SymbolKind: modes.SymbolKind, IndentAction: IndentAction, }; } diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index ae8c1133243..685f2b95c28 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -458,30 +458,68 @@ export interface TypeDefinitionProvider { /** * A symbol kind. */ -export type SymbolKind = - 'file' | - 'module' | - 'namespace' | - 'package' | - 'class' | - 'method' | - 'property' | - 'field' | - 'constructor' | - 'enum' | - 'interface' | - 'function' | - 'variable' | - 'constant' | - 'string' | - 'number' | - 'boolean' | - 'array' | - 'object' | - 'key' | - 'null' | - 'enum-member' | - 'struct'; +export enum SymbolKind { + File = 0, + Module = 1, + Namespace = 2, + Package = 3, + Class = 4, + Method = 5, + Property = 6, + Field = 7, + Constructor = 8, + Enum = 9, + Interface = 10, + Function = 11, + Variable = 12, + Constant = 13, + String = 14, + Number = 15, + Boolean = 16, + Array = 17, + Object = 18, + Key = 19, + Null = 20, + EnumMember = 21, + Struct = 22 +} + + +/** + * @internal + */ +export const symbolKindToCssClass = (function () { + + const _fromMapping: { [n: number]: string } = Object.create(null); + _fromMapping[SymbolKind.File] = 'file'; + _fromMapping[SymbolKind.Module] = 'module'; + _fromMapping[SymbolKind.Namespace] = 'namespace'; + _fromMapping[SymbolKind.Package] = 'package'; + _fromMapping[SymbolKind.Class] = 'class'; + _fromMapping[SymbolKind.Method] = 'method'; + _fromMapping[SymbolKind.Property] = 'property'; + _fromMapping[SymbolKind.Field] = 'field'; + _fromMapping[SymbolKind.Constructor] = 'constructor'; + _fromMapping[SymbolKind.Enum] = 'enum'; + _fromMapping[SymbolKind.Interface] = 'interface'; + _fromMapping[SymbolKind.Function] = 'function'; + _fromMapping[SymbolKind.Variable] = 'variable'; + _fromMapping[SymbolKind.Constant] = 'constant'; + _fromMapping[SymbolKind.String] = 'string'; + _fromMapping[SymbolKind.Number] = 'number'; + _fromMapping[SymbolKind.Boolean] = 'boolean'; + _fromMapping[SymbolKind.Array] = 'array'; + _fromMapping[SymbolKind.Object] = 'object'; + _fromMapping[SymbolKind.Key] = 'key'; + _fromMapping[SymbolKind.Null] = 'null'; + _fromMapping[SymbolKind.EnumMember] = 'enum-member'; + _fromMapping[SymbolKind.Struct] = 'struct'; + + return function toCssClassName(kind: SymbolKind): string { + return _fromMapping[kind] || 'property'; + }; +})(); + /** * Represents information about programming constructs like variables, classes, diff --git a/src/vs/editor/contrib/quickOpen/browser/quickOutline.ts b/src/vs/editor/contrib/quickOpen/browser/quickOutline.ts index 760a8dfdf81..3c294a3a92e 100644 --- a/src/vs/editor/contrib/quickOpen/browser/quickOutline.ts +++ b/src/vs/editor/contrib/quickOpen/browser/quickOutline.ts @@ -14,7 +14,7 @@ import { TPromise } from 'vs/base/common/winjs.base'; import { IContext, IHighlight, QuickOpenEntryGroup, QuickOpenModel } from 'vs/base/parts/quickopen/browser/quickOpenModel'; import { IAutoFocus, Mode } from 'vs/base/parts/quickopen/common/quickOpen'; import { ICommonCodeEditor, IRange, ModeContextKeys, EditorContextKeys } from 'vs/editor/common/editorCommon'; -import { SymbolInformation, DocumentSymbolProviderRegistry } from 'vs/editor/common/modes'; +import { SymbolInformation, DocumentSymbolProviderRegistry, symbolKindToCssClass } from 'vs/editor/common/modes'; import { BaseEditorQuickOpenAction, IDecorator } from './editorQuickOpen'; import { getDocumentSymbols, IOutline } from 'vs/editor/contrib/quickOpen/common/quickOpen'; import { editorAction, ServicesAccessor } from 'vs/editor/common/editorCommonExtensions'; @@ -191,7 +191,7 @@ export class QuickOutlineAction extends BaseEditorQuickOpenAction { } // Add - results.push(new SymbolEntry(label, element.kind, description, element.location.range, highlights, editor, controller)); + results.push(new SymbolEntry(label, symbolKindToCssClass(element.kind), description, element.location.range, highlights, editor, controller)); } } diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts index 668abea0329..b5c4c95fa5d 100644 --- a/src/vs/monaco.d.ts +++ b/src/vs/monaco.d.ts @@ -4708,7 +4708,31 @@ declare module monaco.languages { /** * A symbol kind. */ - export type SymbolKind = 'file' | 'module' | 'namespace' | 'package' | 'class' | 'method' | 'property' | 'field' | 'constructor' | 'enum' | 'interface' | 'function' | 'variable' | 'constant' | 'string' | 'number' | 'boolean' | 'array' | 'object' | 'key' | 'null' | 'enum-member' | 'struct'; + export enum SymbolKind { + File = 0, + Module = 1, + Namespace = 2, + Package = 3, + Class = 4, + Method = 5, + Property = 6, + Field = 7, + Constructor = 8, + Enum = 9, + Interface = 10, + Function = 11, + Variable = 12, + Constant = 13, + String = 14, + Number = 15, + Boolean = 16, + Array = 17, + Object = 18, + Key = 19, + Null = 20, + EnumMember = 21, + Struct = 22, + } /** * Represents information about programming constructs like variables, classes, diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index aa189c755b1..8f1fcaa927c 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -177,32 +177,32 @@ export const TextEdit = { export namespace SymbolKind { const _fromMapping: { [kind: number]: modes.SymbolKind } = Object.create(null); - _fromMapping[types.SymbolKind.File] = 'file'; - _fromMapping[types.SymbolKind.Module] = 'module'; - _fromMapping[types.SymbolKind.Namespace] = 'namespace'; - _fromMapping[types.SymbolKind.Package] = 'package'; - _fromMapping[types.SymbolKind.Class] = 'class'; - _fromMapping[types.SymbolKind.Method] = 'method'; - _fromMapping[types.SymbolKind.Property] = 'property'; - _fromMapping[types.SymbolKind.Field] = 'field'; - _fromMapping[types.SymbolKind.Constructor] = 'constructor'; - _fromMapping[types.SymbolKind.Enum] = 'enum'; - _fromMapping[types.SymbolKind.Interface] = 'interface'; - _fromMapping[types.SymbolKind.Function] = 'function'; - _fromMapping[types.SymbolKind.Variable] = 'variable'; - _fromMapping[types.SymbolKind.Constant] = 'constant'; - _fromMapping[types.SymbolKind.String] = 'string'; - _fromMapping[types.SymbolKind.Number] = 'number'; - _fromMapping[types.SymbolKind.Boolean] = 'boolean'; - _fromMapping[types.SymbolKind.Array] = 'array'; - _fromMapping[types.SymbolKind.Object] = 'object'; - _fromMapping[types.SymbolKind.Key] = 'key'; - _fromMapping[types.SymbolKind.Null] = 'null'; - _fromMapping[types.SymbolKind.EnumMember] = 'enum-member'; - _fromMapping[types.SymbolKind.Struct] = 'struct'; + _fromMapping[types.SymbolKind.File] = modes.SymbolKind.File; + _fromMapping[types.SymbolKind.Module] = modes.SymbolKind.Module; + _fromMapping[types.SymbolKind.Namespace] = modes.SymbolKind.Namespace; + _fromMapping[types.SymbolKind.Package] = modes.SymbolKind.Package; + _fromMapping[types.SymbolKind.Class] = modes.SymbolKind.Class; + _fromMapping[types.SymbolKind.Method] = modes.SymbolKind.Method; + _fromMapping[types.SymbolKind.Property] = modes.SymbolKind.Property; + _fromMapping[types.SymbolKind.Field] = modes.SymbolKind.Field; + _fromMapping[types.SymbolKind.Constructor] = modes.SymbolKind.Constructor; + _fromMapping[types.SymbolKind.Enum] = modes.SymbolKind.Enum; + _fromMapping[types.SymbolKind.Interface] = modes.SymbolKind.Interface; + _fromMapping[types.SymbolKind.Function] = modes.SymbolKind.Function; + _fromMapping[types.SymbolKind.Variable] = modes.SymbolKind.Variable; + _fromMapping[types.SymbolKind.Constant] = modes.SymbolKind.Constant; + _fromMapping[types.SymbolKind.String] = modes.SymbolKind.String; + _fromMapping[types.SymbolKind.Number] = modes.SymbolKind.Number; + _fromMapping[types.SymbolKind.Boolean] = modes.SymbolKind.Boolean; + _fromMapping[types.SymbolKind.Array] = modes.SymbolKind.Array; + _fromMapping[types.SymbolKind.Object] = modes.SymbolKind.Object; + _fromMapping[types.SymbolKind.Key] = modes.SymbolKind.Key; + _fromMapping[types.SymbolKind.Null] = modes.SymbolKind.Null; + _fromMapping[types.SymbolKind.EnumMember] = modes.SymbolKind.EnumMember; + _fromMapping[types.SymbolKind.Struct] = modes.SymbolKind.Struct; export function from(kind: vscode.SymbolKind): modes.SymbolKind { - return _fromMapping[kind] || 'property'; + return _fromMapping[kind] || modes.SymbolKind.Property; } export function to(kind: modes.SymbolKind): vscode.SymbolKind { diff --git a/src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts b/src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts index 571ff9579f9..2c9162826b0 100644 --- a/src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/gotoSymbolHandler.ts @@ -21,7 +21,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; import { Position, IEditorInput, ITextEditorOptions } from 'vs/platform/editor/common/editor'; import { getDocumentSymbols } from 'vs/editor/contrib/quickOpen/common/quickOpen'; -import { DocumentSymbolProviderRegistry, SymbolInformation } from 'vs/editor/common/modes'; +import { DocumentSymbolProviderRegistry, SymbolInformation, symbolKindToCssClass } from 'vs/editor/common/modes'; import { getCodeEditor } from 'vs/editor/common/services/codeEditorService'; export const GOTO_SYMBOL_PREFIX = '@'; @@ -451,7 +451,7 @@ export class GotoSymbolHandler extends QuickOpenHandler { // Show parent scope as description const description: string = element.containerName; - const icon = element.kind; + const icon = symbolKindToCssClass(element.kind); // Add results.push(new SymbolEntry(i, diff --git a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts index fac454979c1..7c37d08c221 100644 --- a/src/vs/workbench/parts/search/browser/openSymbolHandler.ts +++ b/src/vs/workbench/parts/search/browser/openSymbolHandler.ts @@ -17,7 +17,7 @@ import strings = require('vs/base/common/strings'); import { Range } from 'vs/editor/common/core/range'; import { EditorInput, IWorkbenchEditorConfiguration } from 'vs/workbench/common/editor'; import labels = require('vs/base/common/labels'); -import { SymbolInformation } from 'vs/editor/common/modes'; +import { SymbolInformation, symbolKindToCssClass } from 'vs/editor/common/modes'; import { IResourceInput } from 'vs/platform/editor/common/editor'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; @@ -56,7 +56,7 @@ class SymbolEntry extends EditorQuickOpenEntry { } public getIcon(): string { - return this._bearing.kind; + return symbolKindToCssClass(this._bearing.kind); } public getResource(): URI { @@ -106,8 +106,8 @@ class SymbolEntry extends EditorQuickOpenEntry { const elementAName = elementA.getLabel().toLowerCase(); const elementBName = elementB.getLabel().toLowerCase(); if (elementAName === elementBName) { - let elementAType = elementA._bearing.kind; - let elementBType = elementB._bearing.kind; + let elementAType = symbolKindToCssClass(elementA._bearing.kind); + let elementBType = symbolKindToCssClass(elementB._bearing.kind); return elementAType.localeCompare(elementBType); }