Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lisp/backpack.el
Original file line number Diff line number Diff line change
Expand Up @@ -968,6 +968,7 @@ The behavior depends on `backpack-mode':
(load (expand-file-name "gears/editing/python" backpack-core-dir))
(load (expand-file-name "gears/editing/rst" backpack-core-dir))
(load (expand-file-name "gears/editing/rust" backpack-core-dir))
(load (expand-file-name "gears/editing/terraform" backpack-core-dir))
(load (expand-file-name "gears/editing/toml" backpack-core-dir)))

;;; Garbage Collection (orphaned packages cleanup)
Expand Down
43 changes: 43 additions & 0 deletions lisp/gears/editing/terraform.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
;; Declare tree-sitter languages needed by this gear
(when (and (gearp! :editing terraform)
(not (gearp! :editing terraform -treesit))
;; NOTE(shackra): disabled until I can figure out the reason for this error: Ignoring unknown mode ‘terraform-mode’ (remapped to `terraform-ts-mode')
nil)
(backpack-treesit-langs! terraform)

(with-eval-after-load 'treesit-auto
(add-to-list 'treesit-auto-recipe-list
(make-treesit-auto-recipe
:lang 'terraform
:ts-mode 'terraform-ts-mode
:url "https://github.com/tree-sitter-grammars/tree-sitter-hcl"
:source-dir "dialects/terraform/src")))

(add-to-list 'major-mode-remap-alist '(terraform-mode . terraform-ts-mode)))

(leaf terraform-mode
:doc "A major-mode for editing Terraform configuration files"
:ensure (terraform-mode :ref "01635df3625c0cec2bb4613a6f920b8569d41009")
:when (gearp! :editing terraform)
:hook
((terraform-mode-hook terraform-ts-mode-hook) . electric-pair-local-mode)
((terraform-mode-hook terraform-ts-mode-hook) .
(lambda ()
(toggle-truncate-lines +1)
(unless (gearp! :editing terraform -display-line-numbers)
(display-line-numbers-mode +1))))
:config
(leaf eglot
:doc "Language Server Protocol support for terraform-mode"
:when (gearp! :editing terraform lsp)
:doctor
("terraform-ls" . "the official Terraform Language Server by HashiCorp")
:hook ((terraform-mode-hook terraform-ts-mode-hook) . eglot-ensure)
:config
(add-to-list 'eglot-server-programs '(terraform-mode . ("terraform-ls" "serve")))
(add-to-list 'eglot-server-programs '(terraform-ts-mode . ("terraform-ls" "serve")))))

(leaf terraform-doc
:doc "Look up Terraform documentation from Emacs"
:when (gearp! :editing terraform doc)
:ensure (terraform-doc :ref "31f1c47453ad14181883f78258a72c02b95d9783"))
Loading