diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts
index 27aa97b93c5..dcc2fab9afb 100644
--- a/src/vs/editor/common/modes.ts
+++ b/src/vs/editor/common/modes.ts
@@ -210,7 +210,8 @@ export type SuggestionType = 'method'
| 'file'
| 'reference'
| 'customcolor'
- | 'folder';
+ | 'folder'
+ | 'type-parameter';
/**
* @internal
@@ -494,7 +495,8 @@ export enum SymbolKind {
EnumMember = 21,
Struct = 22,
Event = 23,
- Operator = 24
+ Operator = 24,
+ TypeParameter = 25
}
@@ -529,6 +531,7 @@ export const symbolKindToCssClass = (function () {
_fromMapping[SymbolKind.Struct] = 'struct';
_fromMapping[SymbolKind.Event] = 'event';
_fromMapping[SymbolKind.Operator] = 'operator';
+ _fromMapping[SymbolKind.TypeParameter] = 'type-parameter';
return function toCssClassName(kind: SymbolKind): string {
return _fromMapping[kind] || 'property';
diff --git a/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode.svg b/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode.svg
new file mode 100644
index 00000000000..788cc8d6450
--- /dev/null
+++ b/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode_inverse.svg b/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode_inverse.svg
new file mode 100644
index 00000000000..6cec71cb033
--- /dev/null
+++ b/src/vs/editor/contrib/suggest/browser/media/Template_16x_vscode_inverse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/vs/editor/contrib/suggest/browser/media/suggest.css b/src/vs/editor/contrib/suggest/browser/media/suggest.css
index 4ee0c397f26..3714be6e58f 100644
--- a/src/vs/editor/contrib/suggest/browser/media/suggest.css
+++ b/src/vs/editor/contrib/suggest/browser/media/suggest.css
@@ -134,6 +134,7 @@
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.class { background-image: url('Class_16x.svg'); }
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.interface { background-image: url('Interface_16x.svg'); }
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.struct { background-image: url('Structure_16x_vscode.svg'); }
+.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.type-parameter { background-image: url('Template_16x_vscode.svg'); }
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.module { background-image: url('Namespace_16x.svg'); }
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.property { background-image: url('Property_16x.svg'); }
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.unit { background-image: url('Ruler_16x.svg'); }
@@ -272,6 +273,9 @@
.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .icon.struct,
.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .icon.struct { background-image: url('Structure_16x_vscode_inverse.svg'); }
+.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .icon.type-parameter,
+.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .icon.type-parameter { background-image: url('Template_16x_vscode_inverse.svg'); }
+
.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .icon.module,
.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .icon.module { background-image: url('Namespace_inverse_16x.svg'); }
diff --git a/src/vs/monaco.d.ts b/src/vs/monaco.d.ts
index 0f10390ac50..6d9c528a60b 100644
--- a/src/vs/monaco.d.ts
+++ b/src/vs/monaco.d.ts
@@ -4749,6 +4749,7 @@ declare module monaco.languages {
Struct = 22,
Event = 23,
Operator = 24,
+ TypeParameter = 25,
}
/**
diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts
index 92ac4472116..05c594b6e43 100644
--- a/src/vs/vscode.d.ts
+++ b/src/vs/vscode.d.ts
@@ -1877,7 +1877,8 @@ declare module 'vscode' {
EnumMember = 21,
Struct = 22,
Event = 23,
- Operator = 24
+ Operator = 24,
+ TypeParameter = 25
}
/**
@@ -2442,7 +2443,8 @@ declare module 'vscode' {
Constant = 20,
Struct = 21,
Event = 22,
- Operator = 23
+ Operator = 23,
+ TypeParameter = 24
}
/**
diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts
index c159a6e38c6..cbb9164d699 100644
--- a/src/vs/workbench/api/node/extHostTypeConverters.ts
+++ b/src/vs/workbench/api/node/extHostTypeConverters.ts
@@ -205,6 +205,7 @@ export namespace SymbolKind {
_fromMapping[types.SymbolKind.Struct] = modes.SymbolKind.Struct;
_fromMapping[types.SymbolKind.Event] = modes.SymbolKind.Event;
_fromMapping[types.SymbolKind.Operator] = modes.SymbolKind.Operator;
+ _fromMapping[types.SymbolKind.TypeParameter] = modes.SymbolKind.TypeParameter;
export function from(kind: vscode.SymbolKind): modes.SymbolKind {
return _fromMapping[kind] || modes.SymbolKind.Property;
@@ -294,6 +295,7 @@ export const CompletionItemKind = {
case types.CompletionItemKind.Folder: return 'folder';
case types.CompletionItemKind.Event: return 'event';
case types.CompletionItemKind.Operator: return 'operator';
+ case types.CompletionItemKind.TypeParameter: return 'type-parameter';
}
return 'property';
},
diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts
index 53cc58a6d8a..a49e6c80e3c 100644
--- a/src/vs/workbench/api/node/extHostTypes.ts
+++ b/src/vs/workbench/api/node/extHostTypes.ts
@@ -763,7 +763,8 @@ export enum SymbolKind {
EnumMember = 21,
Struct = 22,
Event = 23,
- Operator = 24
+ Operator = 24,
+ TypeParameter = 25
}
export class SymbolInformation {
@@ -876,7 +877,8 @@ export enum CompletionItemKind {
Constant = 20,
Struct = 21,
Event = 22,
- Operator = 23
+ Operator = 23,
+ TypeParameter = 24
}
export class CompletionItem {
diff --git a/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode.svg b/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode.svg
new file mode 100644
index 00000000000..788cc8d6450
--- /dev/null
+++ b/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode_inverse.svg b/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode_inverse.svg
new file mode 100644
index 00000000000..6cec71cb033
--- /dev/null
+++ b/src/vs/workbench/parts/quickopen/browser/media/Template_16x_vscode_inverse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/vs/workbench/parts/quickopen/browser/media/gotoSymbolHandler.css b/src/vs/workbench/parts/quickopen/browser/media/gotoSymbolHandler.css
index f0b7095b8a0..c761838633d 100644
--- a/src/vs/workbench/parts/quickopen/browser/media/gotoSymbolHandler.css
+++ b/src/vs/workbench/parts/quickopen/browser/media/gotoSymbolHandler.css
@@ -53,6 +53,16 @@
background-image: url('Operator_16x_vscode_inverse.svg');
}
+.monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.type-parameter {
+ background-image: url('Template_16x_vscode.svg');
+ background-repeat: no-repeat;
+ background-position: 0 -2px;
+}
+.vs-dark .monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.type-parameter,
+.hc-black .monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.type-parameter {
+ background-image: url('Template_16x_vscode_inverse.svg');
+}
+
.monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.method,
.monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.function,
.monaco-workbench .quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.constructor,