Skip to content

Commit 0eca4f2

Browse files
AWS blocks (#69)
* Scope AWS ACL strings * Scope AWS patterned blocks somewhat like classes
1 parent 90ddd5d commit 0eca4f2

File tree

3 files changed

+49
-6
lines changed

3 files changed

+49
-6
lines changed

Terraform.sublime-syntax

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ contexts:
289289
- match: '{{char_escapes}}'
290290
comment: Character Escapes
291291
scope: constant.character.escape.terraform
292+
- include: aws-acl
292293

293294
# String Interpolation: ("${" | "${~") Expression ("}" | "~}"
294295
#
@@ -626,6 +627,21 @@ contexts:
626627
#
627628
# https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#structural-elements
628629
block:
630+
# Special case heuristic for the AWS two-term resources
631+
- match: (\b(resource)\s+(")(aws_{{identifier}})(")\s+(")({{identifier}})("))\s*(\{)
632+
captures:
633+
1: meta.type.terraform
634+
2: keyword.declaration.terraform
635+
3: punctuation.definition.begin.terraform
636+
4: support.type.aws
637+
5: punctuation.definition.end.terraform
638+
6: punctuation.definition.begin.terraform
639+
7: entity.name.type.aws
640+
8: punctuation.definition.end.terraform
641+
9: punctuation.section.block.begin.terraform
642+
push: block_body
643+
644+
# Generic
629645
- match: (?:\b({{terraform_known_blocks}})\b|({{identifier}}))(?=[\s\"\-[:word:]]*(\{))
630646
captures:
631647
1: keyword.declaration.terraform
@@ -656,6 +672,18 @@ contexts:
656672
scope: punctuation.section.block.end.terraform
657673
pop: true
658674

675+
aws-acl:
676+
- match: (?=\barn:aws:)
677+
push:
678+
- meta_scope: variable.language.acl.terraform
679+
- include: string_interpolation
680+
- match: :|/
681+
scope: punctuation.separator.sequence.terraform
682+
- match: \*
683+
scope: constant.other.wildcard.asterisk.terraform
684+
- match: (?![\w-])
685+
pop: true
686+
659687
else_pop:
660688
- match: (?=\S)
661689
pop: true

syntax_test_terraform-vars.tfvars

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,17 @@
6666
# ^ punctuation.definition.string.end.terraform
6767
# ^ -punctuation -string
6868

69+
"arn:aws:sns:us-east-1:123456789012:example-sns-topic-name"
70+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform string.quoted.double.terraform
71+
# ^ punctuation.definition.string.begin.terraform
72+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.language.acl.terraform
73+
# ^ punctuation.separator.sequence.terraform
74+
# ^ punctuation.separator.sequence.terraform
75+
# ^ punctuation.separator.sequence.terraform
76+
# ^ punctuation.separator.sequence.terraform
77+
# ^ punctuation.separator.sequence.terraform
78+
# ^ punctuation.definition.string.end.terraform
79+
6980
a + b
7081
# ^ -keyword -operator
7182
# ^ keyword.operator.arithmetic.terraform

syntax_test_terraform.tf

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2890,12 +2890,16 @@
28902890
/////
28912891

28922892
resource "aws_security_group" "example" {
2893-
# ^^^^^^^^ meta.type.terraform keyword.declaration.terraform
2894-
# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform
2895-
# ^^^^^^^^^^^^^^^^^^^ meta.type.terraform string.quoted.double.terraform
2896-
# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform
2897-
# ^^^^^^^^ meta.type.terraform string.quoted.double.terraform
2898-
# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform
2893+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.terraform
2894+
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.type.terraform
2895+
# ^^^^^^^^ keyword.declaration.terraform
2896+
# ^ punctuation.definition.begin.terraform
2897+
# ^^^^^^^^^^^^^^^^^^ support.type.aws
2898+
# ^ punctuation.definition.end.terraform
2899+
# ^ punctuation.definition.begin.terraform
2900+
# ^^^^^^^ entity.name.type.aws
2901+
# ^ punctuation.definition.end.terraform
2902+
# ^ punctuation.section.block.begin.terraform
28992903
name = "example"
29002904
# ^^^^ meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform
29012905
# ^ meta.block.terraform keyword.operator.assignment.terraform

0 commit comments

Comments
 (0)