From e359687e3684452ff45d7a5f1a59cd40b0bfa320 Mon Sep 17 00:00:00 2001 From: okuuva Date: Fri, 29 Sep 2023 09:12:23 +0300 Subject: feat: add darker (#80) * feat: add darker * fix: darker args Added --no-color since we don't want color output. Also set --revision and --stdin-filename since running darker for a single file doesn't make much sense without them. * refactor: make darker args context aware If the buffer is modified we should set revision and stdin-filename in order not to lose changes. If it's not we should leave them unset so that we respect settings from pyproject.toml. --- lua/conform/formatters/darker.lua | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lua/conform/formatters/darker.lua diff --git a/lua/conform/formatters/darker.lua b/lua/conform/formatters/darker.lua new file mode 100644 index 0000000..5f47e6b --- /dev/null +++ b/lua/conform/formatters/darker.lua @@ -0,0 +1,35 @@ +local util = require("conform.util") +---@type conform.FileFormatterConfig +return { + meta = { + url = "https://github.com/akaihola/darker", + description = "Run black only on changed lines.", + }, + command = "darker", + args = function(ctx) + -- make sure pre-save doesn't lose changes while post-save respects + -- the revision setting potentially set in pyproject.toml + if vim.bo[ctx.buf].modified then + return { + "--quiet", + "--no-color", + "--stdout", + "--revision", + "HEAD..:STDIN:", + "--stdin-filename", + "$FILENAME", + } + else + return { + "--quiet", + "--no-color", + "--stdout", + "$FILENAME", + } + end + end, + cwd = util.root_file({ + -- https://github.com/akaihola/darker#customizing-darker-black-isort-flynt-and-linter-behavior + "pyproject.toml", + }), +} -- cgit v1.2.3-70-g09d2