Terraform はオープンソースの IaC ツール。結構よく使われている。色々なクランドサービスに対応していて便利。
terraform-mode は Emacs で terraform のコードを書くための major-mode を提供してくれるやつ。
el-get にも terraform-mode のレシピはあるけど dash の依存が書かれていないのでとりあえず自前で用意している
(:name terraform-mode
:type github
:pkgname "emacsorphanage/terraform-mode"
:description "Major mode for Terraform configuration files"
:depends (hcl-mode dash))
そしてそれを el-get-bundle
で入れている
(el-get-bundle terraform-mode)
保存時に自動で整形してほしいのでその設定を入れている
(custom-set-variables
'(terraform-format-on-save t))
company-terraform は company-mode の拡張機能で terraform の補完をいい感じにしてくれるやつ
el-get 本体にはレシピが用意されてないのでとりあえず自前で用意している
(:name company-terraform
:website "https://github.com/rafalcieslak/emacs-company-terraform"
:description "Company backend for terraform files."
:type github
:pkgname "rafalcieslak/emacs-company-terraform"
:depends (company-mode terraform-mode))
そしていつも通り el-get-bundle
でインストール
(el-get-bundle company-terraform)
インストールした後に init してあげることで company の backend として追加してくれるのでそのようにしている
(company-terraform-init)
hook を使っていくつかの minor-mode を有効にしている
flycheck に関しては terraform-tflint が tflint 0.47 に対応してないのでそいつだけ無効にしている
(defun my/terraform-mode-hook ()
(origami-mode 1)
(company-mode 1)
(setq-local flycheck-checker 'terraform)
(setq-local flycheck-disabled-checkers '(terraform-tflint))
(flycheck-mode 1)
(turn-on-smartparens-strict-mode)
(display-line-numbers-mode 1))
(add-hook 'terraform-mode-hook 'my/terraform-mode-hook)