From b8d3676669a6f5b61ce19e82ab2bf5bcdf4b1df4 Mon Sep 17 00:00:00 2001
From: Janis <janis@nirgendwo.xyz>
Date: Mon, 30 Dec 2024 04:11:49 +0100
Subject: [PATCH] format-on-safe, but my own hook

---
 init.org | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/init.org b/init.org
index e019df6..4f5fe86 100644
--- a/init.org
+++ b/init.org
@@ -1456,6 +1456,21 @@ LSP sets it's prefix key to =s-l= by default, which uses the Super key which I u
                                         ; lsp-ui-doc-use-webkit t
    )
   :commands lsp-ui-mode)
+
+(defvar-local nemo/lsp-format-on-save t)
+
+(define-minor-mode nemo/lsp-format-on-save-mode
+  "Run lsp-format-buffer on save."
+  :lighter " fmt"
+  (if nemo/lsp-format-on-save-mode
+      (add-hook 'before-save-hook #'lsp-format-buffer nil t)
+      (remove-hook 'before-save-hook #'lsp-format-buffer nil t)
+    ))
+
+(defun nemo/do-lsp-format-on-save ()
+  "Format on save using LSP server."
+  (if nemo/lsp-format-on-save
+      (lsp-format-buffer)))
 #+end_src
 
 ** Graphics
@@ -1494,7 +1509,8 @@ hlsl-mode:
 (use-package rustic
   :straight t
   :defer t
-  :after (rust-mode)
+  ;; :after (rust-mode)
+  :hook(rustic-mode . nemo/lsp-format-on-save-mode)
   :general-config
   (general-define-key
    :prefix-map 'nemo/rust-map
@@ -1520,14 +1536,15 @@ hlsl-mode:
     "m" '(:keymap nemo/rust-map :wk "Cargo")
     )
   :config
-  (setq rustic-format-on-save t
-        rust-format-on-save t
-        rust-mode-treesitter-derive t
-        rustic-format-trigger 'on-save
+  (setq rust-mode-treesitter-derive t
+        rustic-format-on-save nil
+        ;; rustic-format-trigger 'on-save
         ;; rustic-format-on-save-method #'rustic-format-buffer
         rustic-analyzer-command '("/usr/bin/rust-analyzer")
         )
+  ;; (setq nemo/lsp-format-on-save t)
   )
+
 #+end_src
 
 #+begin_src emacs-lisp