From c6e1184f9c2d48d4b21f64628bc0c1acef53ea81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFs=20Postula?= Date: Thu, 28 Nov 2024 16:40:27 +0100 Subject: [PATCH] feat(terraform): add terraform-docs Add `terraform-docs` package to the :tools terraform The package allows for integrating terraform-docs in emacs Also added keybindings to it. The usage of the keybindings is heavily inspired from 'ox-publish It's also gated by the `+docs` flag as this requires the `terraform-docs` binary to exists --- modules/tools/terraform/config.el | 13 +++++++++++++ modules/tools/terraform/doctor.el | 4 ++++ modules/tools/terraform/packages.el | 5 +++++ 3 files changed, 22 insertions(+) diff --git a/modules/tools/terraform/config.el b/modules/tools/terraform/config.el index 093ee7313..a42dcba12 100644 --- a/modules/tools/terraform/config.el +++ b/modules/tools/terraform/config.el @@ -22,3 +22,16 @@ :after terraform-mode :config (set-company-backend! 'terraform-mode 'company-terraform)) + +(use-package! terraform-docs + :when (modulep! +docs) + :defer t + :after terraform-mode + :config + (map! :map terraform-mode-map + :localleader + :desc "docs" "d" #'terraform-docs + (:prefix ("D" . "docs submenu") + :desc "to buffer" "D" #'terraform-docs-to-buffer + :desc "to file" "d" (cmd! (terraform-docs-to-file nil (read-file-name "Output file: "))) + :desc "to file and open" "o" (cmd! (terraform-docs-to-file-and-open nil (read-file-name "Output file: ")))))) diff --git a/modules/tools/terraform/doctor.el b/modules/tools/terraform/doctor.el index 456d1f907..cde26e6fc 100644 --- a/modules/tools/terraform/doctor.el +++ b/modules/tools/terraform/doctor.el @@ -2,3 +2,7 @@ (unless (executable-find "terraform") (warn! "Couldn't find terraform.")) + +(when (modulep! +lsp) + (unless (executable-find "terraform-docs") + (warn! "Couldn't find terraform-docs"))) diff --git a/modules/tools/terraform/packages.el b/modules/tools/terraform/packages.el index edde0738c..1ff74a128 100644 --- a/modules/tools/terraform/packages.el +++ b/modules/tools/terraform/packages.el @@ -4,3 +4,8 @@ (package! terraform-mode :pin "abfc10f5e313c4bb99de136a14636e9bc6df74f6") (when (modulep! :completion company) (package! company-terraform :pin "8d5a16d1bbeeb18ca49a8fd57b5d8cd30c8b8dc7")) + +(when (modulep! +docs) + (package! terraform-docs + :recipe (:host github :repo "loispostula/terraform-docs.el" :branch "main") + :pin "94a78999ec03e66ce49f7343cc8705354e195c3a"))