From 0ba7c5a93cecd0f91da09da99991db16dbe52510 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 16:47:29 +0200 Subject: [PATCH 01/11] Remove duplicate "hcl" file extension It's already in the HCL syntax definition alias. Was likely incorrectly resolved during 1576c26c2ac215f9bed5e1f8a061f123bf63e6b2 after it had been removed in 5d4c9f07c597785493048754aef72ab11166e53d. --- Terraform.sublime-syntax | 1 - 1 file changed, 1 deletion(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index bb7e10d..77c03c0 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -21,7 +21,6 @@ name: Terraform # https://www.terraform.io/docs/language/index.html file_extensions: - tf - - hcl - nomad scope: source.terraform From 8f48a170862ff3262a27fdec72e075f25a7f6532 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 16:48:06 +0200 Subject: [PATCH 02/11] Remove capturing group --- Terraform.sublime-syntax | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index 77c03c0..621f307 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -519,10 +519,10 @@ contexts: # # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#structural-elements block: - - match: '(\b({{terraform_known_blocks}})\b|({{identifer}}))(?=[\s\"\-[:word:]]*(\{))' + - match: (?:\b({{terraform_known_blocks}})\b|({{identifer}}))(?=[\s\"\-[:word:]]*(\{)) captures: - 2: storage.type.terraform - 3: entity.name.type.terraform + 1: storage.type.terraform + 2: entity.name.type.terraform push: - meta_scope: meta.type.terraform - match: \" From 71ee807b31af3df08da523f6611a2fdf12916b99 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 16:49:52 +0200 Subject: [PATCH 03/11] Use punctuation scope for accessor --- Terraform.sublime-syntax | 2 +- syntax_test_terraform.tf | 209 +++++++++++++++++++-------------------- 2 files changed, 105 insertions(+), 106 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index 621f307..2d1294e 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -411,7 +411,7 @@ contexts: # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#attribute-access-operator attribute_access: - match: \. - scope: keyword.operator.accessor.terraform + scope: punctuation.accessor.dot.terraform push: - match: "{{identifer}}" comment: Attribute access diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 7bea6a2..482cbbb 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -152,10 +152,10 @@ ///// aws_route53_zone.main.zone_id -# ^^^^^^^^^^^^^^^^ -numeric -constant -# ^ keyword.operator.accessor.terraform +# ^^^^^^^^^^^^^^^^ -numeric -constant +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform ///////////////////////////////////////////////////////////////////// @@ -315,7 +315,7 @@ # ^^^^^^^ string.quoted.double.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform @@ -399,7 +399,7 @@ # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform @@ -445,7 +445,7 @@ # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform @@ -474,7 +474,7 @@ # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ keyword.other.interpolation.end.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform +# ^ keyword.other.interpolation.end.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^^ meta.interpolation.terraform keyword.control.terraform # ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform @@ -498,7 +498,7 @@ # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ keyword.other.interpolation.end.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform +# ^ keyword.other.interpolation.end.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.interpolation.terraform keyword.control.terraform # ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform @@ -519,14 +519,14 @@ ///// "%{ for name in var.names ~}${name}%{ endfor ~}" -# ^ -string -punctuation +# ^ -string -punctuation # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^ keyword.control.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^^ keyword.control.terraform # ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ keyword.operator.template.right.trim.terraform # ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform @@ -550,12 +550,12 @@ a == b # ^ -keyword -operator # ^^ keyword.operator.terraform -# ^ -keyword -operator +# ^ -keyword -operator a != b # ^ -keyword -operator # ^^ keyword.operator.terraform -# ^ -keyword -operator +# ^ -keyword -operator a < b # ^ -keyword -operator @@ -568,7 +568,7 @@ # ^ -keyword -operator a > b -# ^ -keyword -operator +# ^ -keyword -operator # ^ keyword.operator.terraform # ^ -keyword -operator @@ -608,8 +608,8 @@ -a # ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator +# ^ keyword.operator.arithmetic.terraform +# ^ -keyword -operator ///// // Logic @@ -661,7 +661,7 @@ # ^ punctuation.separator.terraform # ^ constant.numeric.integer.terraform # ^ punctuation.section.brackets.end.terraform -# ^^^ keyword.operator.terraform +# ^^^ keyword.operator.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform ///////////////////////////////////////////////////////////////////// @@ -673,7 +673,7 @@ ///// thing[1] -# ^ -punctuation +# ^ -punctuation # ^ punctuation.section.brackets.begin.terraform # ^ constant.numeric.integer.terraform # ^ punctuation.section.brackets.end.terraform @@ -745,9 +745,9 @@ # ^ punctuation.section.brackets.begin.terraform # ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform # ^ punctuation.section.brackets.begin.terraform # ^ constant.numeric.integer.terraform @@ -784,17 +784,17 @@ [ aws_instance.ubuntu, aws_instance.freebsd ] # ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.separator.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform ///// // Includes functions. ///// - + [ upper("ggh") ] # ^ punctuation.section.brackets.begin.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -821,7 +821,7 @@ # ^ meta.braces.terraform keyword.operator.terraform # ^ meta.braces.terraform constant.numeric.integer.terraform # ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ punctuation.section.brackets.end.terraform +# ^ punctuation.section.brackets.end.terraform ///// // Includes named values @@ -830,11 +830,11 @@ [local.thing1, local.thing2] # ^ punctuation.section.brackets.begin.terraform # ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.separator.terraform # ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform @@ -959,7 +959,7 @@ # ^^^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform # ^ meta.braces.terraform keyword.operator.terraform # ^^^ meta.braces.terraform support.constant.terraform -# ^ meta.braces.terraform keyword.operator.accessor.terraform +# ^ meta.braces.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.braces.terraform variable.other.member.terraform # ^ meta.braces.terraform punctuation.section.braces.end.terraform # ^ -meta @@ -1018,7 +1018,7 @@ # ^ meta.braces.terraform punctuation.section.braces.begin.terraform # ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.begin.terraform # ^^^ meta.braces.terraform meta.mapping.key.terraform support.constant.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform keyword.operator.accessor.terraform +# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.accessor.dot.terraform # ^^^^ meta.braces.terraform meta.mapping.key.terraform variable.other.member.terraform # ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.end.terraform # ^ meta.braces.terraform keyword.operator.terraform @@ -1034,14 +1034,14 @@ ///// aws_instance.ubuntu[*].private_dns -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.begin.terraform # ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^^ variable.other.member.terraform -# ^ -variable -punctuation +# ^ -variable -punctuation ///// // Ignores dot-access in string literals @@ -1062,7 +1062,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -1076,11 +1076,11 @@ ///// tuple.*.foo.bar[0] -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^ keyword.operator.splat.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform # ^ punctuation.section.brackets.begin.terraform # ^ constant.numeric.integer.terraform @@ -1091,11 +1091,11 @@ ///// aws_route53_zone.project.name_servers.1 -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^ constant.numeric.integer.terraform # ^ -constant -punctuation -variable @@ -1113,7 +1113,7 @@ # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -1128,7 +1128,7 @@ # ^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^ string.quoted.double.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform +# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///////////////////////////////////////////////////////////////////// // Function Calls @@ -1152,15 +1152,15 @@ # ^^^^^^^^^^ meta.function-call.terraform variable.function.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^ meta.function-call.terraform constant.numeric.integer.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform keyword.operator.arithmetic.terraform # ^ meta.function-call.terraform constant.numeric.integer.terraform @@ -1205,7 +1205,7 @@ # ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform # ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform ///// // Nested function calls. @@ -1285,7 +1285,7 @@ # ^ meta.function-call.terraform keyword.operator.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform ///////////////////////////////////////////////////////////////////// // Built-in Terraform Functions @@ -1425,7 +1425,7 @@ # ^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - + lower("HELLO") # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -1452,7 +1452,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - + replace("1 + 2 + 3", "+", "-") # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -1584,7 +1584,7 @@ # ^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - + contains(["a"], "a") # ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -1667,7 +1667,7 @@ # ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform # ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform # ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform length([]) # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -2016,7 +2016,7 @@ # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2047,7 +2047,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform @@ -2059,7 +2059,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform @@ -2069,7 +2069,7 @@ # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -2082,7 +2082,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform @@ -2094,7 +2094,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform @@ -2133,7 +2133,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - + timeadd("2017-11-22T00:00:00Z", "10m") # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -2238,7 +2238,7 @@ # ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform # ^ -function - + md5("hello world") # ^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -2254,7 +2254,7 @@ # ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform # ^^^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform @@ -2379,7 +2379,7 @@ # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform constant.numeric.integer.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - + toset(["a", "b", "c"]) # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -2416,7 +2416,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -2437,7 +2437,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -2461,16 +2461,16 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.begin.terraform # ^ constant.numeric.integer.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform @@ -2484,17 +2484,17 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform # ^ punctuation.section.brackets.begin.terraform # ^ constant.numeric.integer.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform ///// @@ -2510,12 +2510,12 @@ # ^^^^^^^^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ keyword.operator.terraform instance.private_dns # ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^^ variable.other.member.terraform ] # ^ punctuation.section.brackets.end.terraform @@ -2533,13 +2533,13 @@ # ^^^^^^^^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ keyword.operator.terraform (instance.public_ip != "" ? list(instance.private_ip, instance.public_ip) : list(instance.private_ip)) # ^ punctuation.section.parens.begin.terraform # ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform # ^^ keyword.operator.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -2548,20 +2548,20 @@ # ^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform # ^ keyword.operator.terraform # ^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform +# ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform # ^ punctuation.section.parens.end.terraform ] # ^ punctuation.section.brackets.end.terraform @@ -2573,37 +2573,37 @@ value = [ # ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform # ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform +# ^ punctuation.section.brackets.begin.terraform for instance in aws_instance.ubuntu: # ^^^ keyword.control.terraform # ^^^^^^^^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ keyword.operator.terraform (instance.public_ip != "" ? [instance.private_ip, instance.public_ip] : [instance.private_ip]) # ^ punctuation.section.parens.begin.terraform # ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform # ^^ keyword.operator.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ keyword.operator.terraform # ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform # ^ punctuation.separator.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform +# ^ punctuation.accessor.dot.terraform +# ^^^^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform # ^ keyword.operator.terraform # ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ punctuation.section.parens.end.terraform +# ^ punctuation.section.brackets.end.terraform +# ^ punctuation.section.parens.end.terraform ] # ^ punctuation.section.brackets.end.terraform @@ -2617,7 +2617,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -2721,7 +2721,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -2755,7 +2755,7 @@ # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^ keyword.operator.terraform # ^ variable.other.readwrite.terraform @@ -2764,7 +2764,7 @@ # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform } # ^ punctuation.section.braces.end.terraform @@ -2825,7 +2825,7 @@ # ^^ meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform # ^ meta.block.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^ meta.block.terraform string.quoted.double.terraform - + dynamic "ingress" { # ^^^^^^^ meta.block.terraform meta.type.terraform entity.name.type.terraform # ^ meta.block.terraform meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -2835,7 +2835,7 @@ # ^^^^^^^^ meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform # ^^ meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform # ^^^ meta.block.terraform meta.block.terraform support.constant.terraform -# ^ meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform +# ^ meta.block.terraform meta.block.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^^^^ meta.block.terraform meta.block.terraform variable.other.member.terraform content { # ^^^^^^^ meta.block.terraform meta.block.terraform meta.type.terraform entity.name.type.terraform @@ -2843,12 +2843,12 @@ from_port = ingress.value # ^^^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform # ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform +# ^ meta.block.terraform meta.block.terraform meta.block.terraform punctuation.accessor.dot.terraform # ^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.other.member.terraform to_port = ingress.value # ^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform # ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform +# ^ meta.block.terraform meta.block.terraform meta.block.terraform punctuation.accessor.dot.terraform protocol = "tcp" + "IP" # ^^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform # ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform @@ -2909,36 +2909,36 @@ var.something # ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform local.something # ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform module.name.output_name # ^^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^^ variable.other.member.terraform data.data_type.name # ^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform path.module # ^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform terraform.workspace # ^^^^^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform ///////////////////////////////////////////////////////////////////// @@ -3041,7 +3041,7 @@ # ^^^^^^^ string.unquoted.heredoc.terraform # ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform # ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform +# ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform END @@ -3059,7 +3059,7 @@ # ^^^^^^^^^ support.constant.terraform # ^^^^^^ keyword.control.import.terraform # ^^^^^^^^^^^^ entity.name.label.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^^^^^^^^^^ entity.name.label.terraform @@ -3071,7 +3071,6 @@ # ^^^^^^^^^ support.constant.terraform # ^^^^^^ keyword.control.import.terraform # ^^^^^^^^^^^^^^^^^^^^ entity.name.label.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^ variable.other.member.terraform # ^^^^^^ constant.numeric.integer.terraform - \ No newline at end of file From 99b61e725e7db7e329efe620bfddf2c92bd8d856 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 16:51:57 +0200 Subject: [PATCH 04/11] Use `keyword.declaration` scope --- Terraform.sublime-syntax | 2 +- syntax_test_terraform.tf | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index 2d1294e..a5dd5fb 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -521,7 +521,7 @@ contexts: block: - match: (?:\b({{terraform_known_blocks}})\b|({{identifer}}))(?=[\s\"\-[:word:]]*(\{)) captures: - 1: storage.type.terraform + 1: keyword.declaration.terraform 2: entity.name.type.terraform push: - meta_scope: meta.type.terraform diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 482cbbb..9d6e073 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -2814,7 +2814,7 @@ ///// resource "aws_security_group" "example" { -# ^^^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^^^^^^^^^^ meta.type.terraform string.quoted.double.terraform # ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -2946,42 +2946,42 @@ ///////////////////////////////////////////////////////////////////// resource {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform provider {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform variable {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform output {} -# ^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform locals {} -# ^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform module {} -# ^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform data {} -# ^^^^ meta.type.terraform storage.type.terraform +# ^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform terraform {} -# ^^^^^^^^^ meta.type.terraform storage.type.terraform +# ^^^^^^^^^ meta.type.terraform keyword.declaration.terraform # ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform From 7d41a4fbf2cc4bad8e387682621723bbf58fe391 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:01:40 +0200 Subject: [PATCH 05/11] Simplify colon match --- Terraform.sublime-syntax | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index a5dd5fb..b0f0671 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -296,7 +296,7 @@ contexts: scope: keyword.operator.terraform - match: \.\.\. # ... scope: keyword.operator.terraform - - match: "\\:" # : + - match: ':' # : scope: keyword.operator.terraform # Terraform "import" statements From 7f9aacb70ed0bdca4507ab9437bfe98b4a4fb442 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:18:30 +0200 Subject: [PATCH 06/11] Adjust interpolation scopes - Span `meta.string` over the entire string. - Use `punctuation.section` for interpolation punctuation. - Highlight `~` operator to trim whitespace only immediately next to the section punctuation. - Set `source.terraform` scope for the interpolation body. --- Terraform.sublime-syntax | 26 ++++--- syntax_test_terraform.tf | 150 +++++++++++++++++++++------------------ 2 files changed, 91 insertions(+), 85 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index b0f0671..418edb7 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -209,7 +209,7 @@ contexts: comment: Strings scope: punctuation.definition.string.begin.terraform push: - - meta_scope: string.quoted.double.terraform + - meta_scope: meta.string.terraform string.quoted.double.terraform - match: '"' scope: punctuation.definition.string.end.terraform pop: true @@ -222,21 +222,19 @@ contexts: # # https://github.com/hashicorp/hcl2/blob/master/hcl/hclsyntax/spec.md#templates string_interpolation: - - match: (\$|\%)\{ - comment: String interpolation - scope: keyword.other.interpolation.begin.terraform + - match: ([$%]\{)(~)? + captures: + 1: punctuation.section.interpolation.begin.terraform + 2: keyword.operator.template.trim.left.terraform push: - meta_scope: meta.interpolation.terraform - - clear_scopes: 1 # Clear the string.* scope. - - match: \} - scope: keyword.other.interpolation.end.terraform + - meta_content_scope: source.terraform + - clear_scopes: 1 # Clear the string.* scope. + - match: (~)?(\}) + captures: + 1: keyword.operator.template.trim.right.terraform + 2: punctuation.section.interpolation.end.terraform pop: true - - match: \~\s - comment: Trim left whitespace - scope: keyword.operator.template.left.trim.terraform - - match: \s\~ - comment: Trim right whitespace - scope: keyword.operator.template.right.trim.terraform - match: \b(if|else|endif|for|in|endfor)\b comment: if/else/endif and for/in/endfor directives scope: keyword.control.terraform @@ -252,7 +250,7 @@ contexts: 1: keyword.operator.heredoc.terraform 2: keyword.control.heredoc.terraform push: - - meta_content_scope: string.unquoted.heredoc.terraform + - meta_content_scope: meta.string.terraform string.unquoted.heredoc.terraform - match: ^\s*\2\s*$ comment: The heredoc token identifier (second capture above). scope: keyword.control.heredoc.terraform diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 9d6e073..24d0eb4 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -270,10 +270,12 @@ "some ${interpolation} string" # ^ -punctuation -string # ^ punctuation.definition.string.begin.terraform +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform # ^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^^^^^^^^^^^^ source.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^ string.quoted.double.terraform # ^ punctuation.definition.string.end.terraform # ^ -punctuation -string @@ -283,12 +285,14 @@ ///// "%{~ fff ~}" +# ^^^^^^^^^^^^ meta.string.terraform +# ^^^^^^^^^^ meta.interpolation.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^ meta.interpolation.terraform keyword.operator.template.left.trim.terraform -# ^^^^^^ meta.interpolation.terraform -# ^^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform +# ^ meta.interpolation.terraform keyword.operator.template.trim.left.terraform +# ^^^^^ source.terraform +# ^ keyword.operator.template.trim.right.terraform +# ^ punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -297,13 +301,14 @@ "${ something ? true : false }" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ keyword.other.interpolation.begin.terraform +# ^^ punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.terraform # ^ keyword.operator.terraform # ^^^^ meta.interpolation.terraform constant.language.terraform # ^ meta.interpolation.terraform keyword.operator.terraform # ^^^^^ meta.interpolation.terraform constant.language.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -313,11 +318,11 @@ "hello ${aws_instance.ubuntu}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -326,7 +331,7 @@ "${formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z")}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -335,7 +340,7 @@ # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -347,14 +352,14 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -364,13 +369,13 @@ "something ${{test = 3}}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.begin.terraform # ^^^^ meta.interpolation.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform # ^ meta.interpolation.terraform meta.braces.terraform keyword.operator.terraform # ^ meta.interpolation.terraform meta.braces.terraform constant.numeric.integer.terraform # ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -380,7 +385,7 @@ "something ${[1, 2, 3]}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^ meta.interpolation.terraform punctuation.section.brackets.begin.terraform # ^ meta.interpolation.terraform constant.numeric.integer.terraform # ^ meta.interpolation.terraform punctuation.separator.terraform @@ -388,7 +393,7 @@ # ^ meta.interpolation.terraform punctuation.separator.terraform # ^ meta.interpolation.terraform constant.numeric.integer.terraform # ^ meta.interpolation.terraform punctuation.section.brackets.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -397,11 +402,11 @@ "${var.something}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^ meta.interpolation.terraform support.constant.terraform # ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///// @@ -413,7 +418,7 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ punctuation.section.brackets.begin.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform @@ -428,7 +433,7 @@ # ^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ punctuation.section.brackets.end.terraform # ^ -meta -string -variable -punctuation @@ -439,19 +444,19 @@ "${file("${path.module}/text_files/ecs_app")}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform ///////////////////////////////////////////////////////////////////// @@ -465,20 +470,20 @@ "${ if name == "Mary" }${name}${ endif ~}" # ^ -string -punctuation # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^^ meta.interpolation.terraform keyword.control.terraform # ^^ meta.interpolation.terraform keyword.operator.terraform # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^ source.terraform meta.interpolation.terraform string.quoted.double.terraform # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ -string -punctuation @@ -489,28 +494,28 @@ "%{ if name == "Mary" }${name}%{ else }${ "Mary" }%{ endif ~}" # ^ -string -punctuation # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^^ meta.interpolation.terraform keyword.control.terraform # ^^ meta.interpolation.terraform keyword.operator.terraform # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^^ source.terraform meta.interpolation.terraform string.quoted.double.terraform # ^ source.terraform meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^ meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^^^^ meta.interpolation.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ -string -punctuation @@ -521,21 +526,21 @@ "%{ for name in var.names ~}${name}%{ endfor ~}" # ^ -string -punctuation # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^ keyword.control.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^^ keyword.control.terraform # ^^^ meta.interpolation.terraform support.constant.terraform # ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^ keyword.operator.template.trim.right.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform +# ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.interpolation.terraform keyword.operator.template.trim.right.terraform +# ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^ string.quoted.double.terraform punctuation.definition.string.end.terraform # ^ -string -punctuation @@ -2045,11 +2050,11 @@ # ^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2057,11 +2062,11 @@ # ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2080,11 +2085,11 @@ # ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2092,11 +2097,11 @@ # ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform @@ -2252,11 +2257,11 @@ # ^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform +# ^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform # ^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform # ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform +# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform # ^^^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform # ^ meta.function-call.terraform punctuation.separator.terraform @@ -3037,13 +3042,16 @@ <<- END # ^^^ keyword.operator.heredoc.terraform # ^^^ keyword.control.heredoc.terraform - Hello, ${var.name} -# ^^^^^^^ string.unquoted.heredoc.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform punctuation.accessor.dot.terraform -# ^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform + Hello, %{var.name} +#^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform +#^^^^^^^^^^ string.unquoted.heredoc.terraform +# ^^^^^^^^^^^ meta.interpolation.terraform +# ^^ punctuation.section.interpolation.begin.terraform +# ^^^^^^^^ source.terraform +# ^^^ support.constant.terraform +# ^ punctuation.accessor.dot.terraform +# ^^^^ variable.other.member.terraform +# ^ punctuation.section.interpolation.end.terraform END # ^^^^ keyword.control.heredoc.terraform From d317e36244d1af7ca5855d70be6c50371f0d25a9 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:23:31 +0200 Subject: [PATCH 07/11] Use `variable.language` for special identifiers These identifiers (called "variables" by the spec) are semantically not constants. Instead, they provide access to external value sources and should thus be scoped as special language variables comparable to the C-like `this` or Python's `self`. --- Terraform.sublime-syntax | 4 +-- syntax_test_terraform.tf | 62 ++++++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index 418edb7..c9aae9d 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -135,8 +135,8 @@ contexts: named_value_references: - match: '\b({{named_values}})\b' - comment: Constant values available only to Terraform. - scope: support.constant.terraform + comment: Special variables available only to Terraform. + scope: variable.language.terraform type_keywords: - match: '\b({{terraform_type_keywords}})\b' diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 24d0eb4..5dc1e64 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -403,7 +403,7 @@ "${var.something}" # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform +# ^^^ meta.interpolation.terraform variable.language.terraform # ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -449,7 +449,7 @@ # ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -530,7 +530,7 @@ # ^^^ keyword.control.terraform # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform # ^^ keyword.control.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform +# ^^^ meta.interpolation.terraform variable.language.terraform # ^ meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^ meta.interpolation.terraform variable.other.member.terraform # ^ keyword.operator.template.trim.right.terraform @@ -834,11 +834,11 @@ [local.thing1, local.thing2] # ^ punctuation.section.brackets.begin.terraform -# ^^^^^ support.constant.terraform +# ^^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.separator.terraform -# ^^^^^ support.constant.terraform +# ^^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform # ^ punctuation.section.brackets.end.terraform @@ -963,7 +963,7 @@ # ^ meta.braces.terraform punctuation.section.braces.begin.terraform # ^^^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform # ^ meta.braces.terraform keyword.operator.terraform -# ^^^ meta.braces.terraform support.constant.terraform +# ^^^ meta.braces.terraform variable.language.terraform # ^ meta.braces.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.braces.terraform variable.other.member.terraform # ^ meta.braces.terraform punctuation.section.braces.end.terraform @@ -1022,7 +1022,7 @@ {(var.path) = 1} # ^ meta.braces.terraform punctuation.section.braces.begin.terraform # ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.braces.terraform meta.mapping.key.terraform support.constant.terraform +# ^^^ meta.braces.terraform meta.mapping.key.terraform variable.language.terraform # ^ meta.braces.terraform meta.mapping.key.terraform punctuation.accessor.dot.terraform # ^^^^ meta.braces.terraform meta.mapping.key.terraform variable.other.member.terraform # ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.end.terraform @@ -1066,7 +1066,7 @@ # ^^^ keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -1117,7 +1117,7 @@ # ^ variable.declaration.terraform keyword.operator.assignment.terraform # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.function-call.terraform support.constant.terraform +# ^^^ meta.function-call.terraform variable.language.terraform # ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2020,7 +2020,7 @@ abspath(path.root) # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform variable.language.terraform # ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2051,7 +2051,7 @@ # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -2063,7 +2063,7 @@ # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -2073,7 +2073,7 @@ fileset(path.module, "files/*.txt") # ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform variable.language.terraform # ^ meta.function-call.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform variable.other.member.terraform # ^ meta.function-call.terraform punctuation.separator.terraform @@ -2086,7 +2086,7 @@ # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -2098,7 +2098,7 @@ # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -2258,7 +2258,7 @@ # ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform +# ^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform variable.language.terraform # ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.accessor.dot.terraform # ^^^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform # ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform punctuation.section.interpolation.end.terraform @@ -2420,7 +2420,7 @@ # ^^^ keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2441,7 +2441,7 @@ # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2465,7 +2465,7 @@ # ^^^ keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2488,7 +2488,7 @@ # ^^^ keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2621,7 +2621,7 @@ # ^^^ keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2725,7 +2725,7 @@ # ^^^ meta.braces.terraform keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2759,7 +2759,7 @@ # ^^^ meta.braces.terraform keyword.control.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^ keyword.operator.terraform @@ -2839,7 +2839,7 @@ for_each = var.service_ports # ^^^^^^^^ meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform # ^^ meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^^^ meta.block.terraform meta.block.terraform support.constant.terraform +# ^^^ meta.block.terraform meta.block.terraform variable.language.terraform # ^ meta.block.terraform meta.block.terraform punctuation.accessor.dot.terraform # ^^^^^^^^^^^^^ meta.block.terraform meta.block.terraform variable.other.member.terraform content { @@ -2913,36 +2913,36 @@ ///////////////////////////////////////////////////////////////////// var.something -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform local.something -# ^^^^^ support.constant.terraform +# ^^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform module.name.output_name -# ^^^^^^ support.constant.terraform +# ^^^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^^ variable.other.member.terraform data.data_type.name -# ^^^^ support.constant.terraform +# ^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform path.module -# ^^^^ support.constant.terraform +# ^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform terraform.workspace -# ^^^^^^^^^ support.constant.terraform +# ^^^^^^^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^ variable.other.member.terraform @@ -3048,7 +3048,7 @@ # ^^^^^^^^^^^ meta.interpolation.terraform # ^^ punctuation.section.interpolation.begin.terraform # ^^^^^^^^ source.terraform -# ^^^ support.constant.terraform +# ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform # ^ punctuation.section.interpolation.end.terraform From 65379aaf89906d37015ae627de8e4ecba1a69a15 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:27:47 +0200 Subject: [PATCH 08/11] A colon in a for loop is punctuation Scope name was inspired by Python. --- Terraform.sublime-syntax | 2 +- syntax_test_terraform.tf | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index c9aae9d..ff78c63 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -505,7 +505,7 @@ contexts: comment: if keyword scope: keyword.control.conditional.terraform - match: '\:' - scope: keyword.operator.terraform + scope: punctuation.section.block.loop.for.terraform - include: expressions - include: comments - include: comma diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 5dc1e64..dec6e07 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -1069,7 +1069,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform @@ -1261,7 +1261,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform keyword.operator.terraform +# ^ meta.function-call.terraform punctuation.section.block.loop.for.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform # ^^ meta.function-call.terraform storage.type.function.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform @@ -1287,7 +1287,7 @@ # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform string.quoted.double.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform keyword.operator.terraform +# ^ meta.function-call.terraform punctuation.section.block.loop.for.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform @@ -2423,7 +2423,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform @@ -2444,7 +2444,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform @@ -2468,7 +2468,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform @@ -2491,7 +2491,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^^^^ variable.other.member.terraform @@ -2517,7 +2517,7 @@ # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform instance.private_dns # ^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform @@ -2540,7 +2540,7 @@ # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform (instance.public_ip != "" ? list(instance.private_ip, instance.public_ip) : list(instance.private_ip)) # ^ punctuation.section.parens.begin.terraform # ^^^^^^^^ variable.other.readwrite.terraform @@ -2586,7 +2586,7 @@ # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform (instance.public_ip != "" ? [instance.private_ip, instance.public_ip] : [instance.private_ip]) # ^ punctuation.section.parens.begin.terraform # ^^^^^^^^ variable.other.readwrite.terraform @@ -2624,7 +2624,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform @@ -2657,7 +2657,7 @@ # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^^ keyword.control.conditional.terraform # ^ variable.other.readwrite.terraform @@ -2687,7 +2687,7 @@ # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^^ storage.type.function.terraform # ^ variable.other.readwrite.terraform @@ -2709,7 +2709,7 @@ # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^^ storage.type.function.terraform # ^ variable.other.readwrite.terraform @@ -2728,7 +2728,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform @@ -2762,7 +2762,7 @@ # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform # ^^ storage.type.function.terraform upper(l) From eb7103ffffc859c9a2fcdcd5a1d90edcd3f023e3 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:33:26 +0200 Subject: [PATCH 09/11] Adjust scopes in for loops `in` is a proper keyword here, not an operator. --- Terraform.sublime-syntax | 6 ++-- syntax_test_terraform.tf | 64 ++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index ff78c63..e253b0e 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -469,7 +469,7 @@ contexts: tuple_for_expression: - match: \bfor\b comment: for expression (arrays) - scope: keyword.control.terraform + scope: keyword.control.loop.for.terraform set: - include: for_expression_body - match: \] @@ -485,7 +485,7 @@ contexts: object_for_expression: - match: \bfor\b comment: for expression (arrays) - scope: keyword.control.terraform + scope: keyword.control.loop.for.terraform set: - match: \=\> scope: storage.type.function.terraform @@ -500,7 +500,7 @@ contexts: for_expression_body: - match: \bin\b comment: in keyword - scope: keyword.operator.word.terraform + scope: keyword.control.loop.in.terraform - match: \bif\b comment: if keyword scope: keyword.control.conditional.terraform diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index dec6e07..148c60b 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -1063,9 +1063,9 @@ [for l in var.letters: upper(l)] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform @@ -1252,11 +1252,11 @@ # ^^^^^ meta.function-call.terraform variable.function.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.function-call.terraform meta.braces.terraform keyword.control.terraform +# ^^^ meta.function-call.terraform meta.braces.terraform keyword.control.loop.for.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform # ^ meta.function-call.terraform punctuation.separator.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform keyword.operator.word.terraform +# ^^ meta.function-call.terraform keyword.control.loop.in.terraform # ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform string.quoted.double.terraform @@ -1277,9 +1277,9 @@ # ^^^^ meta.function-call.terraform variable.function.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform # ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^^^ meta.function-call.terraform keyword.control.terraform +# ^^^ meta.function-call.terraform keyword.control.loop.for.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform keyword.operator.word.terraform +# ^^ meta.function-call.terraform keyword.control.loop.in.terraform # ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform # ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ meta.function-call.terraform string.quoted.double.terraform @@ -2417,9 +2417,9 @@ [for s in var.list : upper(s)] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform @@ -2436,11 +2436,11 @@ [for k, v in var.map : length(k) + length(v)] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^ variable.other.member.terraform @@ -2462,9 +2462,9 @@ [for o in var.list : o.interfaces[0].name] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform @@ -2485,9 +2485,9 @@ [for o in var.list : o.interfaces][0].name # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform @@ -2511,9 +2511,9 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ punctuation.section.brackets.begin.terraform for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform @@ -2534,9 +2534,9 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ punctuation.section.brackets.begin.terraform for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform @@ -2580,9 +2580,9 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ punctuation.section.brackets.begin.terraform for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^^^^^^^^^^ variable.other.readwrite.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^ variable.other.member.terraform @@ -2618,9 +2618,9 @@ [for s in var.list : upper(s) if s != ""] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform @@ -2642,11 +2642,11 @@ [for i, v in ["a", "b", "c"]: v if i < 2] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^ punctuation.section.brackets.begin.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform @@ -2675,11 +2675,11 @@ {for i, v in ["a", "b"]: v => i} # ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform +# ^^^ meta.braces.terraform keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^ punctuation.section.brackets.begin.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform @@ -2700,11 +2700,11 @@ {for i, v in ["a"]: v => i...} # ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform +# ^^^ meta.braces.terraform keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^ punctuation.section.brackets.begin.terraform # ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform # ^^ string.quoted.double.terraform @@ -2722,9 +2722,9 @@ {for s in var.list : substr(s, 0, 1) => s... if s != ""} # ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform +# ^^^ meta.braces.terraform keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform @@ -2756,9 +2756,9 @@ # ^^ variable.declaration.terraform keyword.operator.assignment.terraform # ^ meta.braces.terraform punctuation.section.braces.begin.terraform for l in var.letters: l => -# ^^^ meta.braces.terraform keyword.control.terraform +# ^^^ meta.braces.terraform keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^^^ variable.language.terraform # ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform From 57296e520f06a660504776d599330da4928b68f8 Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Wed, 24 Jul 2024 17:48:42 +0200 Subject: [PATCH 10/11] A `=>` separator in object for loops is punctuation --- Terraform.sublime-syntax | 2 +- syntax_test_terraform.tf | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Terraform.sublime-syntax b/Terraform.sublime-syntax index e253b0e..db43ed0 100644 --- a/Terraform.sublime-syntax +++ b/Terraform.sublime-syntax @@ -488,7 +488,7 @@ contexts: scope: keyword.control.loop.for.terraform set: - match: \=\> - scope: storage.type.function.terraform + scope: punctuation.separator.key-value.terraform - include: for_expression_body - match: \} scope: punctuation.section.braces.end.terraform diff --git a/syntax_test_terraform.tf b/syntax_test_terraform.tf index 148c60b..647bde3 100644 --- a/syntax_test_terraform.tf +++ b/syntax_test_terraform.tf @@ -1263,7 +1263,7 @@ # ^ meta.function-call.terraform punctuation.section.brackets.end.terraform # ^ meta.function-call.terraform punctuation.section.block.loop.for.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform storage.type.function.terraform +# ^^ meta.function-call.terraform punctuation.separator.key-value.terraform # ^ meta.function-call.terraform variable.other.readwrite.terraform # ^^^ meta.function-call.terraform keyword.operator.terraform # ^ meta.function-call.terraform punctuation.section.braces.end.terraform @@ -2689,7 +2689,7 @@ # ^ punctuation.section.brackets.end.terraform # ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform +# ^^ punctuation.separator.key-value.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.section.braces.end.terraform # ^ -meta @@ -2711,7 +2711,7 @@ # ^ punctuation.section.brackets.end.terraform # ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform +# ^^ punctuation.separator.key-value.terraform # ^ variable.other.readwrite.terraform # ^^^ keyword.operator.terraform # ^ punctuation.section.braces.end.terraform @@ -2737,7 +2737,7 @@ # ^ meta.function-call.terraform punctuation.separator.terraform # ^ meta.function-call.terraform constant.numeric.integer.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^^ storage.type.function.terraform +# ^^ punctuation.separator.key-value.terraform # ^ variable.other.readwrite.terraform # ^^^ keyword.operator.terraform # ^^ keyword.control.conditional.terraform @@ -2764,7 +2764,7 @@ # ^^^^^^^ variable.other.member.terraform # ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform +# ^^ punctuation.separator.key-value.terraform upper(l) # ^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform From ad9dbf730dfa38724098af59848ab817a652105b Mon Sep 17 00:00:00 2001 From: FichteFoll <fichtefoll2@googlemail.com> Date: Thu, 25 Jul 2024 10:57:35 +0200 Subject: [PATCH 11/11] Simplify tfvars tests Having basically a copy of the test file for the identical terraform syntax is quite redundant. Instead, only test for a few excerpts of that syntax to ensure the inclusion works as expected. --- syntax_test_terraform-vars.tfvars | 3006 +---------------------------- 1 file changed, 56 insertions(+), 2950 deletions(-) diff --git a/syntax_test_terraform-vars.tfvars b/syntax_test_terraform-vars.tfvars index 2ce897c..5ba6a6e 100644 --- a/syntax_test_terraform-vars.tfvars +++ b/syntax_test_terraform-vars.tfvars @@ -18,153 +18,27 @@ // foo # ^ source.terraform-vars comment.line.terraform -///// -// Matches at random place in line + punctuation for `#`. -///// - - # bar -# ^ -comment -punctuation -# ^ punctuation.definition.comment.terraform -# ^^^^^ comment.line.terraform - -///// -// Matches at random place in line + punctuation for `//`. -///// - - // baz # blah -# ^ -comment -punctuation -# ^^ punctuation.definition.comment.terraform -# ^^^^^^^^^^^^^ comment.line.terraform - -///////////////////////////////////////////////////////////////////// -// BLOCK COMMENTS -///////////////////////////////////////////////////////////////////// - -///// -// Matches for a single line. -///// - - /* foo */ -# ^ -comment -punctuation -# ^^ punctuation.definition.comment.terraform -# ^^^^^^^^ comment.block.terraform -# ^^ punctuation.definition.comment.terraform - -///// -// Matches over multiple lines. -///// - - /* -# ^ -comment -punctuation -# ^^ punctuation.definition.comment.terraform -# ^^^^ comment.block.terraform - - foo -# ^^^^ comment.block.terraform - - */ -# ^^^^ comment.block.terraform -# ^^ punctuation.definition.comment.terraform - -///// -// Matches inline comments after block ends. -///// - - /* comment */ // inline -# ^ -comment -punctuation -# ^^ punctuation.definition.comment.terraform -# ^^^^^^^^^^^^ comment.block.terraform -# ^^ punctuation.definition.comment.terraform -# ^^^ -comment -punctuation -# ^^ punctuation.definition.comment.terraform -# ^^^^^^^^ comment.line.terraform - ///////////////////////////////////////////////////////////////////// // LANGUAGE CONSTANTS ///////////////////////////////////////////////////////////////////// -///// -// Matches `true`. -///// - true # ^ -constant # ^^^^ constant.language.terraform # ^ -constant -///// -// Matches `false`. -///// - - false -# ^ -constant -# ^^^^^ constant.language.terraform -# ^ -constant - - -///// -// Matches `null`. -///// - - null -# ^ -constant -# ^^^^ constant.language.terraform -# ^ -constant - -///////////////////////////////////////////////////////////////////// -// INTEGER CONSTANTS -///////////////////////////////////////////////////////////////////// - -///// -// Matches integers. -///// - 444 # ^ -constant -numeric # ^^^ constant.numeric.integer.terraform -///// -// Matches zero. -///// - - 0 -# ^ -constant -numeric -# ^ constant.numeric.integer.terraform - -///// -// Matches one. -///// - - 1 -# ^ -constant -numeric -# ^ constant.numeric.integer.terraform - -///// -// Matches large integers. -///// - - 26345645634561 -# ^ -constant -numeric -# ^^^^^^^^^^^^^^ constant.numeric.integer.terraform - -///// -// Ignores integers inside identifiers. -///// aws_route53_zone.main.zone_id -# ^^^^^^^^^^^^^^^^ -numeric -constant -# ^ keyword.operator.accessor.terraform +# ^^^^^^^^^^^^^^^^ -numeric -constant +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform -///////////////////////////////////////////////////////////////////// -// FLOATING-POINT CONSTANTS -///////////////////////////////////////////////////////////////////// - -///// -// Matches floating-point numbers. -///// 1.2 # ^ -constant -numeric @@ -172,70 +46,6 @@ # ^ punctuation.separator.decimal.terraform # ^ constant.numeric.float.terraform -///// -// Matches large floating-point numbers. -///// - - 61.28888888888 -# ^ -constant -numeric -# ^^ constant.numeric.float.terraform -# ^ punctuation.separator.decimal.terraform -# ^^^^^^^^^^^ constant.numeric.float.terraform - -///// -// Matches integers with exponents. -///// - - 1e12 -# ^ -constant -numeric -# ^ constant.numeric.float.terraform -# ^ punctuation.separator.exponent.terraform -# ^^ constant.numeric.float.terraform - -///// -// Matches floats with exponents. -///// - - 1.4E12 -# ^ -constant -numeric -# ^ constant.numeric.float.terraform -# ^ punctuation.separator.decimal.terraform -# ^ constant.numeric.float.terraform -# ^ punctuation.separator.exponent.terraform -# ^^ constant.numeric.float.terraform - -///// -// Matches floats with postive signed exponents. -///// - - 1.4e+12 -# ^ -constant -numeric -# ^ constant.numeric.float.terraform -# ^ punctuation.separator.decimal.terraform -# ^ constant.numeric.float.terraform -# ^^ punctuation.separator.exponent.terraform -# ^^ constant.numeric.float.terraform - -///// -// Matches floats with negative signed exponents. -///// - - 1.4E-12 -# ^ -constant -numeric -# ^ constant.numeric.float.terraform -# ^ punctuation.separator.decimal.terraform -# ^ constant.numeric.float.terraform -# ^^ punctuation.separator.exponent.terraform -# ^^ constant.numeric.float.terraform - -///////////////////////////////////////////////////////////////////// -// STRINGS -///////////////////////////////////////////////////////////////////// - -///// -// Matches punctuation and assigns meta_scope. -///// - "a string" # ^ -punctuation -string # ^ punctuation.definition.string.begin.terraform @@ -243,397 +53,24 @@ # ^ punctuation.definition.string.end.terraform # ^ -punctuation -string -///// -// Matches character escapes. -///// - - "a \n b \r c \t d \" e \udead f \udeadbeef" -# ^ -punctuation -string -# ^ punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform -# ^^ constant.character.escape.terraform -# ^^ constant.character.escape.terraform -# ^^ constant.character.escape.terraform -# ^^ constant.character.escape.terraform -# ^^^^^ constant.character.escape.terraform -# ^^^^^^^^^^ constant.character.escape.terraform -# ^ punctuation.definition.string.end.terraform - -///////////////////////////////////////////////////////////////////// -// STRING INTERPOLATION -///////////////////////////////////////////////////////////////////// - -///// -// Correct scopes during interpolation. -///// - "some ${interpolation} string" # ^ -punctuation -string +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.terraform +# ^^^^^^ string.quoted.double.terraform # ^ punctuation.definition.string.begin.terraform -# ^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^ string.quoted.double.terraform +# ^^^^^^^^^^^^^^^^ meta.interpolation.terraform +# ^^ punctuation.section.interpolation.begin.terraform +# ^^^^^^^^^^^^^ source.terraform +# ^ punctuation.section.interpolation.end.terraform +# ^^^^^^^^ string.quoted.double.terraform # ^ punctuation.definition.string.end.terraform # ^ -punctuation -string -///// -// Matches left-trim and right-trim. -///// - - "%{~ fff ~}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^ meta.interpolation.terraform keyword.operator.template.left.trim.terraform -# ^^^^^^ meta.interpolation.terraform -# ^^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Matches operators -///// - - "${ something ? true : false }" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^ keyword.operator.terraform -# ^^^^ meta.interpolation.terraform constant.language.terraform -# ^ meta.interpolation.terraform keyword.operator.terraform -# ^^^^^ meta.interpolation.terraform constant.language.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Dot-access attributes in string interpolation -///// - - "hello ${aws_instance.ubuntu}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Handles function calls -///// - - "${formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z")}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.separator.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Handles nested function calls. -///// - - id = "db-final-snapshot-${md5(timestamp())}" -# ^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Includes objects. -//// - - "something ${{test = 3}}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^ meta.interpolation.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.interpolation.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.interpolation.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.interpolation.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Includes tuples. -//// - - "something ${[1, 2, 3]}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^ string.quoted.double.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ meta.interpolation.terraform punctuation.section.brackets.begin.terraform -# ^ meta.interpolation.terraform constant.numeric.integer.terraform -# ^ meta.interpolation.terraform punctuation.separator.terraform -# ^ meta.interpolation.terraform constant.numeric.integer.terraform -# ^ meta.interpolation.terraform punctuation.separator.terraform -# ^ meta.interpolation.terraform constant.numeric.integer.terraform -# ^ meta.interpolation.terraform punctuation.section.brackets.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Includes named values. -///// - - "${var.something}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///// -// Handles regexes (various punctuation). -///// - - records = ["${replace("hostname.domain.com:1234", "/(.*):[0-9]{0,26}/", "$1")}"] -# ^^^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.separator.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.separator.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ -meta -string -variable -punctuation - -///// -// Handles nested interpolation. -///// - - "${file("${path.module}/text_files/ecs_app")}" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.interpolation.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.interpolation.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///////////////////////////////////////////////////////////////////// -// Template If Directives -///////////////////////////////////////////////////////////////////// - -///// -// Matches if/endif directives. -///// - - "${ if name == "Mary" }${name}${ endif ~}" -# ^ -string -punctuation -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^^ meta.interpolation.terraform keyword.control.terraform -# ^^ meta.interpolation.terraform keyword.operator.terraform -# ^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform -# ^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ -string -punctuation - -///// -// Matches if/else/endif directives. -///// - - "%{ if name == "Mary" }${name}%{ else }${ "Mary" }%{ endif ~}" -# ^ -string -punctuation -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^^ meta.interpolation.terraform keyword.control.terraform -# ^^ meta.interpolation.terraform keyword.operator.terraform -# ^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform -# ^ source.terraform-vars meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ meta.interpolation.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.interpolation.terraform string.quoted.double.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ -string -punctuation - -///// -// Matches for/in/endfor directives. -///// - - "%{ for name in var.names ~}${name}%{ endfor ~}" -# ^ -string -punctuation -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^ keyword.control.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.interpolation.terraform -# ^^ keyword.control.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^^^ meta.interpolation.terraform keyword.control.terraform -# ^ meta.interpolation.terraform keyword.operator.template.right.trim.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ -string -punctuation - -///////////////////////////////////////////////////////////////////// -// Operators -///////////////////////////////////////////////////////////////////// - -///// -// Comparison -///// - - a == b -# ^ -keyword -operator -# ^^ keyword.operator.terraform -# ^ -keyword -operator - - a != b -# ^ -keyword -operator -# ^^ keyword.operator.terraform -# ^ -keyword -operator - - a < b -# ^ -keyword -operator -# ^ keyword.operator.terraform -# ^ -keyword -operator - - a <= b -# ^ -keyword -operator -# ^^ keyword.operator.terraform -# ^ -keyword -operator - - a > b -# ^ -keyword -operator -# ^ keyword.operator.terraform -# ^ -keyword -operator - - a >= b -# ^ -keyword -operator -# ^^ keyword.operator.terraform -# ^ -keyword -operator - -///// -// Arithmetic -///// - a + b # ^ -keyword -operator # ^ keyword.operator.arithmetic.terraform # ^ -keyword -operator - a - b -# ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator - - a * b -# ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator - - a / b -# ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator - - a % b -# ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator - - -a -# ^ -keyword -operator -# ^ keyword.operator.arithmetic.terraform -# ^ -keyword -operator - -///// -// Logic -///// - - a && b -# ^^ -keyword -operator -# ^^ keyword.operator.logical.terraform -# ^^ -keyword -operator - - a || b -# ^^ -keyword -operator -# ^^ keyword.operator.logical.terraform -# ^^ -keyword -operator - - !a -# ^^ -keyword -operator -# ^ keyword.operator.logical.terraform -# ^^ -keyword -operator - -///// -// Conditional -///// - length(some_list) > 0 ? some_list[0] : default # ^^^^^^ meta.function-call.terraform support.function.builtin.terraform # ^ meta.function-call.terraform punctuation.section.parens.begin.terraform @@ -647,1013 +84,26 @@ # ^ punctuation.section.brackets.end.terraform # ^ keyword.operator.terraform -///// -// Ellipsis -///// - - hhh([55, 2453, 2]...) -# ^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform -# ^^^^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform -# ^^^ keyword.operator.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///////////////////////////////////////////////////////////////////// -// Brackets: Index Operations and Arrays -///////////////////////////////////////////////////////////////////// - -///// -// Index Operations -///// - - thing[1] -# ^ -punctuation -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ -punctuation - -///// -// Arrays of literals -///// - - ["a", "b", "c"] + [{a = 1}, {g = 2}] # ^ punctuation.section.brackets.begin.terraform -# ^ punctuation.definition.string.begin.terraform -# ^^^ string.quoted.double.terraform -# ^ punctuation.definition.string.end.terraform -# ^ punctuation.separator.terraform -# ^ punctuation.definition.string.begin.terraform -# ^^^ string.quoted.double.terraform -# ^ punctuation.definition.string.end.terraform -# ^ punctuation.separator.terraform -# ^ punctuation.definition.string.begin.terraform -# ^^^ string.quoted.double.terraform -# ^ punctuation.definition.string.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Allows inline comments -///// +# ^ meta.braces.terraform punctuation.section.braces.begin.terraform +# ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform +# ^ meta.braces.terraform keyword.operator.terraform +# ^ meta.braces.terraform constant.numeric.integer.terraform +# ^ meta.braces.terraform punctuation.section.braces.end.terraform +# ^ punctuation.separator.terraform +# ^ meta.braces.terraform punctuation.section.braces.begin.terraform +# ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform +# ^ meta.braces.terraform keyword.operator.terraform +# ^ meta.braces.terraform constant.numeric.integer.terraform +# ^ meta.braces.terraform punctuation.section.braces.end.terraform +# ^ punctuation.section.brackets.end.terraform - [1, /* inline */ 2] -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform -# ^^ punctuation.definition.comment.terraform -# ^^^^^^^^^^^^ comment.block.terraform -# ^^ punctuation.definition.comment.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Allows expression over multiple lines -///// - - [ -# ^ punctuation.section.brackets.begin.terraform - 1, -# ^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform - 2 -# ^ constant.numeric.integer.terraform - ] -# ^ punctuation.section.brackets.end.terraform - -///// -// Allows operators -///// - - [ 1 + 2 ] -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ keyword.operator.arithmetic.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Splat operator -///// - - tuple[*].foo.bar[0] -# ^ punctuation.section.brackets.begin.terraform -# ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform -# ^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Handle nested arrays -///// - - count = [ -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform - [ 1, 2], -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ punctuation.separator.terraform - [ 6, 7] -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.separator.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - ] -# ^ punctuation.section.brackets.end.terraform -# ^ -punctuation - -///// -// Attribute-access inside arrays -///// - - [ aws_instance.ubuntu, aws_instance.freebsd ] -# ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ punctuation.separator.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Includes functions. -///// - - [ upper("ggh") ] -# ^ punctuation.section.brackets.begin.terraform -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Include objects. -///// - - [{a = 1}, {g = 2}] -# ^ punctuation.section.brackets.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ punctuation.separator.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Includes named values -///// - - [local.thing1, local.thing2] -# ^ punctuation.section.brackets.begin.terraform -# ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ punctuation.separator.terraform -# ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform - -///////////////////////////////////////////////////////////////////// -// Collections: Objects -///////////////////////////////////////////////////////////////////// - -///// -// Key/value pairs separated by newlines. -///// - - { -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform - name = "John" -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.braces.terraform string.quoted.double.terraform - age = 52 -# ^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^^ meta.braces.terraform constant.numeric.integer.terraform - } -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Key/value pairs separated by commas. -///// - - {name = "John", age = 52} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.braces.terraform string.quoted.double.terraform -# ^ meta.braces.terraform punctuation.separator.terraform -# ^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Allows operators in key values. -///// - - { name = 1 + 1 } -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform keyword.operator.arithmetic.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ -meta - -///// -// Allows tuples as key values. -///// - - { list = [ 1, 2, 3 ]} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform punctuation.section.brackets.begin.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.separator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.separator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.brackets.end.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ -meta - -///// -// Allows function calls as values. -///// - - { -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform - a = upper("l"), -# ^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^^^^^ meta.braces.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.braces.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.braces.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.braces.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.braces.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.braces.terraform punctuation.separator.terraform - } -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Allows nested collection literals. -///// - - { -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform - obj1 = { -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform - obj2 = { -# ^^^^ meta.braces.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform - value = 5 -# ^^^^^ meta.braces.terraform meta.braces.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform constant.numeric.integer.terraform - } -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform punctuation.section.braces.end.terraform - } -# ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.end.terraform - } -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ -meta - -///// -// Allows attribute-access as rvalue, including named values. -///// - - { lvalue = var.rvalue } -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^^^ meta.braces.terraform support.constant.terraform -# ^ meta.braces.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.braces.terraform variable.other.member.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ -meta - -///// -// Allows strings as keys. -///// - - {"gggg" = "gggg"} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.quoted.double.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.braces.terraform string.quoted.double.terraform -# ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Allows expressions + operators as keys. -///// - - {(1 + 2) = "gggg"} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform keyword.operator.arithmetic.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.end.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.braces.terraform string.quoted.double.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Allows function calls as keys. -///// - - {(func()) = 1} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform meta.function-call.terraform variable.function.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.end.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///// -// Allows attribute-access as keys. -//// - - {(var.path) = 1} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.braces.terraform meta.mapping.key.terraform support.constant.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform keyword.operator.accessor.terraform -# ^^^^ meta.braces.terraform meta.mapping.key.terraform variable.other.member.terraform -# ^ meta.braces.terraform meta.mapping.key.terraform punctuation.section.parens.end.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^ meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - -///////////////////////////////////////////////////////////////////// -// Attribute Access -///////////////////////////////////////////////////////////////////// - -///// -// Matches dot-access -///// - - aws_instance.ubuntu[*].private_dns -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ punctuation.section.brackets.end.terraform keyword.operator.splat.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^^ variable.other.member.terraform -# ^ -variable -punctuation - -///// -// Ignores dot-access in string literals -///// - - "aws_instance.ubuntu" -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ -variable -# ^^^^^^^^^^^^^^^^^^^^^ string.quoted.double.terraform - -///// -// Matches inside for-expressions -///// - - [for l in var.letters: upper(l)] -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Attribute-only splat -///// - - tuple.*.foo.bar[0] -# ^ keyword.operator.accessor.terraform -# ^ keyword.operator.splat.terraform -# ^ keyword.operator.accessor.terraform -# ^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Matches subscript indexes -///// - - aws_route53_zone.project.name_servers.1 -# ^ keyword.operator.accessor.terraform -# ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^ constant.numeric.integer.terraform -# ^ -constant -punctuation -variable - -///////////////////////////////////////////////////////////////////// -// Attribute Definition -///////////////////////////////////////////////////////////////////// - -///// -// Basic definition -///// - - count = length(var.availability_zones) -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Populate an attribute from a variable value -///// - - (foo) = "baz" -# ^ variable.declaration.terraform punctuation.section.parens.begin.terraform -# ^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^ variable.declaration.terraform punctuation.section.parens.end.terraform -# ^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ string.quoted.double.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform - -///////////////////////////////////////////////////////////////////// -// Function Calls -///////////////////////////////////////////////////////////////////// - -///// -// Basic call. -///// - - thing(l) -# ^^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Matches parameters, attribute-access, literals, operators, commas. -///// - - cidrthingy(aws_vpc.main.cidr_block, 4, count.index+1) -# ^^^^^^^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform keyword.operator.arithmetic.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -meta -function-call -variable - -///// -// Matches arrays and splat as parameters. -///// - - y6y([55, 2453, 2]..., [55555555]) -# ^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^^^ meta.function-call.terraform keyword.operator.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^^^^^^^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Matches objects as parameters. -///// - - some({a = 1, b = "2"}) -# ^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Nested function calls. -///// - - func(thing(yep(1))) -# ^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^ meta.function-call.terraform meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.function-call.terraform meta.function-call.terraform meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - -///// -// Parameters spanning multiple lines. -///// - - func( -# ^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform - 1, -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform - 2 -# ^ meta.function-call.terraform constant.numeric.integer.terraform - ) -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Allow object for-expressions. -//// - - thing({for i, v in ["a"]: v => i...}) -# ^^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.function-call.terraform meta.braces.terraform keyword.control.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform keyword.operator.word.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform keyword.operator.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform storage.type.function.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^^ meta.function-call.terraform keyword.operator.terraform -# ^ meta.function-call.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Allow tuple for-expressions. -///// - - func([for v in ["a", "b"]: v]) -# ^^^^ meta.function-call.terraform variable.function.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^^^ meta.function-call.terraform keyword.control.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^^ meta.function-call.terraform keyword.operator.word.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform keyword.operator.terraform -# ^ meta.function-call.terraform variable.other.readwrite.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///////////////////////////////////////////////////////////////////// -// Built-in Terraform Functions -// TODO: match % placeholders in format()-family first parameters -// TODO: match regexs in regex()-family first parameters -////////////////////////`///////////////////////////////////////////// - -///// -// Numeric Functions -///// - - abs(23) -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - ceil(5.1) -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.function-call.terraform constant.numeric.float.terraform -# ^ meta.function-call.terraform constant.numeric.float.terraform punctuation.separator.decimal.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - floor(5) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - log(50, 10) -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - max(12, 54, 3) -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - min(12, 54, 3) -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - pow(3, 2) -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - signum(-13) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform keyword.operator.arithmetic.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// String Functions -///// - - chomp("hello\n") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform constant.character.escape.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - format("Hello, %s!", "Ander") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - formatlist("Hello, %s!", ["Valentina", "Ander"]) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - indent(2, "[\n foo,\n bar,\n]\n") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - join(", ", ["foo", "bar", "baz"]) -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - lower("HELLO") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - regex("[a-z]+", "53453453.345345aaabbbccc23454") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - regexall("[a-z]+", "1234abcd5678efgh9") -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - replace("1 + 2 + 3", "+", "-") -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - split(",", "foo") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - strrev("hello") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - substr("🤔🤷", 0, 1) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - title("hello world") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - trimspace(" hello\n\n") -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - upper("hello") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Collection Functions -///// - - chunklist(["a", "b"], 2) -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - coalesce("a", "b") -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - coalescelist([], ["c", "d"]) -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - compact(["a", "", "b"]) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - concat(["a"], ["c"]) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - contains(["a"], "a") -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - distinct(["a", "b", "a"]) -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - element(["a", "b"], 1) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - flatten([[["a", "b"]], ["c"]]) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - index(["a"], "b") -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform + thing(l) +# ^^^^^ meta.function-call.terraform variable.function.terraform +# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform +# ^ meta.function-call.terraform +# ^ meta.function-call.terraform punctuation.section.parens.end.terraform keys({a=1, c=2}) # ^^^^ meta.function-call.terraform support.function.builtin.terraform @@ -1667,1347 +117,55 @@ # ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform # ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform # ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - length([]) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - list("a", "b", "c") -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - lookup({a="ay", b="bee"}, "a", "what?") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - map("a", "b") -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - matchkeys(["i-123", "i-abc"], ["us-west", "us-east"], ["us-east"]) -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - merge({a="b"}, {e="f"}) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - range(1, 4) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - reverse([1, 2, 3]) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - setintersection(["a", "b"], ["b", "c"]) -# ^^^^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - setproduct(["development"], ["app1", "app2"]) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - setunion(["a"], ["b"], ["d"]) -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - slice(["a", "b"], 1, 1) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - sort(["e", "d"]) -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform # ^ meta.function-call.terraform punctuation.section.parens.end.terraform - transpose({a = ["1", "2"], b = ["2", "3"]}) -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - values({a=3, c=2, d=1}) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - zipmap(["a", "b"], [1, 2]) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Encoding Functions -///// - - base64decode("SGVsbG8gV29ybGQ=") -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - base64encode("Hello World") -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - base64gzip("Hello World") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - csvdecode("a,b,c\n1,2,3\n4,5,6") -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - jsondecode("{\"hello\": \"world\"}") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - jsonencode({hello="world"}) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^^^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - urlencode("Hello World") -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - yamldecode("true") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - yamlencode({a = "b", c = "d"}) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Filesystem Functions -///// - - abspath(path.root) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - dirname("foo/bar/baz.txt") -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - pathexpand("~/.ssh/id_rsa") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - basename("foo/bar/baz.txt") -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - file("${path.module}/hello.txt") -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - fileexists("${path.module}/hello.txt") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - fileset(path.module, "files/*.txt") -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform support.constant.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - filebase64("${path.module}/hello.txt") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - templatefile("${path.module}/backends.tmpl", { -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform - port = 8080, -# ^^^^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^^^^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform - ip_addrs = ["10.0.0.1", "10.0.0.2"] -# ^^^^^^^^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.brackets.end.terraform - }) -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Date & Time Functions -///// - - formatdate("DD MMM YYYY hh:mm ZZZ", "2018-01-02T23:12:01Z") -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - timeadd("2017-11-22T00:00:00Z", "10m") -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - timestamp() -# ^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Hash & Crypto Functions -///// - - base64sha256("hello world") -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - base64sha512("hello world") -# ^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - bcrypt("hello world") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - filebase64sha256(file("filename")) -# ^^^^^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - filebase64sha512(file("filename")) -# ^^^^^^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - filemd5(file("filename")) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - filemd1(file("filename")) -# ^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - filesha256(file("filename")) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - filesha512(file("filename")) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - md5("hello world") -# ^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - rsadecrypt(filebase64("${path.module}/ciphertext"), file("privatekey.pem")) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform support.constant.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^^^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform variable.other.member.terraform -# ^ meta.function-call.terraform meta.function-call.terraform meta.interpolation.terraform keyword.other.interpolation.end.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^^^ meta.function-call.terraform meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^ meta.function-call.terraform meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ -function - - sha1("hello world") -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - sha256("hello world") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - sha512("hello world") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - uuid() -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - uuidv5("dns", "www.terraform.io") -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// IP Network Functions -///// - - cidrhost("10.12.127.0/20", 16) -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - cidrnetmask("172.16.0.0/12") -# ^^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - cidrsubnet("172.16.0.0/12", 4, 2) -# ^^^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///// -// Type Conversions Functions -///// - - tobool(true) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^ meta.function-call.terraform constant.language.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - tolist(["a", "b", "c"]) -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - tomap({a = 1, b = 2}) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.function-call.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.function-call.terraform meta.braces.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform meta.braces.terraform punctuation.section.braces.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - tonumber(1) -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - toset(["a", "b", "c"]) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.brackets.end.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - - tostring("hello") -# ^^^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.function-call.terraform string.quoted.double.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - -///////////////////////////////////////////////////////////////////// -// TUPLE FOR-EXPRESSIONS -///////////////////////////////////////////////////////////////////// - -///// -// Basic expression. -///// - [for s in var.list : upper(s)] # ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform +# ^^ keyword.control.loop.in.terraform +# ^^^ variable.language.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform +# ^ punctuation.section.block.loop.for.terraform +# ^^^^^^^^ meta.function-call.terraform +# ^^^^^ support.function.builtin.terraform +# ^ punctuation.section.parens.begin.terraform +# ^ punctuation.section.parens.end.terraform # ^ punctuation.section.brackets.end.terraform -///// -// Object or map source value. -//// - - [for k, v in var.map : length(k) + length(v)] -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^ punctuation.separator.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ keyword.operator.arithmetic.terraform -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Complex right-side expressions. -//// - - [for o in var.list : o.interfaces[0].name] -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Legacy splat expression attribute access. -///// - - [for o in var.list : o.interfaces][0].name -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform - -///// -// Multi-line for-expressions. -///// - - value = [ -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform - for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform -# ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform - instance.private_dns -# ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^^ variable.other.member.terraform - ] -# ^ punctuation.section.brackets.end.terraform - -///// -// Match conditional on right-side expression. -///// - - value = [ -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform - for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform -# ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform - (instance.public_ip != "" ? list(instance.private_ip, instance.public_ip) : list(instance.private_ip)) -# ^ punctuation.section.parens.begin.terraform -# ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform -# ^^ keyword.operator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.operator.terraform -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ keyword.operator.terraform -# ^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^ meta.function-call.terraform variable.other.member.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ punctuation.section.parens.end.terraform - ] -# ^ punctuation.section.brackets.end.terraform - -///// -// Match brackets on right-side expression. -///// - - value = [ -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ punctuation.section.brackets.begin.terraform - for instance in aws_instance.ubuntu: -# ^^^ keyword.control.terraform -# ^^^^^^^^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^^^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform - (instance.public_ip != "" ? [instance.private_ip, instance.public_ip] : [instance.private_ip]) -# ^ punctuation.section.parens.begin.terraform -# ^^^^^^^^ variable.other.readwrite.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform -# ^^ keyword.operator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ keyword.operator.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.separator.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^ variable.other.member.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ punctuation.section.parens.end.terraform - ] -# ^ punctuation.section.brackets.end.terraform - -///// -// Match if-conditionals on right-side. -///// - - [for s in var.list : upper(s) if s != ""] -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^^ keyword.control.conditional.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ punctuation.section.brackets.end.terraform - -///// -// Matches bracket-literals as range expression. -///// - - [for i, v in ["a", "b", "c"]: v if i < 2] -# ^ punctuation.section.brackets.begin.terraform -# ^^^ keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^ punctuation.separator.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform -# ^ punctuation.separator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform -# ^ punctuation.separator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.control.conditional.terraform -# ^ variable.other.readwrite.terraform -# ^ keyword.operator.terraform -# ^ constant.numeric.integer.terraform -# ^ punctuation.section.brackets.end.terraform - -///////////////////////////////////////////////////////////////////// -// OBJECT FOR-EXPRESSIONS -///////////////////////////////////////////////////////////////////// - -///// -// Matches basic syntax. -///// - - {for i, v in ["a", "b"]: v => i} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^ punctuation.separator.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform -# ^ punctuation.separator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform -# ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform -# ^ variable.other.readwrite.terraform -# ^ punctuation.section.braces.end.terraform -# ^ -meta - -///// -// Matches ellipsis. -///// - {for i, v in ["a"]: v => i...} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform +# ^^^^ meta.braces.terraform +# ^ punctuation.section.braces.begin.terraform +# ^^^ keyword.control.loop.for.terraform # ^ variable.other.readwrite.terraform # ^ punctuation.separator.terraform # ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform +# ^^ keyword.control.loop.in.terraform # ^ punctuation.section.brackets.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^ string.quoted.double.terraform +# ^^^ meta.string.terraform string.quoted.double.terraform +# ^ punctuation.definition.string.begin.terraform +# ^ punctuation.definition.string.end.terraform # ^ punctuation.section.brackets.end.terraform -# ^ keyword.operator.terraform +# ^ punctuation.section.block.loop.for.terraform # ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform +# ^^ punctuation.separator.key-value.terraform # ^ variable.other.readwrite.terraform # ^^^ keyword.operator.terraform # ^ punctuation.section.braces.end.terraform -///// -// Matches if-conditional. -///// - - {for s in var.list : substr(s, 0, 1) => s... if s != ""} -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^^^ meta.braces.terraform keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.separator.terraform -# ^ meta.function-call.terraform constant.numeric.integer.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^^ storage.type.function.terraform -# ^ variable.other.readwrite.terraform -# ^^^ keyword.operator.terraform -# ^^ keyword.control.conditional.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^ string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ punctuation.section.braces.end.terraform - -///// -// Matches over multiple-lines. -///// - - value = { -# ^^^^^ variable.declaration.terraform variable.other.readwrite.terraform -# ^^ variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform - for l in var.letters: l => -# ^^^ meta.braces.terraform keyword.control.terraform -# ^ variable.other.readwrite.terraform -# ^^ keyword.operator.word.terraform -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^^ storage.type.function.terraform - upper(l) -# ^^^^^ meta.function-call.terraform support.function.builtin.terraform -# ^ meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform - } -# ^ punctuation.section.braces.end.terraform - -///////////////////////////////////////////////////////////////////// -// BLOCKS -///////////////////////////////////////////////////////////////////// - -///// -// Inline block with no labels. -//// - - thing {} -# ^^^^^ meta.type.terraform entity.name.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - -///// -// Inline block with string labels. -///// - thing "label1" "label2" {} -# ^^^^^ meta.type.terraform entity.name.type.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.type.terraform string.quoted.double.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.type.terraform string.quoted.double.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.type.terraform +# ^^^^^ entity.name.type.terraform +# ^^^^^^^^ string.quoted.double.terraform +# ^ punctuation.definition.string.begin.terraform +# ^ punctuation.definition.string.end.terraform +# ^^^^^^^^ string.quoted.double.terraform +# ^ punctuation.definition.string.begin.terraform +# ^ punctuation.definition.string.end.terraform +# ^ meta.block.terraform punctuation.section.block.begin.terraform # ^ meta.block.terraform punctuation.section.block.end.terraform -# ^ -meta -///// -// Inline block with identifier labels. -///// - - thing thing1 thing2 thing3 {} -# ^^^^^ meta.type.terraform entity.name.type.terraform -# ^^^^^^ meta.type.terraform entity.name.label.terraform -# ^^^^^^ meta.type.terraform entity.name.label.terraform -# ^^^^^^ meta.type.terraform entity.name.label.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - -////// -// Nested multi-line blocks with expressions. -///// - - resource "aws_security_group" "example" { -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^^^^^^^^^^^^ meta.type.terraform string.quoted.double.terraform -# ^ meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.type.terraform string.quoted.double.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform - name = "example" -# ^^^^ meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.block.terraform string.quoted.double.terraform - - dynamic "ingress" { -# ^^^^^^^ meta.block.terraform meta.type.terraform entity.name.type.terraform -# ^ meta.block.terraform meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.block.terraform meta.type.terraform string.quoted.double.terraform -# ^ meta.block.terraform meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform - for_each = var.service_ports -# ^^^^^^^^ meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^^^ meta.block.terraform meta.block.terraform support.constant.terraform -# ^ meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^^^^ meta.block.terraform meta.block.terraform variable.other.member.terraform - content { -# ^^^^^^^ meta.block.terraform meta.block.terraform meta.type.terraform entity.name.type.terraform -# ^ meta.block.terraform meta.block.terraform meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform - from_port = ingress.value -# ^^^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform -# ^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.other.member.terraform - to_port = ingress.value -# ^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform keyword.operator.accessor.terraform - protocol = "tcp" + "IP" -# ^^^^^^^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform meta.block.terraform meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.block.terraform meta.block.terraform meta.block.terraform string.quoted.double.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform keyword.operator.arithmetic.terraform -# ^ meta.block.terraform meta.block.terraform meta.block.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^ meta.block.terraform meta.block.terraform meta.block.terraform string.quoted.double.terraform - } -# ^ meta.block.terraform meta.block.terraform meta.block.terraform punctuation.section.block.end.terraform - } -# ^ meta.block.terraform meta.block.terraform punctuation.section.block.end.terraform - } -# ^ meta.block.terraform punctuation.section.block.end.terraform -# ^ -meta - -///// -// Matches blocks with functions, objects, tuples. -///// - - thing label1 { -# ^^^^^ meta.type.terraform entity.name.type.terraform -# ^^^^^^ meta.type.terraform entity.name.label.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform - func = function(param1) -# ^^^^ meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^^^^^^^^ meta.block.terraform meta.function-call.terraform variable.function.terraform -# ^ meta.block.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^ meta.block.terraform meta.function-call.terraform -# ^ meta.block.terraform meta.function-call.terraform punctuation.section.parens.end.terraform - obj = { -# ^^^ meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform - key = "value" -# ^^^ meta.block.terraform meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.block.terraform meta.braces.terraform keyword.operator.terraform -# ^ meta.block.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.block.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.block.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform - } -# ^ meta.block.terraform meta.braces.terraform punctuation.section.braces.end.terraform - tuple = [1, 2] -# ^^^^^ meta.block.terraform variable.declaration.terraform variable.other.readwrite.terraform -# ^^ meta.block.terraform variable.declaration.terraform keyword.operator.assignment.terraform -# ^ meta.block.terraform punctuation.section.brackets.begin.terraform -# ^ meta.block.terraform constant.numeric.integer.terraform -# ^ meta.block.terraform punctuation.separator.terraform -# ^ meta.block.terraform constant.numeric.integer.terraform -# ^ meta.block.terraform punctuation.section.brackets.end.terraform - } -# ^ meta.block.terraform punctuation.section.block.end.terraform -# ^ -meta -block - -///////////////////////////////////////////////////////////////////// -// TERRAFORM NAMED VALUES -///////////////////////////////////////////////////////////////////// - - var.something -# ^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform - - local.something -# ^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform - - module.name.output_name -# ^^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^^^ variable.other.member.terraform - - data.data_type.name -# ^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^ variable.other.member.terraform - - path.module -# ^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^ variable.other.member.terraform - - terraform.workspace -# ^^^^^^^^^ support.constant.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^^^ variable.other.member.terraform - -///////////////////////////////////////////////////////////////////// -// TERRAFORM TOP-LEVEL BLOCK TYPES -///////////////////////////////////////////////////////////////////// - - resource {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - provider {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - variable {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - output {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - locals {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - module {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - data {} -# ^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - - terraform {} -# ^^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.type.terraform meta.block.terraform punctuation.section.block.begin.terraform -# ^ meta.block.terraform punctuation.section.block.end.terraform - -///////////////////////////////////////////////////////////////////// -// TERRAFORM TYPE KEYWORDS -///////////////////////////////////////////////////////////////////// - - string -# ^^^^^^ storage.type.terraform - - any -# ^^^ storage.type.terraform - - number -# ^^^^^^ storage.type.terraform - - bool -# ^^^^ storage.type.terraform - -///////////////////////////////////////////////////////////////////// -// HEREDOCS -///////////////////////////////////////////////////////////////////// - -///// -// Basic example. -///// << EOF # ^^ keyword.operator.heredoc.terraform # ^^^ keyword.control.heredoc.terraform @@ -3016,62 +174,10 @@ EOF # ^^^^ keyword.control.heredoc.terraform -///// -// With leading-spaces-operator. -///// - - <<- END -# ^^^ keyword.operator.heredoc.terraform -# ^^^ keyword.control.heredoc.terraform - heredoc -# ^^^^^^^^ string.unquoted.heredoc.terraform - EOF -# ^^^^ string.unquoted.heredoc.terraform - END -# ^^^^ keyword.control.heredoc.terraform - -///// -// Includes string interpolation. -///// - - <<- END -# ^^^ keyword.operator.heredoc.terraform -# ^^^ keyword.control.heredoc.terraform - Hello, ${var.name} -# ^^^^^^^ string.unquoted.heredoc.terraform -# ^^ meta.interpolation.terraform keyword.other.interpolation.begin.terraform -# ^^^ meta.interpolation.terraform support.constant.terraform -# ^ meta.interpolation.terraform keyword.operator.accessor.terraform -# ^^^^ meta.interpolation.terraform variable.other.member.terraform -# ^ meta.interpolation.terraform keyword.other.interpolation.end.terraform - END -# ^^^^ keyword.control.heredoc.terraform - -///////////////////////////////////////////////////////////////////// -// IMPORTS -///////////////////////////////////////////////////////////////////// - -///// -// Import with attribute access. -///// - terraform import aws_instance.example i-abcd1234 # ^^^^^^^^^ support.constant.terraform # ^^^^^^ keyword.control.import.terraform # ^^^^^^^^^^^^ entity.name.label.terraform -# ^ keyword.operator.accessor.terraform +# ^ punctuation.accessor.dot.terraform # ^^^^^^^ variable.other.member.terraform # ^^^^^^^^^^ entity.name.label.terraform - -///// -// Import with numeric literals. -///// - - terraform import digitalocean_ssh_key.mykey 263654 -# ^^^^^^^^^ support.constant.terraform -# ^^^^^^ keyword.control.import.terraform -# ^^^^^^^^^^^^^^^^^^^^ entity.name.label.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^ variable.other.member.terraform -# ^^^^^^ constant.numeric.integer.terraform -