From a605ce4b2db397c84ae6fa8bcfc85f00b985bc73 Mon Sep 17 00:00:00 2001 From: Steven Arcangeli Date: Thu, 14 Mar 2024 04:58:04 +0000 Subject: fix(rustfmt): parse edition from Cargo.toml (#330) --- lua/conform/formatters/rustfmt.lua | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/lua/conform/formatters/rustfmt.lua b/lua/conform/formatters/rustfmt.lua index 34fb09b..62d2d78 100644 --- a/lua/conform/formatters/rustfmt.lua +++ b/lua/conform/formatters/rustfmt.lua @@ -1,3 +1,16 @@ +---@param manifest string +---@return nil|string +local function parse_edition(manifest) + for line in io.lines(manifest) do + if line:match("^edition *=") then + local edition = line:match("%d+") + if edition then + return edition + end + end + end +end + ---@type conform.FileFormatterConfig return { meta = { @@ -11,12 +24,16 @@ return { }, args = function(self, ctx) local args = { "--emit=stdout" } + local edition local manifest = vim.fs.find("Cargo.toml", { upward = true, path = ctx.dirname })[1] if manifest then - table.insert(args, "--manifest-path=" .. manifest) - elseif self.options.default_edition then - table.insert(args, "--edition=" .. self.options.default_edition) + edition = parse_edition(manifest) + end + if not edition then + edition = self.options.default_edition end + table.insert(args, "--edition=" .. edition) + return args end, } -- cgit v1.2.3-70-g09d2