From bfb7cc666bed2e4a97dd6ad742b420daf6c46d18 Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 18:08:06 -0600 Subject: [PATCH 1/6] new: Add support for Terraform --- lisp/backpack.el | 1 + lisp/gears/editing/terraform.el | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 lisp/gears/editing/terraform.el diff --git a/lisp/backpack.el b/lisp/backpack.el index 23f75b2..004c85e 100644 --- a/lisp/backpack.el +++ b/lisp/backpack.el @@ -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) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el new file mode 100644 index 0000000..db27520 --- /dev/null +++ b/lisp/gears/editing/terraform.el @@ -0,0 +1,33 @@ +;; Declare tree-sitter languages needed by this gear +(when (and (gearp! :editing terraform) + (not (gearp! :editing terraform -treesit))) + (backpack-treesit-langs! hcl) + + (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"))) From 158d7af9440d4cc513114881318757d0622b8898 Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 18:24:36 -0600 Subject: [PATCH 2/6] fix: Add missing ts-package for Terraform --- lisp/gears/editing/terraform.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el index db27520..77350a2 100644 --- a/lisp/gears/editing/terraform.el +++ b/lisp/gears/editing/terraform.el @@ -31,3 +31,8 @@ :doc "Look up Terraform documentation from Emacs" :when (gearp! :editing terraform doc) :ensure (terraform-doc :ref "31f1c47453ad14181883f78258a72c02b95d9783"))) + +(leaf terraform-ts-mode + :doc "treesit support for editing Terraform files" + :unless (gearp! :editing terraform -treesit) + :after terraform-mode) From f32fc2a32003bfbb023695730565a5f350404273 Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 18:29:23 -0600 Subject: [PATCH 3/6] fix: Add recipe for Terraform tree-sitter --- lisp/gears/editing/terraform.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el index 77350a2..3e2969d 100644 --- a/lisp/gears/editing/terraform.el +++ b/lisp/gears/editing/terraform.el @@ -1,7 +1,14 @@ ;; Declare tree-sitter languages needed by this gear (when (and (gearp! :editing terraform) (not (gearp! :editing terraform -treesit))) - (backpack-treesit-langs! hcl) + (backpack-treesit-langs! terraform) + + (with-eval-after-load 'treesit-auto + (add-to-list 'treesit-auto-recipe-list + (make-treesit-auto-recipe + :lang 'terraform + :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))) From aad7c541970366800c04220c0b27f47ab0c1ec0f Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 18:33:03 -0600 Subject: [PATCH 4/6] fix: Throw terraform-doc leaf out of terraform-mode --- lisp/gears/editing/terraform.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el index 3e2969d..1b6c916 100644 --- a/lisp/gears/editing/terraform.el +++ b/lisp/gears/editing/terraform.el @@ -32,12 +32,12 @@ :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")))) + (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"))) +(leaf terraform-doc + :doc "Look up Terraform documentation from Emacs" + :when (gearp! :editing terraform doc) + :ensure (terraform-doc :ref "31f1c47453ad14181883f78258a72c02b95d9783")) (leaf terraform-ts-mode :doc "treesit support for editing Terraform files" From fe751cd038a8d457c035716d4c89a07d590afb95 Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 18:41:55 -0600 Subject: [PATCH 5/6] fix: Remove terraform-ts-mode package --- lisp/gears/editing/terraform.el | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el index 1b6c916..cc9af3b 100644 --- a/lisp/gears/editing/terraform.el +++ b/lisp/gears/editing/terraform.el @@ -7,6 +7,7 @@ (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"))) @@ -38,8 +39,3 @@ :doc "Look up Terraform documentation from Emacs" :when (gearp! :editing terraform doc) :ensure (terraform-doc :ref "31f1c47453ad14181883f78258a72c02b95d9783")) - -(leaf terraform-ts-mode - :doc "treesit support for editing Terraform files" - :unless (gearp! :editing terraform -treesit) - :after terraform-mode) From 19fdcbdb96b89aceb1fe04b88a71fac59b1d50be Mon Sep 17 00:00:00 2001 From: Jorge Javier Araya Navarro Date: Tue, 24 Feb 2026 19:13:53 -0600 Subject: [PATCH 6/6] fix: Disable ts-mode for Terraform --- lisp/gears/editing/terraform.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lisp/gears/editing/terraform.el b/lisp/gears/editing/terraform.el index cc9af3b..53768db 100644 --- a/lisp/gears/editing/terraform.el +++ b/lisp/gears/editing/terraform.el @@ -1,6 +1,8 @@ ;; Declare tree-sitter languages needed by this gear (when (and (gearp! :editing terraform) - (not (gearp! :editing terraform -treesit))) + (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