Use mason-tool-installer to install packages for conform
This commit is contained in:
parent
e795252784
commit
3243063e62
|
@ -2,9 +2,6 @@
|
|||
local slow_format_filetypes = {}
|
||||
return {
|
||||
"stevearc/conform.nvim",
|
||||
dependencies = {
|
||||
"williamboman/mason.nvim",
|
||||
},
|
||||
event = { "BufWritePre" },
|
||||
cmd = { "ConformInfo" },
|
||||
keys = {
|
||||
|
@ -19,7 +16,24 @@ return {
|
|||
},
|
||||
},
|
||||
opts = {
|
||||
formatters_by_ft = require("tools.format"),
|
||||
formatters_by_ft = (function()
|
||||
local formatters = require("tools.format")
|
||||
local formatters_by_ft = {}
|
||||
for lang, formatter in pairs(formatters) do
|
||||
formatters_by_ft[lang] = {}
|
||||
if type(formatter) == "table" then
|
||||
for _, tool in ipairs(formatter) do
|
||||
if type(tool) == "table" then
|
||||
table.insert(formatters_by_ft[lang], tool[1])
|
||||
else
|
||||
table.insert(formatters_by_ft[lang], tool)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return formatters_by_ft
|
||||
end)(),
|
||||
notify_on_error = false,
|
||||
format_on_save = function(bufnr)
|
||||
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
|
||||
|
|
|
@ -4,27 +4,84 @@ return {
|
|||
dependencies = {
|
||||
{ "mason-org/mason.nvim", opts = {} },
|
||||
"mason-org/mason-lspconfig.nvim",
|
||||
"zapling/mason-conform.nvim",
|
||||
},
|
||||
config = function()
|
||||
local lsp = require("tools.lsp")
|
||||
|
||||
local ensure_installed = vim.tbl_values(vim.tbl_map(function(tool)
|
||||
-- Convert lsp entries to consistent format
|
||||
local tools = {}
|
||||
for _, tool in pairs(lsp) do
|
||||
if type(tool) == "table" then
|
||||
if not tool.system then
|
||||
return {
|
||||
tool[1],
|
||||
condition = tool.condition,
|
||||
}
|
||||
local name = tool[1]
|
||||
local entry = {}
|
||||
|
||||
-- Make a copy and strip out name and lsp config
|
||||
for k, v in pairs(tool) do
|
||||
if k ~= 1 and k ~= 2 then
|
||||
entry[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
tools[name] = entry
|
||||
else
|
||||
return tool
|
||||
tools[tool] = {}
|
||||
end
|
||||
return nil
|
||||
end, lsp))
|
||||
end
|
||||
|
||||
-- Convert formatters to same format and merge on top of the lsps
|
||||
local formatters_by_ft = require("conform").formatters_by_ft
|
||||
local mapping = require("mason-conform.mapping")
|
||||
for _, formatter in pairs(formatters_by_ft) do
|
||||
if type(formatter) == "table" then
|
||||
for _, tool in ipairs(formatter) do
|
||||
local entry = {}
|
||||
local name = nil
|
||||
if type(tool) == "table" then
|
||||
name = mapping.conform_to_package[tool[1]]
|
||||
|
||||
-- Make a copy and strip out name
|
||||
for k, v in pairs(tool) do
|
||||
if k ~= 1 then
|
||||
entry[k] = v
|
||||
end
|
||||
end
|
||||
else
|
||||
name = mapping.conform_to_package[tool]
|
||||
end
|
||||
|
||||
if name ~= nil then
|
||||
tools[name] = vim.tbl_extend("error", tools[name] or {}, entry)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local ensure_installed = vim.iter(tools)
|
||||
:map(function(name, tool)
|
||||
if type(tool) == "table" then
|
||||
if tool.system then
|
||||
return nil
|
||||
end
|
||||
|
||||
local entry = {
|
||||
[1] = name,
|
||||
}
|
||||
|
||||
for k, v in pairs(tool) do
|
||||
entry[k] = v
|
||||
end
|
||||
|
||||
return entry
|
||||
end
|
||||
return tool
|
||||
end)
|
||||
:totable()
|
||||
|
||||
require("mason-tool-installer").setup({
|
||||
ensure_installed = ensure_installed,
|
||||
auto_update = true,
|
||||
debounde_hours = 24,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
@ -36,12 +93,4 @@ return {
|
|||
"neovim/nvim-lspconfig",
|
||||
},
|
||||
},
|
||||
{
|
||||
"zapling/mason-conform.nvim",
|
||||
opts = {},
|
||||
dependencies = {
|
||||
{ "mason-org/mason.nvim", opts = {} },
|
||||
"stevearc/conform.nvim",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ return {
|
|||
cpp = { "clang-format" },
|
||||
go = { "goimports", "gofmt" },
|
||||
python = { "ruff_organize_imports", "ruff_format" },
|
||||
rust = { "rustfmt" },
|
||||
rust = { { "rustfmt", system = true } },
|
||||
javascript = { "prettierd" },
|
||||
javascriptreact = { "prettierd" },
|
||||
typescript = { "prettierd" },
|
||||
|
|
Loading…
Reference in New Issue
Block a user