(require 'common-lsp) (require 'util-tree-sitter) (defun terraform-fmt () "Run terraform fmt." (run-command-on-buffer "terraform" "fmt" "-") ) (use-package hcl-mode :mode (("\\.hcl\\'" . hcl-mode)) :commands hcl-mode :custom (hcl-indent-level 2) :hook ( (hcl-mode . (lambda () (unless (derived-mode-p 'terraform-mode) (add-hook 'before-save-hook 'terraform-fmt nil 'local)))) (hcl-mode . tree-sitter-hl-mode) ) ) (use-package terraform-mode :mode (("\\.tf\\'" . terraform-mode) ("\\.tfvars\\'" . terraform-mode)) :commands terraform-mode :custom (terraform-indent-level 2) :hook ( (terraform-mode . (lambda () (eglot-ensure) (defclass my/eglot-terraform (eglot-lsp-server) () :documentation "Own eglot server class.") (add-to-list 'eglot-server-programs '(terraform-mode . (my/eglot-terraform "terraform-ls" "serve"))) (add-hook 'before-save-hook 'eglot-format-buffer nil 'local) )) ) ) (provide 'lang-terraform)