@@ -24,12 +24,31 @@ import { compact, oneOf } from '@zardoy/utils'
2424import filterWIthIgnoreAutoImports from './completions/ignoreAutoImports'
2525import escapeStringRegexp from 'escape-string-regexp'
2626import addSourceDefinition from './completions/addSourceDefinition'
27+ import { sharedCompletionContext } from './completions/sharedContext'
28+ import displayImportedInfo from './completions/displayImportedInfo'
2729
28- export type PrevCompletionMap = Record < string , { originalName ?: string ; documentationOverride ?: string | ts . SymbolDisplayPart [ ] ; documentationAppend ?: string } >
30+ export type PrevCompletionMap = Record <
31+ string ,
32+ {
33+ originalName ?: string
34+ /** use only if codeactions cant be returned (no source) */
35+ documentationOverride ?: string | ts . SymbolDisplayPart [ ]
36+ detailPrepend ?: string
37+ documentationAppend ?: string
38+ // textChanges?: ts.TextChange[]
39+ }
40+ >
2941export type PrevCompletionsAdditionalData = {
3042 enableMethodCompletion : boolean
3143}
3244
45+ type GetCompletionAtPositionReturnType = {
46+ completions : ts . CompletionInfo
47+ /** Let default getCompletionEntryDetails to know original name or let add documentation from here */
48+ prevCompletionsMap : PrevCompletionMap
49+ prevCompletionsAdittionalData : PrevCompletionsAdditionalData
50+ }
51+
3352export const getCompletionsAtPosition = (
3453 fileName : string ,
3554 position : number ,
@@ -39,14 +58,7 @@ export const getCompletionsAtPosition = (
3958 scriptSnapshot : ts . IScriptSnapshot ,
4059 formatOptions : ts . FormatCodeSettings | undefined ,
4160 additionalData : { scriptKind : ts . ScriptKind ; compilerOptions : ts . CompilerOptions } ,
42- ) :
43- | {
44- completions : ts . CompletionInfo
45- /** Let default getCompletionEntryDetails to know original name or let add documentation from here */
46- prevCompletionsMap : PrevCompletionMap
47- prevCompletionsAdittionalData : PrevCompletionsAdditionalData
48- }
49- | undefined => {
61+ ) : GetCompletionAtPositionReturnType | undefined => {
5062 const prevCompletionsMap : PrevCompletionMap = { }
5163 const program = languageService . getProgram ( )
5264 const sourceFile = program ?. getSourceFile ( fileName )
@@ -55,6 +67,18 @@ export const getCompletionsAtPosition = (
5567 const exactNode = findChildContainingExactPosition ( sourceFile , position )
5668 const isCheckedFile =
5769 ! tsFull . isSourceFileJS ( sourceFile as any ) || ! ! tsFull . isCheckJsEnabledForFile ( sourceFile as any , additionalData . compilerOptions as any )
70+ Object . assign ( sharedCompletionContext , {
71+ position,
72+ languageService,
73+ sourceFile,
74+ program,
75+ isCheckedFile,
76+ node : exactNode ,
77+ prevCompletionsMap,
78+ c,
79+ formatOptions : formatOptions || { } ,
80+ preferences : options || { } ,
81+ } satisfies typeof sharedCompletionContext )
5882 const unpatch = patchBuiltinMethods ( c , languageService , isCheckedFile )
5983 const getPrior = ( ) => {
6084 try {
@@ -233,6 +257,7 @@ export const getCompletionsAtPosition = (
233257 // #endregion
234258
235259 prior . entries = addSourceDefinition ( prior . entries , prevCompletionsMap , c ) ?? prior . entries
260+ displayImportedInfo ( prior . entries )
236261
237262 if ( c ( 'improveJsxCompletions' ) && leftNode ) prior . entries = improveJsxCompletions ( prior . entries , leftNode , position , sourceFile , c ( 'jsxCompletionsMap' ) )
238263
0 commit comments