LazyVim.LazyVim/lua/lazyvim/plugins/lsp/format.lua

41 lines
929 B
Lua
Raw Normal View History

2022-12-30 17:30:52 +01:00
local M = {}
M.autoformat = true
function M.toggle()
M.autoformat = not M.autoformat
2022-12-30 23:35:27 +01:00
vim.notify(M.autoformat and "Enabled format on save" or "Disabled format on save")
2022-12-30 17:30:52 +01:00
end
function M.format()
2022-12-30 23:35:27 +01:00
local buf = vim.api.nvim_get_current_buf()
local ft = vim.bo[buf].filetype
local have_nls = #require("null-ls.sources").get_available(ft, "NULL_LS_FORMATTING") > 0
vim.lsp.buf.format({
bufnr = buf,
filter = function(client)
if have_nls then
return client.name == "null-ls"
end
return client.name ~= "null-ls"
end,
})
2022-12-30 17:30:52 +01:00
end
function M.on_attach(client, buf)
2022-12-30 23:35:27 +01:00
if client.supports_method("textDocument/formatting") then
2022-12-30 17:30:52 +01:00
vim.api.nvim_create_autocmd("BufWritePre", {
group = vim.api.nvim_create_augroup("LspFormat." .. buf, {}),
2022-12-30 23:35:27 +01:00
buffer = buf,
2022-12-30 17:30:52 +01:00
callback = function()
2022-12-30 23:35:27 +01:00
if M.autoformat then
M.format()
end
2022-12-30 17:30:52 +01:00
end,
})
end
end
return M