From bce580092a68554f78ecb9d06be5b7273f1fff30 Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Wed, 7 Aug 2024 12:08:48 +0200 Subject: [PATCH 1/5] Remove tmLanguage file and company --- Terraform.YAML-tmLanguage | 389 ----- Terraform.tmLanguage | 1151 ------------- syntax_test_terraform_tm.tf | 3078 ----------------------------------- 3 files changed, 4618 deletions(-) delete mode 100644 Terraform.YAML-tmLanguage delete mode 100644 Terraform.tmLanguage delete mode 100644 syntax_test_terraform_tm.tf diff --git a/Terraform.YAML-tmLanguage b/Terraform.YAML-tmLanguage deleted file mode 100644 index bcfd0a1..0000000 --- a/Terraform.YAML-tmLanguage +++ /dev/null @@ -1,389 +0,0 @@ -# [PackageDev] target_format: plist, ext: tmLanguage ---- -name: Terraform -scopeName: source.terraform -fileTypes: [tf, tfvars, hcl, nomad] -uuid: 9060ca81-906d-4f19-a91a-159f4eb119d6 - -patterns: - - include: '#comments' - - include: '#top_level_attribute_definition' - - include: '#imports' - - include: '#block' - - include: '#expressions' - -repository: - main: - patterns: - - include: '#comments' - - include: '#block' - - include: '#expressions' - - comments: - patterns: - - include: '#inline_comments' - - include: '#block_comments' - - expressions: - patterns: - - include: '#literal_values' - - include: '#operators' - - include: '#brackets' - - include: '#objects' - - include: '#attribute_access' - - include: '#functions' - - include: '#parens' - - literal_values: - patterns: - - include: '#numeric_literals' - - include: '#language_constants' - - include: '#string_literals' - - include: '#heredoc' - - include: '#type_keywords' - - include: '#named_value_references' - - comma: - comment: Commas - used in certain expressions - name: punctuation.separator.terraform - match: \, - - parens: - comment: Parens - matched *after* function syntax - begin: '\(' - beginCaptures: - '0': { name: punctuation.section.parens.begin.terraform } - end: '\)' - endCaptures: - '0': { name: punctuation.section.parens.end.terraform } - patterns: - - include: '#expressions' - - match: \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - comment: Local Identifiers - name: variable.other.readwrite.terraform - - named_value_references: - comment: Terraform built-in variables - match: '\b(var|local|module|data|path|terraform)\b' - name: support.constant.terraform - - type_keywords: - comment: Type keywords known to Terraform. - match: '\b(any|string|number|bool)\b' - name: storage.type.terraform - - inline_comments: - comment: Inline comments - name: comment.line.terraform - begin: '#|//' - beginCaptures: - '0': { name: punctuation.definition.comment.terraform } - end: "$\n?" - - block_comments: - comment: Block comments - name: comment.block.terraform - begin: /\* - beginCaptures: - '0': { name: punctuation.definition.comment.terraform } - end: \*/ - endCaptures: - '0': { name: punctuation.definition.comment.terraform } - - language_constants: - comment: Language Constants - name: constant.language.terraform - match: \b(true|false|null)\b - - numeric_literals: - patterns: - - comment: Integer, no fraction, optional exponent - name: constant.numeric.float.terraform - match: '\b\d+(([Ee][+-]?))\d+\b' - captures: - '1': { name: punctuation.separator.exponent.terraform } - - comment: Integer, fraction, optional exponent - name: constant.numeric.float.terraform - match: '\b\d+(\.)\d+(?:(([Ee][+-]?))\d+)?\b' - captures: - '1': { name: punctuation.separator.decimal.terraform } - '2': { name: punctuation.separator.exponent.terraform } - - comment: Integers - name: constant.numeric.integer.terraform - match: '\b\d+\b' - - string_literals: - comment: Strings - name: string.quoted.double.terraform - begin: '"' - beginCaptures: - '0': { name: punctuation.definition.string.begin.terraform } - end: '"' - endCaptures: - '0': { name: punctuation.definition.string.end.terraform } - patterns: - - include: '#string_interpolation' - - comment: Character Escapes - match: \\[nrt"\\]|\\u(\h{8}|\h{4}) - name: constant.character.escape.terraform - - string_interpolation: - comment: String interpolation - name: meta.interpolation.terraform - begin: '(\$|\%)\{' - beginCaptures: - '0': { name: keyword.other.interpolation.begin.terraform } - end: \} - endCaptures: - '0': { name: keyword.other.interpolation.end.terraform} - patterns: - - comment: Trim left whitespace - name: keyword.operator.template.left.trim.terraform - match: \~\s - - comment: Trim right whitespace - name: keyword.operator.template.right.trim.terraform - match: \s\~ - - comment: if/else/endif and for/in/endfor directives - name: keyword.control.terraform - match: \b(if|else|endif|for|in|endfor)\b - - include: '#expressions' - - heredoc: - comment: Heredocs - name: string.unquoted.heredoc.terraform - begin: '(\<\<\-?)\s*(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)\s*$' - beginCaptures: - '1': { name: keyword.operator.heredoc.terraform } - '2': { name: keyword.control.heredoc.terraform } - end: '^\s*\2\s*$' - endCaptures: - '0': { name: keyword.control.heredoc.terraform } - patterns: - - include: '#string_interpolation' - - operators: - patterns: - - match: \>\= # >= - name: keyword.operator.terraform - - match: \<\= # <= - name: keyword.operator.terraform - - match: \=\= # == - name: keyword.operator.terraform - - match: \!\= # != - name: keyword.operator.terraform - - match: \+ # + - name: keyword.operator.arithmetic.terraform - - match: \- # - - name: keyword.operator.arithmetic.terraform - - match: \* # * - name: keyword.operator.arithmetic.terraform - - match: \/ # / - name: keyword.operator.arithmetic.terraform - - match: \% # % - name: keyword.operator.arithmetic.terraform - - match: \&\& # && - name: keyword.operator.logical.terraform - - match: \|\| # || - name: keyword.operator.logical.terraform - - match: \! # ! - name: keyword.operator.logical.terraform - - match: \> # > - name: keyword.operator.terraform - - match: \< # < - name: keyword.operator.terraform - - match: \? # ? - name: keyword.operator.terraform - - match: \.\.\. # ... - name: keyword.operator.terraform - - match: "\\:" # : - name: keyword.operator.terraform - - brackets: - comment: Tuples & subscript notation - begin: \[ - beginCaptures: - '0': { name: punctuation.section.brackets.begin.terraform } - end: (\*)?\] - endCaptures: - '0': { name: punctuation.section.brackets.end.terraform } - '1': { name: keyword.operator.splat.terraform } - patterns: - - include: '#comma' - - include: '#comments' - - include: '#expressions' - - include: '#tuple_for_expression' - - objects: - comment: Map collection values - name: meta.braces.terraform - begin: '\{' - beginCaptures: - '0': { name: punctuation.section.braces.begin.terraform } - end: '\}' - endCaptures: - '0': { name: punctuation.section.braces.end.terraform } - patterns: - - include: '#object_for_expression' - - include: '#comments' - - comment: Literal, named object key - begin: '\s*(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)\s*(\=)\s*' - beginCaptures: - '1': { name: 'meta.mapping.key.terraform string.unquoted.terraform' } - '2': { name: keyword.operator.terraform } - end: ((\,)|($\n?)|(?=\})) - endCaptures: - '1': { name: punctuation.separator.terraform } - '3': { name: punctuation.section.braces.end.terraform } - patterns: - - include: '#object_key_values' - - comment: String object key - begin: '((\").*(\"))\s*(\=)\s*' - beginCaptures: - '1': { name: meta.mapping.key.terraform string.quoted.double.terraform } - '2': { name: punctuation.definition.string.begin.terraform } - '3': { name: punctuation.definition.string.end.terraform } - '4': { name: keyword.operator.terraform } - end: ((\,)|($\n?)|(?=\})) - endCaptures: - '1': { name: punctuation.separator.terraform } - '3': { name: punctuation.section.braces.end.terraform } - patterns: - - include: '#object_key_values' - - comment: Begin computed object key - name: meta.mapping.key.terraform - begin: '\(' - beginCaptures: - '0': { name: punctuation.section.parens.begin.terraform } - end: '(\))\s*(\=)\s*' - endCaptures: - '1': { name: punctuation.section.parens.end.terraform } - '2': { name: keyword.operator.terraform } - patterns: - - include: '#expressions' - - comment: Random Expression, for matching after computed keys - patterns: - - include: '#main' - - object_key_values: - patterns: - - include: '#comments' - - include: '#expressions' - - attribute_access: - comment: Attribute Access - "." Identifier - begin: '\.' - beginCaptures: - '0': { name: keyword.operator.accessor.terraform } - end: '(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)|(\*)|(\d+)' - endCaptures: - '1': { name: variable.other.member.terraform } - '2': { name: keyword.operator.splat.terraform } - '3': { name: constant.numeric.integer.terraform } - - top_level_attribute_definition: - comment: Attribute Definition - Identifier "=" Expression Newline - match: (\()?(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)(\))?\s*(\=[^\=|\>])\s* - name: variable.declaration.terraform - captures: - '1': { name: punctuation.section.parens.begin.terraform } - '2': { name: variable.other.readwrite.terraform } - '3': { name: punctuation.section.parens.end.terraform } - '4': { name: keyword.operator.assignment.terraform } - - functions: - comment: Functions calls- Terraform builtins and unknown - name: meta.function-call.terraform - begin: '((abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)|\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b))(\()' - beginCaptures: - '2': { name: support.function.builtin.terraform } - '3': { name: variable.function.terraform } - '4': { name: punctuation.section.parens.begin.terraform } - end: \) - endCaptures: - '0': { name: punctuation.section.parens.end.terraform } - patterns: - - include: '#comments' - - include: '#expressions' - - include: '#comma' - - tuple_for_expression: - comment: Tuple for-expression - begin: \bfor\b - beginCaptures: - '0': { name: keyword.control.terraform } - end: '(?=\])' - patterns: - - match: '\bin\b' - name: keyword.operator.word.terraform - - match: '\bif\b' - name: keyword.control.conditional.terraform - - match: "\\:" - name: keyword.operator.terraform - - include: '#expressions' - - include: '#comments' - - include: '#comma' - - match: '\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b' - comment: Local Identifiers - name: variable.other.readwrite.terraform - - object_for_expression: - comment: Object for-expression - begin: '\bfor\b' - beginCaptures: - '0': { name: keyword.control.terraform } - end: '(?=\})' - patterns: - - match: \=\> - name: storage.type.function.terraform - - match: '\bin\b' - name: keyword.operator.word.terraform - - match: '\bif\b' - name: keyword.control.conditional.terraform - - match: "\\:" - name: keyword.operator.terraform - - include: '#expressions' - - include: '#comments' - - include: '#comma' - - match: '\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b' - comment: Local Identifiers - name: variable.other.readwrite.terraform - - # Blocks in the tmLanguage only catch the first line of the - # block definition. The body of the block is covered by the - # #objects context, since we don't have a stack to push and - # pop contexts, it's impossible to know which one we are in. - block: - comment: Blocks - name: meta.type.terraform - begin: '(\b(resource|provider|variable|output|locals|module|data|terraform)\b|(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b))(?=[\s\"\-[:word:]]*(\{))' - beginCaptures: - '2': { name: storage.type.terraform } - '3': { name: entity.name.type.terraform } - end: '(?=\{)' - patterns: - - comment: String literal label - name: string.quoted.double.terraform - begin: '\"' - beginCaptures: - '0': { name: punctuation.definition.string.begin.terraform } - end: '\"' - endCaptures: - '0': { name: punctuation.definition.string.end.terraform } - - comment: Identifer label - match: '\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b' - name: entity.name.label.terraform - - imports: - comment: Terraform imports - begin: '\s*(terraform)\s*(import)\s*' - beginCaptures: - '1': { name: support.constant.terraform } - '2': { name: keyword.control.import.terraform } - end: '$\n?' - patterns: - - include: '#string_literals' - - match: '\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b' - comment: Identifier label - name: entity.name.label.terraform - - include: '#numeric_literals' - - include: '#attribute_access' diff --git a/Terraform.tmLanguage b/Terraform.tmLanguage deleted file mode 100644 index 440c895..0000000 --- a/Terraform.tmLanguage +++ /dev/null @@ -1,1151 +0,0 @@ - - - - - fileTypes - - tf - tfvars - hcl - nomad - - name - Terraform - patterns - - - include - #comments - - - include - #top_level_attribute_definition - - - include - #imports - - - include - #block - - - include - #expressions - - - repository - - attribute_access - - begin - \. - beginCaptures - - 0 - - name - keyword.operator.accessor.terraform - - - comment - Attribute Access - "." Identifier - end - (\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)|(\*)|(\d+) - endCaptures - - 1 - - name - variable.other.member.terraform - - 2 - - name - keyword.operator.splat.terraform - - 3 - - name - constant.numeric.integer.terraform - - - - block - - begin - (\b(resource|provider|variable|output|locals|module|data|terraform)\b|(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b))(?=[\s\"\-[:word:]]*(\{)) - beginCaptures - - 2 - - name - storage.type.terraform - - 3 - - name - entity.name.type.terraform - - - comment - Blocks - end - (?=\{) - name - meta.type.terraform - patterns - - - begin - \" - beginCaptures - - 0 - - name - punctuation.definition.string.begin.terraform - - - comment - String literal label - end - \" - endCaptures - - 0 - - name - punctuation.definition.string.end.terraform - - - name - string.quoted.double.terraform - - - comment - Identifer label - match - \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - name - entity.name.label.terraform - - - - block_comments - - begin - /\* - beginCaptures - - 0 - - name - punctuation.definition.comment.terraform - - - comment - Block comments - end - \*/ - endCaptures - - 0 - - name - punctuation.definition.comment.terraform - - - name - comment.block.terraform - - brackets - - begin - \[ - beginCaptures - - 0 - - name - punctuation.section.brackets.begin.terraform - - - comment - Tuples & subscript notation - end - (\*)?\] - endCaptures - - 0 - - name - punctuation.section.brackets.end.terraform - - 1 - - name - keyword.operator.splat.terraform - - - patterns - - - include - #comma - - - include - #comments - - - include - #expressions - - - include - #tuple_for_expression - - - - comma - - comment - Commas - used in certain expressions - match - \, - name - punctuation.separator.terraform - - comments - - patterns - - - include - #inline_comments - - - include - #block_comments - - - - expressions - - patterns - - - include - #literal_values - - - include - #operators - - - include - #brackets - - - include - #objects - - - include - #attribute_access - - - include - #functions - - - include - #parens - - - - functions - - begin - ((abs|ceil|floor|log|max|min|pow|signum|chomp|format|formatlist|indent|join|lower|regex|regexall|replace|split|strrev|substr|title|trimspace|upper|chunklist|coalesce|coalescelist|compact|concat|contains|distinct|element|flatten|index|keys|length|list|lookup|map|matchkeys|merge|range|reverse|setintersection|setproduct|setunion|slice|sort|transpose|values|zipmap|base64decode|base64encode|base64gzip|csvdecode|jsondecode|jsonencode|urlencode|yamldecode|yamlencode|abspath|dirname|pathexpand|basename|file|fileexists|fileset|filebase64|templatefile|formatdate|timeadd|timestamp|base64sha256|base64sha512|bcrypt|filebase64sha256|filebase64sha512|filemd5|filemd1|filesha256|filesha512|md5|rsadecrypt|sha1|sha256|sha512|uuid|uuidv5|cidrhost|cidrnetmask|cidrsubnet|tobool|tolist|tomap|tonumber|toset|tostring)|\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b))(\() - beginCaptures - - 2 - - name - support.function.builtin.terraform - - 3 - - name - variable.function.terraform - - 4 - - name - punctuation.section.parens.begin.terraform - - - comment - Functions calls- Terraform builtins and unknown - end - \) - endCaptures - - 0 - - name - punctuation.section.parens.end.terraform - - - name - meta.function-call.terraform - patterns - - - include - #comments - - - include - #expressions - - - include - #comma - - - - heredoc - - begin - (\<\<\-?)\s*(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)\s*$ - beginCaptures - - 1 - - name - keyword.operator.heredoc.terraform - - 2 - - name - keyword.control.heredoc.terraform - - - comment - Heredocs - end - ^\s*\2\s*$ - endCaptures - - 0 - - name - keyword.control.heredoc.terraform - - - name - string.unquoted.heredoc.terraform - patterns - - - include - #string_interpolation - - - - imports - - begin - \s*(terraform)\s*(import)\s* - beginCaptures - - 1 - - name - support.constant.terraform - - 2 - - name - keyword.control.import.terraform - - - comment - Terraform imports - end - $\n? - patterns - - - include - #string_literals - - - comment - Identifier label - match - \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - name - entity.name.label.terraform - - - include - #numeric_literals - - - include - #attribute_access - - - - inline_comments - - begin - #|// - beginCaptures - - 0 - - name - punctuation.definition.comment.terraform - - - comment - Inline comments - end - $ -? - name - comment.line.terraform - - language_constants - - comment - Language Constants - match - \b(true|false|null)\b - name - constant.language.terraform - - literal_values - - patterns - - - include - #numeric_literals - - - include - #language_constants - - - include - #string_literals - - - include - #heredoc - - - include - #type_keywords - - - include - #named_value_references - - - - main - - patterns - - - include - #comments - - - include - #block - - - include - #expressions - - - - named_value_references - - comment - Terraform built-in variables - match - \b(var|local|module|data|path|terraform)\b - name - support.constant.terraform - - numeric_literals - - patterns - - - captures - - 1 - - name - punctuation.separator.exponent.terraform - - - comment - Integer, no fraction, optional exponent - match - \b\d+(([Ee][+-]?))\d+\b - name - constant.numeric.float.terraform - - - captures - - 1 - - name - punctuation.separator.decimal.terraform - - 2 - - name - punctuation.separator.exponent.terraform - - - comment - Integer, fraction, optional exponent - match - \b\d+(\.)\d+(?:(([Ee][+-]?))\d+)?\b - name - constant.numeric.float.terraform - - - comment - Integers - match - \b\d+\b - name - constant.numeric.integer.terraform - - - - object_for_expression - - begin - \bfor\b - beginCaptures - - 0 - - name - keyword.control.terraform - - - comment - Object for-expression - end - (?=\}) - patterns - - - match - \=\> - name - storage.type.function.terraform - - - match - \bin\b - name - keyword.operator.word.terraform - - - match - \bif\b - name - keyword.control.conditional.terraform - - - match - \: - name - keyword.operator.terraform - - - include - #expressions - - - include - #comments - - - include - #comma - - - comment - Local Identifiers - match - \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - name - variable.other.readwrite.terraform - - - - object_key_values - - patterns - - - include - #comments - - - include - #expressions - - - - objects - - begin - \{ - beginCaptures - - 0 - - name - punctuation.section.braces.begin.terraform - - - comment - Map collection values - end - \} - endCaptures - - 0 - - name - punctuation.section.braces.end.terraform - - - name - meta.braces.terraform - patterns - - - include - #object_for_expression - - - include - #comments - - - begin - \s*(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)\s*(\=)\s* - beginCaptures - - 1 - - name - meta.mapping.key.terraform string.unquoted.terraform - - 2 - - name - keyword.operator.terraform - - - comment - Literal, named object key - end - ((\,)|($\n?)|(?=\})) - endCaptures - - 1 - - name - punctuation.separator.terraform - - 3 - - name - punctuation.section.braces.end.terraform - - - patterns - - - include - #object_key_values - - - - - begin - ((\").*(\"))\s*(\=)\s* - beginCaptures - - 1 - - name - meta.mapping.key.terraform string.quoted.double.terraform - - 2 - - name - punctuation.definition.string.begin.terraform - - 3 - - name - punctuation.definition.string.end.terraform - - 4 - - name - keyword.operator.terraform - - - comment - String object key - end - ((\,)|($\n?)|(?=\})) - endCaptures - - 1 - - name - punctuation.separator.terraform - - 3 - - name - punctuation.section.braces.end.terraform - - - patterns - - - include - #object_key_values - - - - - begin - \( - beginCaptures - - 0 - - name - punctuation.section.parens.begin.terraform - - - comment - Begin computed object key - end - (\))\s*(\=)\s* - endCaptures - - 1 - - name - punctuation.section.parens.end.terraform - - 2 - - name - keyword.operator.terraform - - - name - meta.mapping.key.terraform - patterns - - - include - #expressions - - - - - comment - Random Expression, for matching after computed keys - patterns - - - include - #main - - - - - - operators - - patterns - - - match - \>\= - name - keyword.operator.terraform - - - match - \<\= - name - keyword.operator.terraform - - - match - \=\= - name - keyword.operator.terraform - - - match - \!\= - name - keyword.operator.terraform - - - match - \+ - name - keyword.operator.arithmetic.terraform - - - match - \- - name - keyword.operator.arithmetic.terraform - - - match - \* - name - keyword.operator.arithmetic.terraform - - - match - \/ - name - keyword.operator.arithmetic.terraform - - - match - \% - name - keyword.operator.arithmetic.terraform - - - match - \&\& - name - keyword.operator.logical.terraform - - - match - \|\| - name - keyword.operator.logical.terraform - - - match - \! - name - keyword.operator.logical.terraform - - - match - \> - name - keyword.operator.terraform - - - match - \< - name - keyword.operator.terraform - - - match - \? - name - keyword.operator.terraform - - - match - \.\.\. - name - keyword.operator.terraform - - - match - \: - name - keyword.operator.terraform - - - - parens - - begin - \( - beginCaptures - - 0 - - name - punctuation.section.parens.begin.terraform - - - comment - Parens - matched *after* function syntax - end - \) - endCaptures - - 0 - - name - punctuation.section.parens.end.terraform - - - patterns - - - include - #expressions - - - comment - Local Identifiers - match - \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - name - variable.other.readwrite.terraform - - - - string_interpolation - - begin - (\$|\%)\{ - beginCaptures - - 0 - - name - keyword.other.interpolation.begin.terraform - - - comment - String interpolation - end - \} - endCaptures - - 0 - - name - keyword.other.interpolation.end.terraform - - - name - meta.interpolation.terraform - patterns - - - comment - Trim left whitespace - match - \~\s - name - keyword.operator.template.left.trim.terraform - - - comment - Trim right whitespace - match - \s\~ - name - keyword.operator.template.right.trim.terraform - - - comment - if/else/endif and for/in/endfor directives - match - \b(if|else|endif|for|in|endfor)\b - name - keyword.control.terraform - - - include - #expressions - - - - string_literals - - begin - " - beginCaptures - - 0 - - name - punctuation.definition.string.begin.terraform - - - comment - Strings - end - " - endCaptures - - 0 - - name - punctuation.definition.string.end.terraform - - - name - string.quoted.double.terraform - patterns - - - include - #string_interpolation - - - comment - Character Escapes - match - \\[nrt"\\]|\\u(\h{8}|\h{4}) - name - constant.character.escape.terraform - - - - top_level_attribute_definition - - captures - - 1 - - name - punctuation.section.parens.begin.terraform - - 2 - - name - variable.other.readwrite.terraform - - 3 - - name - punctuation.section.parens.end.terraform - - 4 - - name - keyword.operator.assignment.terraform - - - comment - Attribute Definition - Identifier "=" Expression Newline - match - (\()?(\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b)(\))?\s*(\=[^\=|\>])\s* - name - variable.declaration.terraform - - tuple_for_expression - - begin - \bfor\b - beginCaptures - - 0 - - name - keyword.control.terraform - - - comment - Tuple for-expression - end - (?=\]) - patterns - - - match - \bin\b - name - keyword.operator.word.terraform - - - match - \bif\b - name - keyword.control.conditional.terraform - - - match - \: - name - keyword.operator.terraform - - - include - #expressions - - - include - #comments - - - include - #comma - - - comment - Local Identifiers - match - \b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\b - name - variable.other.readwrite.terraform - - - - type_keywords - - comment - Type keywords known to Terraform. - match - \b(any|string|number|bool)\b - name - storage.type.terraform - - - scopeName - source.terraform - uuid - 9060ca81-906d-4f19-a91a-159f4eb119d6 - - diff --git a/syntax_test_terraform_tm.tf b/syntax_test_terraform_tm.tf deleted file mode 100644 index 8aae7ae..0000000 --- a/syntax_test_terraform_tm.tf +++ /dev/null @@ -1,3078 +0,0 @@ -# SYNTAX TEST "Terraform.tmLanguage" - -///////////////////////////////////////////////////////////////////// -// INLINE COMMENTS -///////////////////////////////////////////////////////////////////// - -///// -// Start of line inline comments with `#`. -///// - -# inline comment -# ^ source.terraform comment.line.terraform - -///// -// Start of line inline comments with `//`. -///// - -// foo -# ^ source.terraform 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 -# ^^^^ variable.other.member.terraform -# ^ keyword.operator.accessor.terraform -# ^^^^^^^ variable.other.member.terraform - -///////////////////////////////////////////////////////////////////// -// FLOATING-POINT CONSTANTS -///////////////////////////////////////////////////////////////////// - -///// -// Matches floating-point numbers. -///// - - 1.2 -# ^ -constant -numeric -# ^ constant.numeric.float.terraform -# ^ 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 -# ^^^^^^^^^^ string.quoted.double.terraform -# ^ 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 -# ^ 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 -# ^ 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 capture groups (parens) in a regex -///// - - 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 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 -# ^^^^^ 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 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 -# ^^^^ 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 -# ^^^^^^^^^ meta.function-call.terraform -# ^ meta.function-call.terraform punctuation.section.parens.end.terraform -# ^ keyword.operator.terraform -# ^ constant.numeric.integer.terraform -# ^ keyword.operator.terraform -# ^ punctuation.section.brackets.begin.terraform -# ^ constant.numeric.integer.terraform -# ^ 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"] -# ^ 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 -///// - - [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 - - keys({a=1, c=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 - - 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 -# ^ 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 - -///// -// 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 -# ^ 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.section.brackets.end.terraform -# ^ keyword.operator.terraform -# ^ variable.other.readwrite.terraform -# ^^ storage.type.function.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.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.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.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.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.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.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.braces.terraform punctuation.section.braces.begin.terraform - name = "example" -# ^^^^ 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 - - dynamic "ingress" { -# ^^^^^^^ meta.braces.terraform meta.type.terraform entity.name.type.terraform -# ^ meta.braces.terraform meta.type.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^^^ meta.braces.terraform meta.type.terraform string.quoted.double.terraform -# ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform - for_each = var.service_ports -# ^^^^^^^^ 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 support.constant.terraform -# ^ meta.braces.terraform meta.braces.terraform keyword.operator.accessor.terraform -# ^^^^^^^^^^^^^ meta.braces.terraform meta.braces.terraform variable.other.member.terraform - content { -# ^^^^^^^ meta.braces.terraform meta.braces.terraform meta.type.terraform entity.name.type.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform punctuation.section.braces.begin.terraform - from_port = ingress.value -# ^^^^^^^^^ 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 keyword.operator.accessor.terraform -# ^^^^^ meta.braces.terraform meta.braces.terraform meta.braces.terraform variable.other.member.terraform - to_port = ingress.value -# ^^^^^^^ 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 keyword.operator.accessor.terraform - protocol = "tcp" + "IP" -# ^^^^^^^^ 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 string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^ meta.braces.terraform meta.braces.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform keyword.operator.arithmetic.terraform -# ^ meta.braces.terraform meta.braces.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^ meta.braces.terraform meta.braces.terraform meta.braces.terraform string.quoted.double.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 - -///// -// Matches blocks with functions, objects, tuples. -///// - - thing label1 { -# ^^^^^ meta.type.terraform entity.name.type.terraform -# ^^^^^^ meta.type.terraform entity.name.label.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform - func = function(param1) -# ^^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform -# ^^^^^^^^ meta.braces.terraform meta.function-call.terraform variable.function.terraform -# ^ meta.braces.terraform meta.function-call.terraform punctuation.section.parens.begin.terraform -# ^^^^^^ meta.braces.terraform meta.function-call.terraform -# ^ meta.braces.terraform meta.function-call.terraform punctuation.section.parens.end.terraform - obj = { -# ^^^ meta.braces.terraform meta.mapping.key.terraform string.unquoted.terraform -# ^ meta.braces.terraform keyword.operator.terraform - key = "value" -# ^^^ 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 string.quoted.double.terraform punctuation.definition.string.begin.terraform -# ^^^^^^ meta.braces.terraform meta.braces.terraform string.quoted.double.terraform -# ^ meta.braces.terraform meta.braces.terraform string.quoted.double.terraform punctuation.definition.string.end.terraform - } -# ^ meta.braces.terraform meta.braces.terraform punctuation.section.braces.end.terraform - tuple = [1, 2] -# ^^^^^ 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.section.brackets.end.terraform - } -# ^ meta.braces.terraform punctuation.section.braces.end.terraform -# ^ -meta -braces - -///////////////////////////////////////////////////////////////////// -// 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.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - provider {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - variable {} -# ^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - output {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - locals {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - module {} -# ^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - data {} -# ^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.end.terraform - - terraform {} -# ^^^^^^^^^ meta.type.terraform storage.type.terraform -# ^ meta.braces.terraform punctuation.section.braces.begin.terraform -# ^ meta.braces.terraform punctuation.section.braces.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 - sdfdfsd -# ^^^^^^^^ string.unquoted.heredoc.terraform - 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 -# ^^^^^^^ 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 From bfb0090218d3d94e800a5ba14aa03d87b905cee2 Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Wed, 7 Aug 2024 12:14:23 +0200 Subject: [PATCH 2/5] Also add hyphens as sub-word separators for derived languages --- HCL.sublime-settings | 5 ++++- Terraform-vars.sublime-settings | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/HCL.sublime-settings b/HCL.sublime-settings index 8bbee60..6f8a0d3 100644 --- a/HCL.sublime-settings +++ b/HCL.sublime-settings @@ -1,4 +1,7 @@ { "tab_size": 2, - "translate_tabs_to_spaces": true + "translate_tabs_to_spaces": true, + // Move '-' to sub-word separators + "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", + "sub_word_separators": "_-", } diff --git a/Terraform-vars.sublime-settings b/Terraform-vars.sublime-settings index 8bbee60..6f8a0d3 100644 --- a/Terraform-vars.sublime-settings +++ b/Terraform-vars.sublime-settings @@ -1,4 +1,7 @@ { "tab_size": 2, - "translate_tabs_to_spaces": true + "translate_tabs_to_spaces": true, + // Move '-' to sub-word separators + "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", + "sub_word_separators": "_-", } From 433340ccfddce4e323f27b3a9fd2e4ca8bef6f57 Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Wed, 7 Aug 2024 12:14:47 +0200 Subject: [PATCH 3/5] Add unrelease changelog notes --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6576b6..dc50e2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,35 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased +### Added + +- Declare hyphens as sub-word separators. +- Special highlighting for `for_each` and `count` meta arguments. +- Highlighting of more special language variables: `each`, `count` and `self`. + +### Changed + +- Switch to Syntax version 2. This breaks compatibility with ST builds before 4000! +- Adapt and improve many scope names to standards that have been established + over the past years for the default packages, + including: + * String interpolation meta scopes and punctuation + * Keywords (declarations and `in` inside a `for` expression) + * Attribute access punctuation + * Punctuation scopes in `for` expressions +- Updated the built-in function list for highlighting. + +### Removed + +- Various files targetting older ST versions, + notably the old `.tmLanguage` syntax definition. + +### Fixed + +- Improved matching of identifiers by adding a scope and properly recognizing hyphens. + +--- + ## v1.0.0 - 2020-01-20 A huge thanks to @patrickrgaffney for this amazing contribution. [#39](https://github.com/alexlouden/Terraform.tmLanguage/pull/39) From 0e5dccd06fc2d67596597641ba06be967cad33bd Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Wed, 7 Aug 2024 12:15:01 +0200 Subject: [PATCH 4/5] Include @FichteFoll in the license --- LICENSE | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index e8d0f3a..1f4bfc9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ MIT License Copyright (c) 2016 Alex Louden +Copyright (c) 2024 FichteFoll Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -18,4 +19,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. From 374fe452b205ba781587238c9bc29d614f36e409 Mon Sep 17 00:00:00 2001 From: FichteFoll Date: Wed, 7 Aug 2024 12:18:06 +0200 Subject: [PATCH 5/5] Small README updates Screenshot will be updated before the release. --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1063bc8..1f8fd70 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ Terraform Syntax Highlighting And Snippets ========================================== -Basic support for Terraform's [custom .tf file type](http://www.terraform.io/docs/configuration/syntax.html), along with snippets for each of the basic Terraform resource types. - +This [Sublime Text](https://sublimetext.com/) package +provides basic support for Terraform's [custom `.tf` file type](http://www.terraform.io/docs/configuration/syntax.html), +along with snippets for each of the basic Terraform resource types. ![screenshot](screenshot.png) @@ -12,7 +13,7 @@ Installation ### Using Package Control -1. Having [Package Control](https://packagecontrol.io/installation) installed +1. Install [Package Control](https://packagecontrol.io/installation), if needed. 2. Open the palette by pressing `Ctrl+Shift+P` (Win, Linux) or `Cmd+Shift+P` (OS X). 3. Select _"Package Control: Install package"_ 4. Select _"Terraform"_ @@ -20,7 +21,7 @@ Installation ### Manually 1. Open the Sublime Text Packages folder - - OS X: `~/Library/Application Support/Sublime Text 3/Packages/` - - Windows: `%APPDATA%/Sublime Text 3/Packages/` - - Linux (Ubuntu/Debian): `~/.config/sublime-text-3/Packages/` + - OS X: `~/Library/Application Support/Sublime Text/Packages/` + - Windows: `%APPDATA%/Sublime Text/Packages/` + - Linux (Ubuntu/Debian): `~/.config/sublime-text/Packages/` 2. Clone this repo