Exclude chat symbols from JS/TS workspace symbol results (#210095)

This commit is contained in:
Matt Bierner 2024-04-10 12:27:52 -07:00 committed by GitHub
parent 0e263c4b3a
commit 23915afd3b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -12,6 +12,7 @@ import type * as Proto from '../tsServer/protocol/protocol';
import * as PConst from '../tsServer/protocol/protocol.const';
import * as typeConverters from '../typeConverters';
import { ITypeScriptServiceClient } from '../typescriptService';
import { coalesce } from '../utils/arrays';
function getSymbolKind(item: Proto.NavtoItem): vscode.SymbolKind {
switch (item.kind) {
@ -64,9 +65,7 @@ class TypeScriptWorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvide
return [];
}
return response.body
.filter(item => item.containerName || item.kind !== 'alias')
.map(item => this.toSymbolInformation(item));
return coalesce(response.body.map(item => this.toSymbolInformation(item)));
}
private get searchAllOpenProjects() {
@ -89,13 +88,22 @@ class TypeScriptWorkspaceSymbolProvider implements vscode.WorkspaceSymbolProvide
return this.client.toOpenTsFilePath(document);
}
private toSymbolInformation(item: Proto.NavtoItem) {
private toSymbolInformation(item: Proto.NavtoItem): vscode.SymbolInformation | undefined {
if (!item.containerName || item.kind === 'alias') {
return;
}
const uri = this.client.toResource(item.file);
if (uri.scheme === fileSchemes.chatCodeBlock) {
return;
}
const label = TypeScriptWorkspaceSymbolProvider.getLabel(item);
const info = new vscode.SymbolInformation(
label,
getSymbolKind(item),
item.containerName || '',
typeConverters.Location.fromTextSpan(this.client.toResource(item.file), item));
typeConverters.Location.fromTextSpan(uri, item));
const kindModifiers = item.kindModifiers ? parseKindModifier(item.kindModifiers) : undefined;
if (kindModifiers?.has(PConst.KindModifiers.deprecated)) {
info.tags = [vscode.SymbolTag.Deprecated];