@@ -24,12 +24,31 @@ import { compact, oneOf } from '@zardoy/utils'
24
24
import filterWIthIgnoreAutoImports from './completions/ignoreAutoImports'
25
25
import escapeStringRegexp from 'escape-string-regexp'
26
26
import addSourceDefinition from './completions/addSourceDefinition'
27
+ import { sharedCompletionContext } from './completions/sharedContext'
28
+ import displayImportedInfo from './completions/displayImportedInfo'
27
29
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
+ >
29
41
export type PrevCompletionsAdditionalData = {
30
42
enableMethodCompletion : boolean
31
43
}
32
44
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
+
33
52
export const getCompletionsAtPosition = (
34
53
fileName : string ,
35
54
position : number ,
@@ -39,14 +58,7 @@ export const getCompletionsAtPosition = (
39
58
scriptSnapshot : ts . IScriptSnapshot ,
40
59
formatOptions : ts . FormatCodeSettings | undefined ,
41
60
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 => {
50
62
const prevCompletionsMap : PrevCompletionMap = { }
51
63
const program = languageService . getProgram ( )
52
64
const sourceFile = program ?. getSourceFile ( fileName )
@@ -55,6 +67,18 @@ export const getCompletionsAtPosition = (
55
67
const exactNode = findChildContainingExactPosition ( sourceFile , position )
56
68
const isCheckedFile =
57
69
! 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 )
58
82
const unpatch = patchBuiltinMethods ( c , languageService , isCheckedFile )
59
83
const getPrior = ( ) => {
60
84
try {
@@ -233,6 +257,7 @@ export const getCompletionsAtPosition = (
233
257
// #endregion
234
258
235
259
prior . entries = addSourceDefinition ( prior . entries , prevCompletionsMap , c ) ?? prior . entries
260
+ displayImportedInfo ( prior . entries )
236
261
237
262
if ( c ( 'improveJsxCompletions' ) && leftNode ) prior . entries = improveJsxCompletions ( prior . entries , leftNode , position , sourceFile , c ( 'jsxCompletionsMap' ) )
238
263
0 commit comments