@@ -109,6 +109,48 @@ function getEventModifierCompletion(attributeContext: AttributeContext): Complet
109109 return CompletionList . create ( items ) ;
110110}
111111
112+ const atCompletionItems = createCompletionItems ( [
113+ { tag : 'html' , label : 'html' } ,
114+ { tag : 'debug' , label : 'debug' } ,
115+ { tag : 'const' , label : 'const' } ,
116+ { tag : 'render' , label : 'render' } ,
117+ { tag : 'attach' , label : 'attach' }
118+ ] ) ;
119+
120+ const hashtagCompletionItems = createCompletionItems ( [
121+ { tag : 'if' , label : 'if' , insertText : 'if $1}\n\t$2\n{/if' } ,
122+ { tag : 'each' , label : 'each' , insertText : 'each $1 as $2}\n\t$3\n{/each' } ,
123+ {
124+ tag : 'await' ,
125+ label : 'await :then' ,
126+ insertText : 'await $1}\n\t$2\n{:then $3} \n\t$4\n{/await'
127+ } ,
128+ {
129+ tag : 'await' ,
130+ label : 'await then' ,
131+ insertText : 'await $1 then $2}\n\t$3\n{/await'
132+ } ,
133+ { tag : 'key' , label : 'key' , insertText : 'key $1}\n\t$2\n{/key' } ,
134+ { tag : 'snippet' , label : 'snippet' , insertText : 'snippet $1($2)}\n\t$3\n{/snippet' }
135+ ] ) ;
136+
137+ const beginningAwaitOpenCompletionItems = createCompletionItems ( [
138+ { tag : 'await' , label : 'then' } ,
139+ { tag : 'await' , label : 'catch' }
140+ ] ) ;
141+
142+ const beginningEachOpenCompletionItems = createCompletionItems ( [ { tag : 'each' , label : 'else' } ] ) ;
143+
144+ const beginningIfOpenCompletionItems = createCompletionItems ( [
145+ { tag : 'if' , label : 'else' } ,
146+ { tag : 'if' , label : 'else if' }
147+ ] ) ;
148+
149+ const endAwaitOpenCompletionItems = createCompletionItems ( [ { tag : 'await' , label : 'await' } ] ) ;
150+ const endEachOpenCompletionItems = createCompletionItems ( [ { tag : 'each' , label : 'each' } ] ) ;
151+ const endIfOpenCompletionItems = createCompletionItems ( [ { tag : 'if' , label : 'if' } ] ) ;
152+ const endKeyOpenCompletionItems = createCompletionItems ( [ { tag : 'key' , label : 'key' } ] ) ;
153+
112154/**
113155 * Get completions with regard to trigger character.
114156 */
@@ -118,46 +160,19 @@ function getCompletionsWithRegardToTriggerCharacter(
118160 offset : number
119161) {
120162 if ( triggerCharacter === '@' ) {
121- return createCompletionItems ( [
122- { tag : 'html' , label : 'html' } ,
123- { tag : 'debug' , label : 'debug' } ,
124- { tag : 'const' , label : 'const' } ,
125- { tag : 'render' , label : 'render' } ,
126- { tag : 'attach' , label : 'attach' }
127- ] ) ;
163+ return atCompletionItems ;
128164 }
129165
130166 if ( triggerCharacter === '#' ) {
131- return createCompletionItems ( [
132- { tag : 'if' , label : 'if' , insertText : 'if $1}\n\t$2\n{/if' } ,
133- { tag : 'each' , label : 'each' , insertText : 'each $1 as $2}\n\t$3\n{/each' } ,
134- {
135- tag : 'await' ,
136- label : 'await :then' ,
137- insertText : 'await $1}\n\t$2\n{:then $3} \n\t$4\n{/await'
138- } ,
139- {
140- tag : 'await' ,
141- label : 'await then' ,
142- insertText : 'await $1 then $2}\n\t$3\n{/await'
143- } ,
144- { tag : 'key' , label : 'key' , insertText : 'key $1}\n\t$2\n{/key' } ,
145- { tag : 'snippet' , label : 'snippet' , insertText : 'snippet $1($2)}\n\t$3\n{/snippet' }
146- ] ) ;
167+ return hashtagCompletionItems ;
147168 }
148169
149170 if ( triggerCharacter === ':' ) {
150171 return showCompletionWithRegardsToOpenedTags (
151172 {
152- awaitOpen : createCompletionItems ( [
153- { tag : 'await' , label : 'then' } ,
154- { tag : 'await' , label : 'catch' }
155- ] ) ,
156- eachOpen : createCompletionItems ( [ { tag : 'each' , label : 'else' } ] ) ,
157- ifOpen : createCompletionItems ( [
158- { tag : 'if' , label : 'else' } ,
159- { tag : 'if' , label : 'else if' }
160- ] )
173+ awaitOpen : beginningAwaitOpenCompletionItems ,
174+ eachOpen : beginningEachOpenCompletionItems ,
175+ ifOpen : beginningIfOpenCompletionItems
161176 } ,
162177 svelteDoc ,
163178 offset
@@ -167,10 +182,10 @@ function getCompletionsWithRegardToTriggerCharacter(
167182 if ( triggerCharacter === '/' ) {
168183 return showCompletionWithRegardsToOpenedTags (
169184 {
170- awaitOpen : createCompletionItems ( [ { tag : 'await' , label : 'await' } ] ) ,
171- eachOpen : createCompletionItems ( [ { tag : 'each' , label : 'each' } ] ) ,
172- ifOpen : createCompletionItems ( [ { tag : 'if' , label : 'if' } ] ) ,
173- keyOpen : createCompletionItems ( [ { tag : 'key' , label : 'key' } ] )
185+ awaitOpen : endAwaitOpenCompletionItems ,
186+ eachOpen : endEachOpenCompletionItems ,
187+ ifOpen : endIfOpenCompletionItems ,
188+ keyOpen : endKeyOpenCompletionItems
174189 } ,
175190 svelteDoc ,
176191 offset
0 commit comments