🐷

Emacs terraform-modeでlsp-modeをhookさせる最低限の設定(leaf)

に公開

lsp-mode + terraform-mode をちゃんとhookさせるのに苦労したので。
terraformいれるとか、terraform-ls入れるとかは省略で。

基本的に、leaf-convert-insert-template で書いたまま。★のところだけ追加すればOK

(ここに辿り着くまでの試行錯誤が、、、、AIに聞いてもまともな回答が返ってこないし、、)

(leaf terraform-mode
  :doc "Major mode for terraform configuration file."
  :req "emacs-24.3" "hcl-mode-0.3" "dash-2.17.0"
  :tag "emacs>=24.3"
  :url "https://github.com/syohex/emacs-terraform-mode"
  :added "2025-11-23"
  :emacs>= 24.3
  :ensure t
  :after hcl-mode
  :config                                         ; ★
  (add-hook 'terraform-mode-hook #'lsp-deferred)) ; ★

(leaf lsp-mode
  :doc "LSP mode."
  :req "emacs-28.1" "dash-2.18.0" "f-0.20.0" "ht-2.3" "spinner-1.7.3" "markdown-mode-2.3" "lv-0" "eldoc-1.11"
  :tag "languages" "emacs>=28.1"
  :url "https://github.com/emacs-lsp/lsp-mode"
  :added "2025-11-23"
  :emacs>= 28.1
  :ensure t
  :after spinner markdown-mode lv eldoc)

ちなみに、lsp-modeのところに書きたい場合は、:after spinner markdown-mode lv eldoc の行を削除して :config と add-hookを書いてあげる。

afterに書いたパッケージのあとにロードされるからadd-hookが正常に登録されないらしい。。。
(イマイチleaf、elispよくわからん)

これに、companyとかの設定してあげれば十分かな。

あと、リソースを補完したい場合は、terraform initしてあげないとうまく動かない(これもハマった)

Discussion