Skip to content

Commit 8ecc032

Browse files
committed
document symbols and deprecated, UX, internal API, microsoft#50972
1 parent a06015b commit 8ecc032

10 files changed

Lines changed: 29 additions & 2 deletions

File tree

src/vs/editor/common/modes.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,9 @@ export const enum SymbolKind {
867867
TypeParameter = 25
868868
}
869869

870+
export const enum SymbolKindTag {
871+
Deprecated = 1,
872+
}
870873

871874
/**
872875
* @internal
@@ -910,6 +913,7 @@ export interface DocumentSymbol {
910913
name: string;
911914
detail: string;
912915
kind: SymbolKind;
916+
kindTags: SymbolKindTag[];
913917
containerName?: string;
914918
range: IRange;
915919
selectionRange: IRange;

src/vs/editor/common/standalone/standaloneEnums.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,4 +660,8 @@ export enum SymbolKind {
660660
Event = 23,
661661
Operator = 24,
662662
TypeParameter = 25
663+
}
664+
665+
export enum SymbolKindTag {
666+
Deprecated = 1
663667
}

src/vs/editor/contrib/documentSymbols/media/outlineTree.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
color: var(--outline-element-color);
2121
}
2222

23+
.monaco-list .outline-element .deprecated {
24+
text-decoration: line-through;
25+
opacity: 0.66;
26+
}
27+
2328
.monaco-tree .monaco-tree-row.focused .outline-element .outline-element-detail {
2429
visibility: inherit;
2530
}

src/vs/editor/contrib/documentSymbols/outlineTree.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { createMatches, FuzzyScore } from 'vs/base/common/filters';
1212
import 'vs/css!./media/outlineTree';
1313
import 'vs/css!./media/symbol-icons';
1414
import { Range } from 'vs/editor/common/core/range';
15-
import { SymbolKind, symbolKindToCssClass } from 'vs/editor/common/modes';
15+
import { SymbolKind, symbolKindToCssClass, SymbolKindTag } from 'vs/editor/common/modes';
1616
import { OutlineElement, OutlineGroup, OutlineModel } from 'vs/editor/contrib/documentSymbols/outlineModel';
1717
import { localize } from 'vs/nls';
1818
import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel';
@@ -127,6 +127,10 @@ export class OutlineElementRenderer implements ITreeRenderer<OutlineElement, Fuz
127127
// add styles for the icons
128128
options.extraClasses.push(`outline-element-icon ${symbolKindToCssClass(element.symbol.kind, true)}`);
129129
}
130+
if (element.symbol.kindTags.indexOf(SymbolKindTag.Deprecated) >= 0) {
131+
options.extraClasses.push(`deprecated`);
132+
options.matches = [];
133+
}
130134
template.iconLabel.setLabel(element.symbol.name, element.symbol.detail, options);
131135
this._renderMarkerInfo(element, template);
132136
}

src/vs/editor/contrib/documentSymbols/test/outlineModel.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ suite('OutlineModel', function () {
7676
name,
7777
detail: 'fake',
7878
kind: SymbolKind.Boolean,
79+
kindTags: [],
7980
selectionRange: range,
8081
range: range
8182
};

src/vs/editor/contrib/quickOpen/quickOpen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ function flatten(bucket: DocumentSymbol[], entries: DocumentSymbol[], overrideCo
5151
for (let entry of entries) {
5252
bucket.push({
5353
kind: entry.kind,
54+
kindTags: [],
5455
name: entry.name,
5556
detail: entry.detail,
5657
containerName: entry.containerName || overrideContainerLabel,

src/vs/editor/standalone/browser/standaloneLanguages.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ export function createMonacoLanguagesAPI(): typeof monaco.languages {
565565
CompletionItemKindModifier: standaloneEnums.CompletionItemKindModifier,
566566
CompletionItemInsertTextRule: standaloneEnums.CompletionItemInsertTextRule,
567567
SymbolKind: standaloneEnums.SymbolKind,
568+
SymbolKindTag: standaloneEnums.SymbolKindTag,
568569
IndentAction: standaloneEnums.IndentAction,
569570
CompletionTriggerKind: standaloneEnums.CompletionTriggerKind,
570571
SignatureHelpTriggerKind: standaloneEnums.SignatureHelpTriggerKind,

src/vs/monaco.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5232,10 +5232,15 @@ declare namespace monaco.languages {
52325232
TypeParameter = 25
52335233
}
52345234

5235+
export enum SymbolKindTag {
5236+
Deprecated = 1
5237+
}
5238+
52355239
export interface DocumentSymbol {
52365240
name: string;
52375241
detail: string;
52385242
kind: SymbolKind;
5243+
kindTags: SymbolKindTag[];
52395244
containerName?: string;
52405245
range: IRange;
52415246
selectionRange: IRange;

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class DocumentSymbolAdapter {
7070
const element = <modes.DocumentSymbol>{
7171
name: info.name || '!!MISSING: name!!',
7272
kind: typeConvert.SymbolKind.from(info.kind),
73+
kindTags: [],
7374
detail: undefined!, // Strict null override — avoid changing behavior
7475
containerName: info.containerName,
7576
range: typeConvert.Range.from(info.location.range),

src/vs/workbench/api/common/extHostTypeConverters.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,8 @@ export namespace DocumentSymbol {
582582
detail: info.detail,
583583
range: Range.from(info.range),
584584
selectionRange: Range.from(info.selectionRange),
585-
kind: SymbolKind.from(info.kind)
585+
kind: SymbolKind.from(info.kind),
586+
kindTags: []
586587
};
587588
if (info.children) {
588589
result.children = info.children.map(from);

0 commit comments

Comments
 (0)