diff options
Diffstat (limited to 'lua')
-rw-r--r-- | lua/conform/formatters/rescript-format.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lua/conform/formatters/rescript-format.lua b/lua/conform/formatters/rescript-format.lua new file mode 100644 index 0000000..806b380 --- /dev/null +++ b/lua/conform/formatters/rescript-format.lua @@ -0,0 +1,40 @@ +-- The formatter expects one of [.res | .resi | .ml | .mli] passed as +-- the value to the '-stdin' argument. +local valid_extensions = { + res = true, + resi = true, + ml = true, + mli = true, +} + +local default_extension = "res" + +---@type conform.FileFormatterConfig +return { + meta = { + url = "https://rescript-lang.org/", + description = "The built-in ReScript formatter.", + }, + command = "rescript", + args = function(self, ctx) + local extension = vim.fn.fnamemodify(ctx.filename, ":e") + + local is_invalid_extension = valid_extensions[extension] == nil + if is_invalid_extension then + extension = default_extension + end + + return { + "format", + "-stdin", + "." .. extension, + } + end, + stdin = true, + + require_cwd = true, + cwd = require("conform.util").root_file({ + "rescript.json", + "bsconfig.json", + }), +} |