The previous impl of this was formatting the pre-save contents of the buffer, effectively preventing saving any changes (oops). Change-Id: I17d4b8ba0943964d700f7dca81af4f46b149c0b8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3644 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			EmacsLisp
		
	
	
	
	
	
| ;;; -*- 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-region (point-min) (point-max)
 | |
|                 "packer" nil buf nil "fmt" "-"))
 | |
|         (let ((point (point))
 | |
|               (window-start (window-start)))
 | |
|           (erase-buffer)
 | |
|           (insert-buffer-substring buf)
 | |
|           (goto-char point)
 | |
|           (set-window-start nil window-start))
 | |
|       (message "packer fmt failed: %s" (with-current-buffer buf (buffer-string))))
 | |
|     (kill-buffer buf)))
 | |
| 
 | |
| (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)
 |