All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Declare hyphens as sub-word separators.
- Special highlighting for
for_each
andcount
meta arguments. - Highlighting of more special language variables:
each
,count
andself
.
- 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 afor
expression) - Attribute access punctuation
- Punctuation scopes in
for
expressions
- Updated the built-in function list for highlighting.
- Various files targetting older ST versions,
notably the old
.tmLanguage
syntax definition.
- Improved matching of identifiers by adding a scope and properly recognizing hyphens.
- Support identifiers starting with an underscore character (#43).
A huge thanks to @patrickrgaffney for this amazing contribution. #39
- Syntax tests have been added.
null
constant.- Exponents in numeric literals.
- Character escapes for newline, carriage return, backslash, quote, and unicode points inside string literals.
- Trim-left and trim-right operators inside string templates.
- Directives inside string templates.
- Match all valid expressions inside string templates.
- Comparison operators
==
,!=
,<
,>
,<=
,>=
. - Arithmetic operators
+
,-
,*
,/
,%
. - Logic operators
&&
,||
,!
. - Conditional operator
p ? e1 : e2
- Parenthesis matching.
- Tuple list syntax.
- Square-bracket index notation.
- Full-splat operator.
- Comma matching inside function calls, tuples, maps, and for-expressions.
- Attribute-access is matched on named members and the
.
dot operator. - Attribute-only splat operator.
- Allow
-
after first alpha character in identifiers. - Computed attribute named using parenthesis.
- Allow function-calls outside of string interpolation.
- Match all valid expressions inside function-call parameter lists.
- Match functions unknown to Terraform (for other HCL uses).
- Match for-expressions inside tuples and maps.
- Map collection syntax.
- Match unknown block names.
- Support for variable number of block labels.
- Nested blocks.
- Inline blocks.
- Terraform named values.
- Update list of built-in Terraform functions.
- Built-in block types
locals
andterraform
. - Meta-scope
meta.block.terraform
added to all block bodies. - Primitive type constants.
- Heredocs with the leading-spaces operator
<<-
. - String interpolation inside heredocs.
- Import statements.
- JSON highlighting for
*.tfstate
files.
- Rename scope
comment.line.number-sign.terraform
tocomment.line.terraform
to better reflect scope naming standards. - Rename scope
constant.numeric.terraform
toconstant.numeric.[integer|float].terraform
to better reflect scope naming standards. - Rename scope
entity.tag.embedded.[begin|end]
topunctuation.section.interpolation.[begin|end]
to better reflect scope naming standards. - Rename scope
variable.other.assignment.terraform
tovariable.other.readwrite.terraform
to better reflect scope naming standards.- A
meta_scope
ofvariable.declaration.terraform
covers the entire attribute definition now.
- A
- Rename scope for
=
in assignments fromkeyword.operator
tokeyword.operator.assignment
to better reflect scope naming standards. - Rename scope
keyword.other.function.inline
tosupport.function.builtin
to better reflect scope naming standards. - Rename scope for known block types from
storage.type.function.terraform
tostorage.type.terraform
to better reflect scope naming standards. - Rename scope for block labels from
string.value.terraform
tostring.quoted.double.terraform
to better reflect scope naming standards. - Rename meta-scope for block definitions from
meta.block.terraform
tometa.type.terraform
to better reflect scope naming standards.
- Invalid constants
yes
,no
,on
, andoff
. - Unit of measurement suffixes.
- Hexadecimal literals.
- An extra
string.terraform
scope was previously added to all string literals. atlas
blocks.
- Remove the
string.*
scope inside string templates.
- Symbol indexing for top-level blocks. (@patrickrgaffney - #38)
- Update list of built-in functions. (@Tenzer - #37)
- Allow hyphens in names of attributes inside string interpolation. (@Tenzer - #37)
- Sublime syntax format. (@thiagoalmeidasa - #35)
- Better support for parenthesis inside string interpolation. (@NightsPaladin - #33)
- Snippet for
data
blocks. (@mschurenko - #32)
- Terraform constant
local
. (@digitalfiz - #30)
- Update list of built-in functions. (@gburiola - #27)
- Built-in function
from
.
- Allow nested function calls.
- Set default tab size to 2. (@kushmansingh - #25)
- Set default indentation to spaces. (@kushmansingh - #25)
- Allow whitespace before
<<
when closing heredocs. (@GreatFruitOmsk - #24)
- Escape hyphens in block labels
- Code folding markers.
- Built-in Terraform functions.
- Function calls and attribute access inside string templates.
- Heredocs.
.hcl
file extensions (@akarnani - #19)
- Handle nested string interpolation.
- String interpolation.
- Unquoted block labels.
- De-emphasize variable assignment.
- C-style single line comments
//
. (@kerma - #16)
- Support for
data
blocks. (@Jonnymcc - #14)
- Snippet for
provisioner
blocks. (@ApsOps - #13)
- Match opening/closing brackets. (@alexlouden - #12)
- Snippets for
module
blocks. (@maplebed - #10)
- Blocks comments
/* ... */
. (@bigkraig - #8)
Initial release.