Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions JSON (Terraform).sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ contexts:
double-quoted-string-body:
- meta_prepend: true
- include: Packages/Terraform/Terraform.sublime-syntax#string_interpolation
- include: Packages/Terraform/Terraform.sublime-syntax#aws_acl
27 changes: 20 additions & 7 deletions Terraform.sublime-syntax
Original file line number Diff line number Diff line change
Expand Up @@ -285,23 +285,36 @@ contexts:
- match: '"'
scope: punctuation.definition.string.end.terraform
pop: true
- include: string_interpolation
- match: '{{char_escapes}}'
comment: Character Escapes
scope: constant.character.escape.terraform
- match: (?=\barn:aws:)
push: aws_acl
- include: string_interpolation
- include: aws_acl

aws_acl:
- match: (?=\barn:aws:)
push: aws_acl_body

aws_acl_body:
- clear_scopes: 1 # Clear the string.* scope.
- meta_scope: variable.language.acl.terraform
- include: string_interpolation
- match: ([$%]\{)(~)?
captures:
1: punctuation.section.interpolation.begin.terraform
2: keyword.operator.template.trim.left.terraform
push: acl_interpolation_body
- match: :|/
scope: punctuation.separator.sequence.terraform
- match: \*
scope: constant.other.wildcard.asterisk.terraform
- match: (?![\w-])
pop: true

acl_interpolation_body:
- meta_scope: meta.interpolation.terraform
- meta_content_scope: source.terraform
- include: string_interpolation_body

# String Interpolation: ("${" | "${~") Expression ("}" | "~}"
#
# https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#templates
Expand All @@ -313,9 +326,9 @@ contexts:
push: string_interpolation_body

string_interpolation_body:
- clear_scopes: 1 # Clear the string.* scope.
- meta_scope: meta.interpolation.terraform
- meta_content_scope: source.terraform
- clear_scopes: 1 # Clear the string.* scope.
- match: (~)?(\})
captures:
1: keyword.operator.template.trim.right.terraform
Expand Down Expand Up @@ -411,7 +424,7 @@ contexts:
pop: true

literal_label_body:
- meta_scope: string.quoted.double.terraform
- meta_scope: meta.string.terraform string.quoted.double.terraform
- match: \"
scope: punctuation.definition.string.end.terraform
pop: true
Expand Down Expand Up @@ -683,7 +696,7 @@ contexts:
set: block_body

block_name_body:
- meta_scope: string.quoted.double.terraform
- meta_scope: meta.string.terraform string.quoted.double.terraform
- match: \"
scope: punctuation.definition.string.end.terraform
pop: true
Expand Down
32 changes: 23 additions & 9 deletions tests/syntax_test_scope.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3183,6 +3183,19 @@
resource "aws_iam_role_policy" "attach-inline-policy-1" {
name = "xxx"
role = aws_iam_role.execution-role.name

res_arn = "arn:aws:lambda:*:*:function:${var.environment}-xxx"
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.terraform meta.string.terraform
# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform - variable
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.language.acl.terraform
# ^^ punctuation.section.interpolation.begin.terraform
# ^^^^^^^^^^^^^^^ source.terraform source.terraform
# ^^^ variable.language.terraform
# ^ punctuation.accessor.dot.terraform
# ^^^^^^^^^^^ variable.other.member.terraform
# ^ punctuation.section.interpolation.end.terraform
# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - variable

policy = jsonencode({
Version = "2012-10-17"
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.terraform meta.function-call.terraform meta.braces.terraform
Expand All @@ -3209,23 +3222,24 @@ resource "aws_iam_role_policy" "attach-inline-policy-1" {
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.block.terraform meta.function-call.terraform meta.mapping.value.json meta.sequence.json
#^^^^^^^^^^^^^^^ meta.mapping.json
# ^^^^^^^^^^ meta.mapping.key.json string.quoted.double.json
# ^^ meta.mapping.json
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping.value.json meta.string.json - meta.interpolation
# ^^^^^^^^^^^^^^^^^^ meta.mapping.value.json meta.string.json meta.interpolation.terraform - string
# ^^^^^ meta.mapping.value.json meta.string.json - meta.interpolation
# ^ meta.mapping.json
# ^ punctuation.definition.string.begin.json
# ^ punctuation.definition.string.end.json
# ^^ meta.mapping.json
# ^ punctuation.separator.key-value.json
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.mapping.value.json meta.string.json
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.json
# ^ punctuation.definition.string.begin.json
# ^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform
# ^ string.quoted.double.json punctuation.definition.string.begin.json - variable
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ variable.language.acl.terraform
# ^^ punctuation.section.interpolation.begin.terraform
# ^^^^^^^^^^^^^^^ source.terraform
# ^^^^^^^^^^^^^^^ source.terraform source.terraform
# ^^^ variable.language.terraform
# ^ punctuation.accessor.dot.terraform
# ^^^^^^^^^^^ variable.other.member.terraform
# ^ punctuation.section.interpolation.end.terraform
# ^^^^^ string.quoted.double.json
# ^ punctuation.definition.string.end.json
# ^ meta.mapping.json punctuation.separator.sequence.json
# ^ string.quoted.double.json punctuation.definition.string.end.json - variable
# ^ punctuation.separator.sequence.json
"Effect": "Allow"
}
]
Expand Down