Replace formatting code

This commit is contained in:
Sonny Bakker 2025-03-18 19:44:22 +01:00
parent 7f3dd527af
commit 747a1fe584

View file

@ -176,7 +176,7 @@ vim.diagnostic.config {
}, },
} }
local enable_formatting = os.getenv("ENABLE_FORMATTING") local enable_formatting = os.getenv("enable_formatting") == 'true';
-- format buffers before saving for specific LSPs -- format buffers before saving for specific LSPs
if (enable_formatting) then if (enable_formatting) then
@ -185,38 +185,21 @@ if (enable_formatting) then
vim.api.nvim_create_autocmd('LspAttach', { vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('lsp', { clear = true }), group = vim.api.nvim_create_augroup('lsp', { clear = true }),
callback = function(args) callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if vim.list_contains(excluded_clients, client.name) then return end;
if client.server_capabilities.documentFormattingProvider then
vim.api.nvim_create_autocmd('BufWritePre', { vim.api.nvim_create_autocmd('BufWritePre', {
buffer = args.buf, buffer = args.buf,
callback = function() callback = function()
local formatting_clients = vim.lsp.get_clients {
bufnr = args.buf,
method = 'textDocument/formatting'
}
local filtered_clients = {}
for _, client in pairs(formatting_clients) do
if vim.list_contains(excluded_clients, client.name) then
goto skip
end
table.insert(filtered_clients, client.name)
::skip::
end
if #filtered_clients == 0 then
return
end
vim.lsp.buf.format { vim.lsp.buf.format {
filter = function(client)
return vim.list_contains(filtered_clients, client.name)
end,
async = false, async = false,
id = args.data.client_id id = args.data.client_id
} }
end, end,
}) })
end end
end
}) })
end end