diff options
author | Steven Arcangeli <stevearc@stevearc.com> | 2024-03-14 04:58:04 +0000 |
---|---|---|
committer | Steven Arcangeli <stevearc@stevearc.com> | 2024-03-14 04:58:04 +0000 |
commit | a605ce4b2db397c84ae6fa8bcfc85f00b985bc73 (patch) | |
tree | 0b88cdf8d9ea3c08c68af2222ac027648724c3e6 /lua/conform | |
parent | c92e265eb94a78bf0033a54f1f734fd7d69f48b9 (diff) |
fix(rustfmt): parse edition from Cargo.toml (#330)
Diffstat (limited to 'lua/conform')
-rw-r--r-- | lua/conform/formatters/rustfmt.lua | 23 |
1 files 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, } |