@@ -64,14 +64,15 @@ ${dedent(content)}
6464 // token is not used at this time; it's just a way to keep note where we are
6565 // in the line
6666
67+ let filterEmbeddedScopes = scope =>
68+ includeEmbeddedScopes ||
69+ scope !== 'text.html.php' &&
70+ scope !== 'meta.embedded.block.php' &&
71+ scope !== 'meta.embedded.line.php'
72+
6773 let actual = this . actual
6874 . scopeDescriptorForBufferPosition ( posn ) . scopes
69- . filter (
70- scope => includeEmbeddedScopes ||
71- ! [
72- 'text.html.php' ,
73- 'meta.embedded.block.php' ,
74- ] . includes ( scope ) )
75+ . filter ( filterEmbeddedScopes )
7576
7677 let notExpected = actual . filter ( ( scope ) => ! expected . includes ( scope ) ) ;
7778 let notReceived = expected . filter ( ( scope ) => ! actual . includes ( scope ) ) ;
@@ -128,47 +129,61 @@ ${caret}
128129 } ) ;
129130 } ) ;
130131
131- // FIXME temporarily disabled
132- xdescribe ( "html embedding" , ( ) => {
132+ describe ( "html embedding" , ( ) => {
133+
134+ beforeEach ( async ( ) => await atom . packages . activatePackage ( "language-html" ) ) ;
135+
133136 it ( "handles php wrapped in html" , ( ) => {
134137 editor . setText ( dedent `
135138 <div>
136139 <?php echo $foo; ?>
137140 </div>
138141 ` ) ;
139142
140- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 0 ] , '<' , [ 'text.html.php' , 'punctuation.definition.tag.begin' ] )
141- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 1 ] , 'div' , [ 'text.html.php' , 'entity.name.tag' ] )
142- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 4 ] , '>' , [ 'text.html.php' , 'punctuation.definition.tag.end' ] )
143+ let includingEmbeddedScopes = true
143144
144- // NOTE this is @ column 1, not 0 like you might expect
145- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 1 ] , '<?php' , [ 'text.html.php' , 'source.php' , 'punctuation.section.embedded.begin.php' ] )
146- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 6 ] , 'echo' , [ 'text.html.php' , 'source.php' , 'support.function.construct.output.php' ] )
147- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 17 ] , '?>' , [ 'text.html.php' , 'source.php' , 'punctuation.section.embedded.end.php' ] )
148-
149- expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 0 ] , '</' , [ 'text.html.php' , 'punctuation.definition.tag.begin' ] )
150- expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 2 ] , 'div' , [ 'text.html.php' , 'entity.name.tag' ] )
151- expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 5 ] , '>' , [ 'text.html.php' , 'punctuation.definition.tag.end' ] )
145+ // FIXME following scopes differ from TM
146+ // BUT this appears to *also* be the case w/ the ERB grammar
147+ // adding a single space before the `<` will correct this
148+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 0 ] , '<' , [ 'text.html.php' ] , includingEmbeddedScopes )
149+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 1 ] , 'div' , [ 'text.html.php' , 'source.html' , 'entity.name.tag' ] , includingEmbeddedScopes )
150+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 4 ] , '>' , [ 'text.html.php' , 'source.html' , 'punctuation.definition.tag.end' ] , includingEmbeddedScopes )
151+
152+ // FIXME checking posn 0 doesn't work, posn 1 *does*
153+ // again, this mostly matches the ERB grammar
154+ // expect(editor).toHaveScopesAtPosition([1, 0], '<?php', ['source.html'])
155+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 1 ] , '<?php' , [ 'source.html' , 'source.php' , 'punctuation.section.embedded.begin.php' ] )
156+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 6 ] , 'echo' , [ 'source.html' , 'source.php' , 'support.function.construct.output.php' ] )
157+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 17 ] , '?>' , [ 'source.html' , 'source.php' , 'punctuation.section.embedded.end.php' ] )
158+
159+ // FIXME checking posn 0 doesn't work, posn 1 *does*
160+ // expect(editor).toHaveScopesAtPosition([2, 0], '</', ['source.html', 'punctuation.definition.tag.begin'])
161+ expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 1 ] , '</' , [ 'source.html' , 'punctuation.definition.tag.begin' ] )
162+ expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 2 ] , 'div' , [ 'source.html' , 'entity.name.tag' ] )
163+ expect ( editor ) . toHaveScopesAtPosition ( [ 2 , 5 ] , '>' , [ 'source.html' , 'punctuation.definition.tag.end' ] )
152164 } )
153165
154166 it ( "handles php with only leading html" , ( ) => {
155167 editor . setText ( dedent `
156- <div>
168+ <div>
157169 <?php echo $foo;
158170 ` ) ;
159171
160- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 0 ] , '<' , [ 'text.html.php' , 'punctuation.definition.tag.begin' ] )
161- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 1 ] , 'div' , [ 'text.html.php' , 'entity.name.tag' ] )
162- expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 4 ] , '>' , [ 'text.html.php' , 'punctuation.definition.tag.end' ] )
163-
164- // NOTE this is @ column 1, not 0 like you might expect
165- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 1 ] , '<?php' , [ 'text.html.php' , 'source.php' , 'punctuation.section.embedded.begin.php' ] )
166- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 5 ] , ' ' , [ 'text.html.php' , 'source.php' ] )
167- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 6 ] , 'echo' , [ 'text.html.php' , 'source.php' , 'support.function.construct.output.php' ] )
168- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 10 ] , ' ' , [ 'text.html.php' , 'source.php' ] )
169- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 11 ] , '$' , [ 'text.html.php' , 'source.php' , 'variable.other.php' , 'punctuation.definition.variable.php' ] )
170- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 12 ] , 'foo' , [ 'text.html.php' , 'source.php' , 'variable.other.php' ] )
171- expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 15 ] , ';' , [ 'text.html.php' , 'source.php' , 'punctuation.terminator.expression.php' ] )
172+ let includingEmbeddedScopes = true
173+
174+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 0 ] , '<' , [ 'text.html.php' ] , includingEmbeddedScopes )
175+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 1 ] , 'div' , [ 'text.html.php' , 'source.html' , 'entity.name.tag' ] , includingEmbeddedScopes )
176+ expect ( editor ) . toHaveScopesAtPosition ( [ 0 , 4 ] , '>' , [ 'text.html.php' , 'source.html' , 'punctuation.definition.tag.end' ] , includingEmbeddedScopes )
177+
178+ // FIXME checking posn 0 doesn't work, posn 1 *does*
179+ // expect(editor).toHaveScopesAtPosition([1, 0], '<?php', ['source.php', 'punctuation.section.embedded.begin.php'])
180+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 1 ] , '<?php' , [ 'source.php' , 'punctuation.section.embedded.begin.php' ] )
181+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 5 ] , ' ' , [ 'source.php' ] )
182+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 6 ] , 'echo' , [ 'source.php' , 'support.function.construct.output.php' ] )
183+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 10 ] , ' ' , [ 'source.php' ] )
184+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 11 ] , '$' , [ 'source.php' , 'variable.other.php' , 'punctuation.definition.variable.php' ] )
185+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 12 ] , 'foo' , [ 'source.php' , 'variable.other.php' ] )
186+ expect ( editor ) . toHaveScopesAtPosition ( [ 1 , 15 ] , ';' , [ 'source.php' , 'punctuation.terminator.expression.php' ] )
172187 } )
173188 } )
174189
0 commit comments