@@ -14,7 +14,7 @@ import {
1414 mapCompletionItemToOriginal ,
1515 mapRangeToOriginal ,
1616} from '../../../lib/documents' ;
17- import { isNotNullOrUndefined , pathToUrl } from '../../../utils' ;
17+ import { pathToUrl } from '../../../utils' ;
1818import { AppCompletionItem , AppCompletionList , CompletionsProvider } from '../../interfaces' ;
1919import { SvelteSnapshotFragment } from '../DocumentSnapshot' ;
2020import { LSAndTSDocResolver } from '../LSAndTSDocResolver' ;
@@ -92,27 +92,18 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
9292 }
9393
9494 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 ) )
9996 . map ( ( comp ) => mapCompletionItemToOriginal ( fragment , comp ) ) ;
10097
10198 return CompletionList . create ( completionItems , ! ! tsDoc . parserError ) ;
10299 }
103100
104101 private toCompletionItem (
105- fragment : SvelteSnapshotFragment ,
106102 comp : ts . CompletionEntry ,
107103 uri : string ,
108104 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 ) ;
116107
117108 return {
118109 label,
@@ -131,22 +122,11 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
131122 } ;
132123 }
133124
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 ;
139127 const isScriptElement = kind === ts . ScriptElementKind . scriptElement ;
140128 const hasModifier = Boolean ( comp . kindModifiers ) ;
141-
142129 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- }
150130
151131 if ( isScriptElement && hasModifier ) {
152132 return {
@@ -155,28 +135,13 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
155135 isSvelteComp,
156136 } ;
157137 }
158- if ( isSvelteComp && kind === ts . ScriptElementKind . classElement ) {
159- return {
160- insertText : name ,
161- label : name ,
162- isSvelteComp,
163- } ;
164- }
138+
165139 return {
166140 label : name ,
167141 isSvelteComp,
168142 } ;
169143 }
170144
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-
180145 async resolveCompletion (
181146 document : Document ,
182147 completionItem : AppCompletionItem < CompletionEntryWithIdentifer > ,
@@ -260,10 +225,6 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
260225 fragment : SvelteSnapshotFragment ,
261226 change : ts . TextChange ,
262227 ) : TextEdit {
263- if ( this . isSvelteComponentImport ( change . newText ) ) {
264- change . newText = this . changeSvelteComponentImportName ( change . newText ) ;
265- }
266-
267228 const scriptTagInfo = fragment . scriptInfo ;
268229 if ( ! scriptTagInfo ) {
269230 // no script tag defined yet, add it.
@@ -299,19 +260,6 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
299260 private isSvelteComponentImport ( text : string ) {
300261 return / i m p o r t \w + f r o m [ \s \S ] * .s v e l t e ( $ | " | ' | ) / . test ( text ) ;
301262 }
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- }
315263}
316264
317265const beginOfDocumentRange = Range . create ( Position . create ( 0 , 0 ) , Position . create ( 0 , 0 ) ) ;
0 commit comments