re-add per-lsp format on save config

This commit is contained in:
wires 2025-03-08 06:59:21 -05:00
parent b8ab53fa2a
commit 7827e7db11
Signed by: wires
SSH key fingerprint: SHA256:9GtP+M3O2IivPDlw1UY872UPUuJH2gI0yG6ExBxaaiM
6 changed files with 47 additions and 17 deletions

View file

@ -1,9 +1,15 @@
return {
'rust_analyzer',
'erlangls',
'lua_ls',
'cssls',
'eslint',
'ts_ls',
'svelte',
rust_analyzer = true,
erlangls = true,
lua_ls = {
format_on_save = false,
},
cssls = {
format_on_save = false,
},
eslint = true,
ts_ls = {
format_on_save = false,
},
svelte = true,
}

View file

@ -2,6 +2,7 @@ local M = {}
local augroup_name = 'CosmicNvimLspFormat'
local config = require('config')
local u = require('utils')
local lsp_utils = require('utils.lsp')
local lsp_mappings = require('lsp.mappings')
M.augroup = vim.api.nvim_create_augroup(augroup_name, { clear = true })
@ -31,10 +32,15 @@ function M.on_attach(client, bufnr)
})
vim.api.nvim_create_autocmd('BufWritePre', {
callback = function()
if lsp_utils.format_on_save_enabled then
vim.lsp.buf.format({
timeout_ms = config.lsp.format_timeout,
bufnr = bufnr,
filter = function(cl)
return lsp_utils.can_client_format_on_save(cl)
end,
})
end
end,
buffer = bufnr,
group = M.augroup,

View file

@ -1,8 +1,8 @@
local config = {
auto_restore = true,
auto_session = true,
enabled = true,
pre_save_cmds = { 'cclose', 'lua vim.notify.dismiss()' },
auto_session_enabled = true,
auto_restore_enabled = true,
auto_save_enabled = true,
}
return {

View file

@ -13,7 +13,6 @@ return {
local config_opts = {
sources = {
null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.diagnostics.markdownlint,
null_ls.builtins.formatting.prettierd.with({
env = {
PRETTIERD_LOCAL_PRETTIER_ONLY = 1,
@ -21,7 +20,7 @@ return {
extra_filetypes = { 'astro' },
}),
null_ls.builtins.formatting.stylua,
}
},
}
null_ls.setup(u.merge(defaults, config_opts))

View file

@ -18,7 +18,7 @@ return {
lspconfig[server].setup(server_config)
end
for _, server in pairs(require('lsp.servers')) do
for server, _ in pairs(require('lsp.servers')) do
start_server(server)
end
end,

View file

@ -1,4 +1,5 @@
local config = require('config')
local servers = require('lsp.servers')
local M = {}
M.format_on_save_enabled = true
@ -8,6 +9,24 @@ function M.toggle_format_on_save()
vim.notify(string.format('Format on save: %s', M.format_on_save_enabled))
end
function M.can_client_format_on_save(client)
local server_config = servers[client.name]
if server_config == true then
return true
end
if server_config then
if server_config.format_on_save == nil then
return true
end
return server_config.format_on_save == true
end
return true
end
function M.buf_format(bufnr, timeout)
if timeout == '' or timeout == nil then
timeout = config.lsp.format_timeout