Skip to content

Commit ee9fce4

Browse files
authored
Fix bracket related meta scopes (#80)
This commit... 1. adds missing meta.brackets, meta.braces and meta.parens scopes 2. fixes inline for expressions vanishing meta scopes 3. fixes block and type related meta scope boundaries; avoid gaps or overlapping
1 parent d8abd4a commit ee9fce4

File tree

2 files changed

+243
-149
lines changed

2 files changed

+243
-149
lines changed

Terraform.sublime-syntax

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ contexts:
152152
push: paren-body
153153

154154
paren-body:
155+
- meta_scope: meta.parens.terraform
155156
- match: \)
156157
scope: punctuation.section.parens.end.terraform
157158
pop: 1
@@ -444,6 +445,7 @@ contexts:
444445
push: bracket-body
445446

446447
bracket-body:
448+
- meta_scope: meta.brackets.terraform
447449
- match: (\*)?\]
448450
comment: Full-splat operator
449451
scope: punctuation.section.brackets.end.terraform
@@ -487,15 +489,15 @@ contexts:
487489
- include: Packages/Terraform/JSON (Terraform).sublime-syntax#object-body
488490

489491
object-computed-key:
490-
- meta_scope: meta.mapping.key.terraform
492+
- meta_scope: meta.mapping.key.terraform meta.parens.terraform
491493
- include: paren-body
492494

493495
object-literal-key:
494496
- match: '{{identifier}}'
495-
scope: meta.mapping.key.terraform string.unquoted.terraform
497+
scope: meta.mapping.key.terraform meta.string.terraform string.unquoted.terraform
496498
pop: 1
497499
- match: (\").*?(\")
498-
scope: meta.mapping.key.terraform string.quoted.double.terraform
500+
scope: meta.mapping.key.terraform meta.string.terraform string.quoted.double.terraform
499501
captures:
500502
1: punctuation.definition.string.begin.terraform
501503
2: punctuation.definition.string.end.terraform
@@ -581,6 +583,7 @@ contexts:
581583
pop: 1
582584

583585
attribute-key-end:
586+
- meta_scope: meta.parens.terraform
584587
- match: \)
585588
scope: punctuation.section.parens.end.terraform
586589
pop: 1
@@ -620,8 +623,9 @@ contexts:
620623
set: tuple-for-expression-body
621624

622625
tuple-for-expression-body:
626+
- meta_content_scope: meta.brackets.terraform
623627
- match: \]
624-
scope: punctuation.section.brackets.end.terraform
628+
scope: meta.brackets.terraform punctuation.section.brackets.end.terraform
625629
pop: 1
626630
- include: for-expression-body
627631

@@ -638,8 +642,9 @@ contexts:
638642
set: object-for-expression-body
639643

640644
object-for-expression-body:
645+
- meta_content_scope: meta.braces.terraform
641646
- match: \}
642-
scope: punctuation.section.braces.end.terraform
647+
scope: meta.braces.terraform punctuation.section.braces.end.terraform
643648
pop: 1
644649
- match: \=\>
645650
scope: punctuation.separator.key-value.terraform
@@ -678,25 +683,26 @@ contexts:
678683
6: punctuation.definition.begin.terraform
679684
7: entity.name.type.aws
680685
8: punctuation.definition.end.terraform
681-
9: punctuation.section.block.begin.terraform
686+
9: meta.block.terraform punctuation.section.block.begin.terraform
682687
push: block-body
683-
684688
# Generic
685-
- match: (?:\b({{terraform_known_blocks}})\b|({{identifier}}))(?=[\s\"\-[:word:]]*(\{))
689+
- match: (?:\b({{terraform_known_blocks}})\b|({{identifier}}))(?=[-\s\w"]*\{)
690+
scope: meta.type.terraform
686691
captures:
687692
1: keyword.declaration.terraform
688693
2: entity.name.type.terraform
689694
push: block-name
690695

691696
block-name:
692-
- meta_scope: meta.type.terraform
697+
- meta_content_scope: meta.type.terraform
693698
- match: \"
694699
scope: punctuation.definition.string.begin.terraform
695700
push: block-name-body
696701
- match: '{{identifier}}'
697702
scope: entity.name.label.terraform
698-
- match: \{
699-
scope: punctuation.section.block.begin.terraform
703+
- match: \s*(\{)
704+
captures:
705+
1: meta.block.terraform punctuation.section.block.begin.terraform
700706
set: block-body
701707

702708
block-name-body:
@@ -706,9 +712,9 @@ contexts:
706712
pop: 1
707713

708714
block-body:
709-
- meta_scope: meta.block.terraform
715+
- meta_content_scope: meta.block.terraform
710716
- match: \}
711-
scope: punctuation.section.block.end.terraform
717+
scope: meta.block.terraform punctuation.section.block.end.terraform
712718
pop: 1
713719
- include: main
714720

0 commit comments

Comments
 (0)