From 5d68a2d6a77d75ba804f0208f0beca4b8761a70e Mon Sep 17 00:00:00 2001
From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch>
Date: Fri, 21 Feb 2025 13:55:23 +0100
Subject: [PATCH] feat: new autocmd for autoformatting (prev issues with typst)

---
 lua/config/autocmds.lua | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua
index 23ae023..59e1ac1 100644
--- a/lua/config/autocmds.lua
+++ b/lua/config/autocmds.lua
@@ -1,5 +1,3 @@
-vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
-
 -- [[ Highlight on yank ]]
 -- See `:help vim.highlight.on_yank()`
 local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
@@ -16,6 +14,23 @@ vim.api.nvim_create_autocmd('TextYankPost', {
     pattern = '*',
 })
 
+vim.api.nvim_create_autocmd('LspAttach', {
+    callback = function(args)
+        local client = vim.lsp.get_client_by_id(args.data.client_id)
+        if not client then return end
+
+        --@diagnostic disable-next-line: missing-parameter
+        if client.supports_method('textDocument/formatting') then
+            vim.api.nvim_create_autocmd('BufWritePre', {
+                buffer = args.buf,
+                callback = function()
+                    vim.lsp.buf.format({ bufnr = args.buf, id = client.id })
+                end
+            })
+        end
+    end
+})
+
 local function set_filetype(pattern, filetype)
     vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
         pattern = pattern,
-- 
GitLab