Skip to content

Commit 790af0a

Browse files
author
Sam El-Husseini
committed
Surfacing method to get Completion Symbol instead of details for better extensibility
1 parent b5d2707 commit 790af0a

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

src/services/completions.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,26 @@ namespace ts.Completions {
735735

736736
return undefined;
737737
}
738+
739+
export function getCompletionEntrySymbol(typeChecker: TypeChecker, log: (message: string) => void, compilerOptions: CompilerOptions, sourceFile: SourceFile, position: number, entryName: string): Symbol {
740+
// Compute all the completion symbols again.
741+
const completionData = getCompletionData(typeChecker, log, sourceFile, position);
742+
if (completionData) {
743+
const { symbols, location } = completionData;
744+
745+
// Find the symbol with the matching entry name.
746+
// We don't need to perform character checks here because we're only comparing the
747+
// name against 'entryName' (which is known to be good), not building a new
748+
// completion entry.
749+
const symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(typeChecker, s, compilerOptions.target, /*performCharacterChecks*/ false, location) === entryName ? s : undefined);
750+
751+
if (symbol) {
752+
return symbol;
753+
}
754+
}
755+
756+
return undefined;
757+
}
738758

739759
function getCompletionData(typeChecker: TypeChecker, log: (message: string) => void, sourceFile: SourceFile, position: number) {
740760
const isJavaScriptFile = isSourceFileJavaScript(sourceFile);

src/services/services.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,11 @@ namespace ts {
13511351
return Completions.getCompletionEntryDetails(program.getTypeChecker(), log, program.getCompilerOptions(), getValidSourceFile(fileName), position, entryName);
13521352
}
13531353

1354+
function getCompletionEntrySymbol(fileName: string, position: number, entryName: string): Symbol {
1355+
synchronizeHostData();
1356+
return Completions.getCompletionEntrySymbol(program.getTypeChecker(), log, program.getCompilerOptions(), getValidSourceFile(fileName), position, entryName);
1357+
}
1358+
13541359
function getQuickInfoAtPosition(fileName: string, position: number): QuickInfo {
13551360
synchronizeHostData();
13561361

src/services/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ namespace ts {
194194

195195
getCompletionsAtPosition(fileName: string, position: number): CompletionInfo;
196196
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails;
197+
getCompletionEntrySymbol(fileName: string, position: number, entryName: string): Symbol;
197198

198199
getQuickInfoAtPosition(fileName: string, position: number): QuickInfo;
199200

0 commit comments

Comments
 (0)