@@ -6,7 +6,7 @@ interface Snippet {
66 prefix : string ;
77 body : string [ ] ;
88 description : string ;
9- parent ?: string ;
9+ parent ?: string | string [ ] | null ;
1010}
1111
1212interface SnippetProvider {
@@ -18,6 +18,18 @@ export class XmlSnippetProvider implements vscode.CompletionItemProvider {
1818 public static readonly TRIGGER_CHARACTERS = [ '<' ] ;
1919
2020 private readonly snippetProviders : SnippetProvider [ ] = [
21+ {
22+ pattern : '**/acl.xml' ,
23+ snippets : require ( './xml/snippet/acl.json' ) ,
24+ } ,
25+ {
26+ pattern : '**/extension-attributes.xml' ,
27+ snippets : require ( './xml/snippet/extension-attributes.json' ) ,
28+ } ,
29+ {
30+ pattern : '**/fieldset.xml' ,
31+ snippets : require ( './xml/snippet/fieldset.json' ) ,
32+ } ,
2133 {
2234 pattern : '**/di.xml' ,
2335 snippets : require ( './xml/snippet/di.json' ) ,
@@ -55,10 +67,20 @@ export class XmlSnippetProvider implements vscode.CompletionItemProvider {
5567 for ( const name in snippets ) {
5668 const snippet = snippets [ name ] ;
5769
58- if ( snippet . parent && snippet . parent !== directParentName ) {
70+ if ( snippet . parent === null && directParentName ) {
5971 continue ;
6072 }
6173
74+ if ( snippet . parent ) {
75+ if ( Array . isArray ( snippet . parent ) ) {
76+ if ( ! snippet . parent . includes ( directParentName || '' ) ) {
77+ continue ;
78+ }
79+ } else if ( snippet . parent !== directParentName ) {
80+ continue ;
81+ }
82+ }
83+
6284 const completionItem = new vscode . CompletionItem (
6385 {
6486 label : name ,
0 commit comments