about summary refs log tree commit diff
path: root/users/glittershark
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2021-03-30T20·34-0400
committerglittershark <grfn@gws.fyi>2021-03-30T22·50+0000
commit9b973c201120d7168611134f4aa4d6536f9ccd38 (patch)
tree4075f01a912d3d661b8186cbce7e6430b7bd2502 /users/glittershark
parent6749267805fd824bcfafc0b81e1dd9c2b6180f09 (diff)
feat(gs/emacs): Add terraform config r/2366
Change-Id: I9266ed310024a2a9437ea983dfdf27b8a395c924
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2707
Reviewed-by: glittershark <grfn@gws.fyi>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/glittershark')
-rw-r--r--users/glittershark/emacs.d/config.el1
-rw-r--r--users/glittershark/emacs.d/snippets/terraform-mode/variable11
-rw-r--r--users/glittershark/emacs.d/terraform.el24
3 files changed, 36 insertions, 0 deletions
diff --git a/users/glittershark/emacs.d/config.el b/users/glittershark/emacs.d/config.el
index a14e4f0e3b..fd6eced212 100644
--- a/users/glittershark/emacs.d/config.el
+++ b/users/glittershark/emacs.d/config.el
@@ -34,6 +34,7 @@
 (load! "lisp")
 (load! "clojure")
 (load! "rust")
+(load! "terraform")
 
 (require 'tvl)
 
diff --git a/users/glittershark/emacs.d/snippets/terraform-mode/variable b/users/glittershark/emacs.d/snippets/terraform-mode/variable
new file mode 100644
index 0000000000..e64175200f
--- /dev/null
+++ b/users/glittershark/emacs.d/snippets/terraform-mode/variable
@@ -0,0 +1,11 @@
+# -*- mode: snippet -*-
+# name: variable
+# uuid:
+# key: var
+# condition: t
+# --
+variable "${1:name}" {
+  type = ${2:string}
+  ${3:default = ${4:default}}
+}
+$0
\ No newline at end of file
diff --git a/users/glittershark/emacs.d/terraform.el b/users/glittershark/emacs.d/terraform.el
new file mode 100644
index 0000000000..6a1dc4ba47
--- /dev/null
+++ b/users/glittershark/emacs.d/terraform.el
@@ -0,0 +1,24 @@
+;;; ../code/depot/users/glittershark/emacs.d/terraform.el -*- lexical-binding: t; -*-
+
+(add-hook 'terraform-mode-hook #'terraform-format-on-save-mode)
+
+(defun packer-format-buffer ()
+  (interactive)
+  (let ((buf (get-buffer-create "*packer-fmt*")))
+    (if (zerop (call-process "packer" nil buf nil "fmt" (buffer-file-name)))
+        (revert-buffer t t t)
+      (message "packer fmt failed: %s" (with-current-buffer buf (buffer-string))))))
+
+(define-minor-mode packer-format-on-save-mode
+  "Run packer-format-buffer before saving the current buffer"
+  :lighter nil
+  (if packer-format-on-save-mode
+      (add-hook 'before-save-hook #'packer-format-buffer nil t)
+    (remove-hook 'before-save-hook #'packer-format-buffer t)))
+
+(defun maybe-init-packer ()
+  (interactive)
+  (when (s-ends-with-p ".pkr" (file-name-base (buffer-file-name)))
+    (packer-format-on-save-mode)))
+
+(add-hook 'hcl-mode-hook #'maybe-init-packer)