diff options
author | Micah Halter <micah@mehalter.com> | 2024-07-01 13:58:55 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-01 10:58:55 -0700 |
commit | cd75be867f2331b22905f47d28c0c270a69466aa (patch) | |
tree | 026bb2bd83bacad4e12e590b67073d4472197733 /lua/conform/formatters | |
parent | fc19dfc0e7d0f5e9f01cd42a4c518e030b3790f0 (diff) |
feat(shfmt): add automatic indentation detection (#481)
* feat(shfmt): automatically detect indentation
* fix(markdown-toc): improve correctness of indentation size calculation
* fix(djlint): improve correctness of indentation size calculation
* feat: add effective `shiftwidth` to `conform.Context`
this also refactors formatters that automatically set indentation level
to use the new shiftwidth context
Diffstat (limited to 'lua/conform/formatters')
-rw-r--r-- | lua/conform/formatters/djlint.lua | 3 | ||||
-rw-r--r-- | lua/conform/formatters/markdown-toc.lua | 4 | ||||
-rw-r--r-- | lua/conform/formatters/shfmt.lua | 8 |
3 files changed, 10 insertions, 5 deletions
diff --git a/lua/conform/formatters/djlint.lua b/lua/conform/formatters/djlint.lua index b7a177b..13c966d 100644 --- a/lua/conform/formatters/djlint.lua +++ b/lua/conform/formatters/djlint.lua @@ -7,8 +7,7 @@ return { }, command = "djlint", args = function(_, ctx) - local indent = vim.bo[ctx.buf].tabstop or 4 -- default is 4 - return { "--reformat", "--indent", indent, "-" } + return { "--reformat", "--indent", ctx.shiftwidth, "-" } end, cwd = util.root_file({ ".djlintrc", diff --git a/lua/conform/formatters/markdown-toc.lua b/lua/conform/formatters/markdown-toc.lua index a7a9694..5e1d80a 100644 --- a/lua/conform/formatters/markdown-toc.lua +++ b/lua/conform/formatters/markdown-toc.lua @@ -6,10 +6,10 @@ return { }, command = "markdown-toc", stdin = false, - args = function(self, ctx) + args = function(_, ctx) -- use the indentation set in the current buffer, effectively allowing us to -- use values from .editorconfig - local indent = vim.bo[ctx.buf].expandtab and (" "):rep(vim.bo[ctx.buf].tabstop) or "\t" + local indent = vim.bo[ctx.buf].expandtab and (" "):rep(ctx.shiftwidth) or "\t" return { "--indent=" .. indent, "-i", "$FILENAME" } end, } diff --git a/lua/conform/formatters/shfmt.lua b/lua/conform/formatters/shfmt.lua index 29b8615..6a75ff9 100644 --- a/lua/conform/formatters/shfmt.lua +++ b/lua/conform/formatters/shfmt.lua @@ -5,5 +5,11 @@ return { description = "A shell parser, formatter, and interpreter with `bash` support.", }, command = "shfmt", - args = { "-filename", "$FILENAME" }, + args = function(_, ctx) + local args = { "-filename", "$FILENAME" } + if vim.bo[ctx.buf].expandtab then + vim.list_extend(args, { "-i", ctx.shiftwidth }) + end + return args + end, } |