@@ -14,7 +14,7 @@ import {
14
14
mapCompletionItemToOriginal ,
15
15
mapRangeToOriginal ,
16
16
} from '../../../lib/documents' ;
17
- import { isNotNullOrUndefined , pathToUrl } from '../../../utils' ;
17
+ import { pathToUrl } from '../../../utils' ;
18
18
import { AppCompletionItem , AppCompletionList , CompletionsProvider } from '../../interfaces' ;
19
19
import { SvelteSnapshotFragment } from '../DocumentSnapshot' ;
20
20
import { LSAndTSDocResolver } from '../LSAndTSDocResolver' ;
@@ -92,27 +92,18 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
92
92
}
93
93
94
94
const completionItems = completions . entries
95
- . map ( ( comp ) =>
96
- this . toCompletionItem ( fragment , comp , pathToUrl ( tsDoc . filePath ) , position ) ,
97
- )
98
- . filter ( isNotNullOrUndefined )
95
+ . map ( ( comp ) => this . toCompletionItem ( comp , pathToUrl ( tsDoc . filePath ) , position ) )
99
96
. map ( ( comp ) => mapCompletionItemToOriginal ( fragment , comp ) ) ;
100
97
101
98
return CompletionList . create ( completionItems , ! ! tsDoc . parserError ) ;
102
99
}
103
100
104
101
private toCompletionItem (
105
- fragment : SvelteSnapshotFragment ,
106
102
comp : ts . CompletionEntry ,
107
103
uri : string ,
108
104
position : Position ,
109
- ) : AppCompletionItem < CompletionEntryWithIdentifer > | null {
110
- const result = this . getCompletionLabelAndInsert ( fragment , comp ) ;
111
- if ( ! result ) {
112
- return null ;
113
- }
114
-
115
- const { label, insertText, isSvelteComp } = result ;
105
+ ) : AppCompletionItem < CompletionEntryWithIdentifer > {
106
+ const { label, insertText, isSvelteComp } = this . getCompletionLabelAndInsert ( comp ) ;
116
107
117
108
return {
118
109
label,
@@ -131,22 +122,11 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
131
122
} ;
132
123
}
133
124
134
- private getCompletionLabelAndInsert (
135
- fragment : SvelteSnapshotFragment ,
136
- comp : ts . CompletionEntry ,
137
- ) {
138
- let { kind, kindModifiers, name, source } = comp ;
125
+ private getCompletionLabelAndInsert ( comp : ts . CompletionEntry ) {
126
+ const { kind, kindModifiers, name, source } = comp ;
139
127
const isScriptElement = kind === ts . ScriptElementKind . scriptElement ;
140
128
const hasModifier = Boolean ( comp . kindModifiers ) ;
141
-
142
129
const isSvelteComp = this . isSvelteComponentImport ( `import ${ name } from ${ source } ` ) ;
143
- if ( isSvelteComp ) {
144
- name = this . changeSvelteComponentName ( name ) ;
145
-
146
- if ( this . isExistingSvelteComponentImport ( fragment , name , source ) ) {
147
- return null ;
148
- }
149
- }
150
130
151
131
if ( isScriptElement && hasModifier ) {
152
132
return {
@@ -155,28 +135,13 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
155
135
isSvelteComp,
156
136
} ;
157
137
}
158
- if ( isSvelteComp && kind === ts . ScriptElementKind . classElement ) {
159
- return {
160
- insertText : name ,
161
- label : name ,
162
- isSvelteComp,
163
- } ;
164
- }
138
+
165
139
return {
166
140
label : name ,
167
141
isSvelteComp,
168
142
} ;
169
143
}
170
144
171
- private isExistingSvelteComponentImport (
172
- fragment : SvelteSnapshotFragment ,
173
- name : string ,
174
- source ?: string ,
175
- ) : boolean {
176
- const importStatement = new RegExp ( `import ${ name } from ["'\`][\\s\\S]+\\.svelte["'\`]` ) ;
177
- return ! ! source && ! ! fragment . text . match ( importStatement ) ;
178
- }
179
-
180
145
async resolveCompletion (
181
146
document : Document ,
182
147
completionItem : AppCompletionItem < CompletionEntryWithIdentifer > ,
@@ -260,10 +225,6 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
260
225
fragment : SvelteSnapshotFragment ,
261
226
change : ts . TextChange ,
262
227
) : TextEdit {
263
- if ( this . isSvelteComponentImport ( change . newText ) ) {
264
- change . newText = this . changeSvelteComponentImportName ( change . newText ) ;
265
- }
266
-
267
228
const scriptTagInfo = fragment . scriptInfo ;
268
229
if ( ! scriptTagInfo ) {
269
230
// no script tag defined yet, add it.
@@ -299,19 +260,6 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
299
260
private isSvelteComponentImport ( text : string ) {
300
261
return / i m p o r t \w + f r o m [ \s \S ] * .s v e l t e ( $ | " | ' | ) / . test ( text ) ;
301
262
}
302
-
303
- private changeSvelteComponentImportName ( text : string ) {
304
- return text . replace (
305
- / i m p o r t ( \w + ) f r o m / ,
306
- ( _ , componentMatch ) => `import ${ this . changeSvelteComponentName ( componentMatch ) } from ` ,
307
- ) ;
308
- }
309
-
310
- private changeSvelteComponentName ( name : string ) {
311
- const newName = name . replace ( / ( \w + ) S v e l t e $ / , '$1' ) ;
312
- // make sure first letter is uppercase
313
- return newName [ 0 ] . toUpperCase ( ) + newName . substr ( 1 ) ;
314
- }
315
263
}
316
264
317
265
const beginOfDocumentRange = Range . create ( Position . create ( 0 , 0 ) , Position . create ( 0 , 0 ) ) ;
0 commit comments