aboutsummaryrefslogtreecommitdiffstats
path: root/lua/conform/formatters
diff options
context:
space:
mode:
authorMicah Halter <micah@mehalter.com>2024-07-01 13:58:55 -0400
committerGitHub <noreply@github.com>2024-07-01 10:58:55 -0700
commitcd75be867f2331b22905f47d28c0c270a69466aa (patch)
tree026bb2bd83bacad4e12e590b67073d4472197733 /lua/conform/formatters
parentfc19dfc0e7d0f5e9f01cd42a4c518e030b3790f0 (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.lua3
-rw-r--r--lua/conform/formatters/markdown-toc.lua4
-rw-r--r--lua/conform/formatters/shfmt.lua8
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,
}