Major mode of Terraform configuration file
You can install terraform-mode.el from MELPA by package.el.
- Syntax highlighting
- Indentation
- imenu
- Formatting using
terraform fmt - Block folding
- easier access to Terraform resource documentation
terraform-mode sets up outline-mode variables for block folding.
To use outline-mode for block folding, enable outline-minor-mode
in terraform-mode-hook:
(add-hook 'terraform-mode-hook #'outline-minor-mode)You can use outline-toggle-children bound to C-c C-f to toggle
visibility of a block at point.
We also provide function terraform-toggle-or-indent which
folds-or-indents. It is not bound by default, but you can bind it to
TAB or any other key.
Within a resource or a data block, type C-c C-d C-w to open a new
browser tab with the resource or data documentation page.
Type C-c C-d C-c to kill the URL (i.e. copy it to the clipboard) for the documentation page rather than directly open it in the browser.
You can also type C-c C-d C-r to insert a comment containing a link to
this documentation right above the resource or data block.
This feature requires either:
- a
required_providerdeclaration in any.tffile in current directory (see Terraform doc) - a working
terraform providerscommand. This command may require a valid token (at least for AWS).
Indentation size. You need to call revert-buffer if you change this value outer of hook such as eval-expression.
Set to t to automatically format the buffer on save.
(custom-set-variables
'(terraform-indent-level 4))With use-package
(use-package terraform-mode
;; if using straight
;; :straight t
;; if using package.el
;; :ensure t
:custom (terraform-indent-level 4)
:config
(defun my-terraform-mode-init ()
;; if you want to use outline-minor-mode
;; (outline-minor-mode 1)
)
(add-hook 'terraform-mode-hook 'my-terraform-mode-init))This major-mode inherits from hcl-mode. Most of syntax features, like highlighting, indentation are implemented in hcl-mode.

