aboutsummaryrefslogtreecommitdiffstats
path: root/lua/conform/formatters
diff options
context:
space:
mode:
authorSteven Arcangeli <stevearc@stevearc.com>2023-08-28 18:28:07 -0700
committerSteven Arcangeli <stevearc@stevearc.com>2023-08-28 18:28:07 -0700
commitcddd536e087a9fd3d2c9ea5b0a44e46c7b4b54c2 (patch)
tree70f6868440596ae90b7f451379c3abfa5678849c /lua/conform/formatters
parent69c4495ab5ad3c07c3a4f3c2bcac2f070718b4cb (diff)
feat: range formatting
Should work the same as vim.lsp.buf.format(). Additionally, range formatting is supported for *any* formatter. If the formatter doesn't have native support for ranges, conform will do its best to only apply the diffs that affect that range.
Diffstat (limited to 'lua/conform/formatters')
-rw-r--r--lua/conform/formatters/autoflake.lua2
-rw-r--r--lua/conform/formatters/autopep8.lua5
-rw-r--r--lua/conform/formatters/black.lua2
-rw-r--r--lua/conform/formatters/clang_format.lua15
-rw-r--r--lua/conform/formatters/cljstyle.lua2
-rw-r--r--lua/conform/formatters/cmake_format.lua2
-rw-r--r--lua/conform/formatters/dart_format.lua2
-rw-r--r--lua/conform/formatters/dfmt.lua2
-rw-r--r--lua/conform/formatters/elm_format.lua2
-rw-r--r--lua/conform/formatters/erb_format.lua2
-rw-r--r--lua/conform/formatters/eslint_d.lua2
-rw-r--r--lua/conform/formatters/fish_indent.lua2
-rw-r--r--lua/conform/formatters/gdformat.lua2
-rw-r--r--lua/conform/formatters/gofmt.lua2
-rw-r--r--lua/conform/formatters/gofumpt.lua2
-rw-r--r--lua/conform/formatters/goimports.lua2
-rw-r--r--lua/conform/formatters/htmlbeautifier.lua2
-rw-r--r--lua/conform/formatters/isort.lua2
-rw-r--r--lua/conform/formatters/jq.lua2
-rw-r--r--lua/conform/formatters/nixfmt.lua2
-rw-r--r--lua/conform/formatters/nixpkgs_fmt.lua2
-rw-r--r--lua/conform/formatters/ocamlformat.lua2
-rw-r--r--lua/conform/formatters/pg_format.lua2
-rw-r--r--lua/conform/formatters/prettier.lua6
-rw-r--r--lua/conform/formatters/prettierd.lua6
-rw-r--r--lua/conform/formatters/rubocop.lua2
-rw-r--r--lua/conform/formatters/rustfmt.lua2
-rw-r--r--lua/conform/formatters/scalafmt.lua2
-rw-r--r--lua/conform/formatters/shfmt.lua2
-rw-r--r--lua/conform/formatters/sql_formatter.lua2
-rw-r--r--lua/conform/formatters/stylua.lua15
-rw-r--r--lua/conform/formatters/swift_format.lua2
-rw-r--r--lua/conform/formatters/swiftformat.lua2
-rw-r--r--lua/conform/formatters/terraform_fmt.lua2
-rw-r--r--lua/conform/formatters/uncrustify.lua2
-rw-r--r--lua/conform/formatters/xmlformat.lua2
-rw-r--r--lua/conform/formatters/yamlfix.lua2
-rw-r--r--lua/conform/formatters/yamlfmt.lua2
-rw-r--r--lua/conform/formatters/yapf.lua5
-rw-r--r--lua/conform/formatters/zigfmt.lua2
40 files changed, 80 insertions, 40 deletions
diff --git a/lua/conform/formatters/autoflake.lua b/lua/conform/formatters/autoflake.lua
index 04daf71..c7d0a3b 100644
--- a/lua/conform/formatters/autoflake.lua
+++ b/lua/conform/formatters/autoflake.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/PyCQA/autoflake",
diff --git a/lua/conform/formatters/autopep8.lua b/lua/conform/formatters/autopep8.lua
index 5ed2f83..3945e47 100644
--- a/lua/conform/formatters/autopep8.lua
+++ b/lua/conform/formatters/autopep8.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/hhatto/autopep8",
@@ -6,4 +6,7 @@ return {
},
command = "autopep8",
args = { "-" },
+ range_args = function(ctx)
+ return { "-", "--line-range", tostring(ctx.range.start[1]), tostring(ctx.range["end"][1]) }
+ end,
}
diff --git a/lua/conform/formatters/black.lua b/lua/conform/formatters/black.lua
index 0d892a2..e27ed90 100644
--- a/lua/conform/formatters/black.lua
+++ b/lua/conform/formatters/black.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/psf/black",
diff --git a/lua/conform/formatters/clang_format.lua b/lua/conform/formatters/clang_format.lua
index d2c6d41..44af877 100644
--- a/lua/conform/formatters/clang_format.lua
+++ b/lua/conform/formatters/clang_format.lua
@@ -1,4 +1,5 @@
----@type conform.FormatterConfig
+local util = require("conform.util")
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://www.kernel.org/doc/html/latest/process/clang-format.html",
@@ -6,4 +7,16 @@ return {
},
command = "clang-format",
args = { "-assume-filename", "$FILENAME" },
+ range_args = function(ctx)
+ local start_offset, end_offset = util.get_offsets_from_range(ctx.buf, ctx.range)
+ local length = end_offset - start_offset
+ return {
+ "-assume-filename",
+ "$FILENAME",
+ "--offset",
+ tostring(start_offset),
+ "--length",
+ tostring(length),
+ }
+ end,
}
diff --git a/lua/conform/formatters/cljstyle.lua b/lua/conform/formatters/cljstyle.lua
index ffd8061..21205a5 100644
--- a/lua/conform/formatters/cljstyle.lua
+++ b/lua/conform/formatters/cljstyle.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/greglook/cljstyle",
diff --git a/lua/conform/formatters/cmake_format.lua b/lua/conform/formatters/cmake_format.lua
index 563bcae..0e98108 100644
--- a/lua/conform/formatters/cmake_format.lua
+++ b/lua/conform/formatters/cmake_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/cheshirekow/cmake_format",
diff --git a/lua/conform/formatters/dart_format.lua b/lua/conform/formatters/dart_format.lua
index eb9b39c..e110b06 100644
--- a/lua/conform/formatters/dart_format.lua
+++ b/lua/conform/formatters/dart_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://dart.dev/tools/dart-format",
diff --git a/lua/conform/formatters/dfmt.lua b/lua/conform/formatters/dfmt.lua
index 49c99cb..41dd667 100644
--- a/lua/conform/formatters/dfmt.lua
+++ b/lua/conform/formatters/dfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/dlang-community/dfmt",
diff --git a/lua/conform/formatters/elm_format.lua b/lua/conform/formatters/elm_format.lua
index 23f1408..5b0db5c 100644
--- a/lua/conform/formatters/elm_format.lua
+++ b/lua/conform/formatters/elm_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/avh4/elm-format",
diff --git a/lua/conform/formatters/erb_format.lua b/lua/conform/formatters/erb_format.lua
index dad08ca..65d7d10 100644
--- a/lua/conform/formatters/erb_format.lua
+++ b/lua/conform/formatters/erb_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/nebulab/erb-formatter",
diff --git a/lua/conform/formatters/eslint_d.lua b/lua/conform/formatters/eslint_d.lua
index e036aae..e7a5227 100644
--- a/lua/conform/formatters/eslint_d.lua
+++ b/lua/conform/formatters/eslint_d.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/mantoni/eslint_d.js/",
diff --git a/lua/conform/formatters/fish_indent.lua b/lua/conform/formatters/fish_indent.lua
index 1501072..7e10ed4 100644
--- a/lua/conform/formatters/fish_indent.lua
+++ b/lua/conform/formatters/fish_indent.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://fishshell.com/docs/current/cmds/fish_indent.html",
diff --git a/lua/conform/formatters/gdformat.lua b/lua/conform/formatters/gdformat.lua
index 914bb89..d180f12 100644
--- a/lua/conform/formatters/gdformat.lua
+++ b/lua/conform/formatters/gdformat.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/Scony/godot-gdscript-toolkit",
diff --git a/lua/conform/formatters/gofmt.lua b/lua/conform/formatters/gofmt.lua
index b0b81c3..2bfd6b4 100644
--- a/lua/conform/formatters/gofmt.lua
+++ b/lua/conform/formatters/gofmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://pkg.go.dev/cmd/gofmt",
diff --git a/lua/conform/formatters/gofumpt.lua b/lua/conform/formatters/gofumpt.lua
index 79fb4dc..2d4f9a5 100644
--- a/lua/conform/formatters/gofumpt.lua
+++ b/lua/conform/formatters/gofumpt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/mvdan/gofumpt",
diff --git a/lua/conform/formatters/goimports.lua b/lua/conform/formatters/goimports.lua
index 2361e43..64efea6 100644
--- a/lua/conform/formatters/goimports.lua
+++ b/lua/conform/formatters/goimports.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://pkg.go.dev/golang.org/x/tools/cmd/goimports",
diff --git a/lua/conform/formatters/htmlbeautifier.lua b/lua/conform/formatters/htmlbeautifier.lua
index 3182f99..73b9275 100644
--- a/lua/conform/formatters/htmlbeautifier.lua
+++ b/lua/conform/formatters/htmlbeautifier.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/threedaymonk/htmlbeautifier",
diff --git a/lua/conform/formatters/isort.lua b/lua/conform/formatters/isort.lua
index f6c6e3d..9b02c4e 100644
--- a/lua/conform/formatters/isort.lua
+++ b/lua/conform/formatters/isort.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/PyCQA/isort",
diff --git a/lua/conform/formatters/jq.lua b/lua/conform/formatters/jq.lua
index 50a905d..061ed03 100644
--- a/lua/conform/formatters/jq.lua
+++ b/lua/conform/formatters/jq.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/stedolan/jq",
diff --git a/lua/conform/formatters/nixfmt.lua b/lua/conform/formatters/nixfmt.lua
index 6c5001a..27029d5 100644
--- a/lua/conform/formatters/nixfmt.lua
+++ b/lua/conform/formatters/nixfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/serokell/nixfmt",
diff --git a/lua/conform/formatters/nixpkgs_fmt.lua b/lua/conform/formatters/nixpkgs_fmt.lua
index 6685fe8..9ca6a8a 100644
--- a/lua/conform/formatters/nixpkgs_fmt.lua
+++ b/lua/conform/formatters/nixpkgs_fmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/nix-community/nixpkgs-fmt",
diff --git a/lua/conform/formatters/ocamlformat.lua b/lua/conform/formatters/ocamlformat.lua
index 4ea1b49..0305083 100644
--- a/lua/conform/formatters/ocamlformat.lua
+++ b/lua/conform/formatters/ocamlformat.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/ocaml-ppx/ocamlformat",
diff --git a/lua/conform/formatters/pg_format.lua b/lua/conform/formatters/pg_format.lua
index 87aff66..f016454 100644
--- a/lua/conform/formatters/pg_format.lua
+++ b/lua/conform/formatters/pg_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/darold/pgFormatter",
diff --git a/lua/conform/formatters/prettier.lua b/lua/conform/formatters/prettier.lua
index 6f4bbfb..ea45ffb 100644
--- a/lua/conform/formatters/prettier.lua
+++ b/lua/conform/formatters/prettier.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/prettier/prettier",
@@ -7,6 +7,10 @@ return {
},
command = util.from_node_modules("prettier"),
args = { "--stdin-filepath", "$FILENAME" },
+ range_args = function(ctx)
+ local start_offset, end_offset = util.get_offsets_from_range(ctx.buf, ctx.range)
+ return { "$FILENAME", "--range-start=" .. start_offset, "--range-end=" .. end_offset }
+ end,
cwd = util.root_file({
-- https://prettier.io/docs/en/configuration.html
".prettierrc",
diff --git a/lua/conform/formatters/prettierd.lua b/lua/conform/formatters/prettierd.lua
index 0af6baf..3cdc19e 100644
--- a/lua/conform/formatters/prettierd.lua
+++ b/lua/conform/formatters/prettierd.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/fsouza/prettierd",
@@ -7,6 +7,10 @@ return {
},
command = util.from_node_modules("prettierd"),
args = { "$FILENAME" },
+ range_args = function(ctx)
+ local start_offset, end_offset = util.get_offsets_from_range(ctx.buf, ctx.range)
+ return { "$FILENAME", "--range-start=" .. start_offset, "--range-end=" .. end_offset }
+ end,
cwd = util.root_file({
-- https://prettier.io/docs/en/configuration.html
".prettierrc",
diff --git a/lua/conform/formatters/rubocop.lua b/lua/conform/formatters/rubocop.lua
index 492f379..5e2a143 100644
--- a/lua/conform/formatters/rubocop.lua
+++ b/lua/conform/formatters/rubocop.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/rubocop/rubocop",
diff --git a/lua/conform/formatters/rustfmt.lua b/lua/conform/formatters/rustfmt.lua
index 7b5e322..d8f0f19 100644
--- a/lua/conform/formatters/rustfmt.lua
+++ b/lua/conform/formatters/rustfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/rust-lang/rustfmt",
diff --git a/lua/conform/formatters/scalafmt.lua b/lua/conform/formatters/scalafmt.lua
index 2b9e451..ea82624 100644
--- a/lua/conform/formatters/scalafmt.lua
+++ b/lua/conform/formatters/scalafmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/scalameta/scalafmt",
diff --git a/lua/conform/formatters/shfmt.lua b/lua/conform/formatters/shfmt.lua
index 6e40f0c..29b8615 100644
--- a/lua/conform/formatters/shfmt.lua
+++ b/lua/conform/formatters/shfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/mvdan/sh",
diff --git a/lua/conform/formatters/sql_formatter.lua b/lua/conform/formatters/sql_formatter.lua
index bd92851..9452a61 100644
--- a/lua/conform/formatters/sql_formatter.lua
+++ b/lua/conform/formatters/sql_formatter.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/sql-formatter-org/sql-formatter",
diff --git a/lua/conform/formatters/stylua.lua b/lua/conform/formatters/stylua.lua
index ac482bd..d971932 100644
--- a/lua/conform/formatters/stylua.lua
+++ b/lua/conform/formatters/stylua.lua
@@ -1,5 +1,5 @@
local util = require("conform.util")
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/JohnnyMorganz/StyLua",
@@ -7,6 +7,19 @@ return {
},
command = "stylua",
args = { "--search-parent-directories", "--stdin-filepath", "$FILENAME", "-" },
+ range_args = function(ctx)
+ local start_offset, end_offset = util.get_offsets_from_range(ctx.buf, ctx.range)
+ return {
+ "--search-parent-directories",
+ "--stdin-filepath",
+ "$FILENAME",
+ "--range-start",
+ tostring(start_offset),
+ "--range-end",
+ tostring(end_offset),
+ "-",
+ }
+ end,
cwd = util.root_file({
".stylua.toml",
"stylua.toml",
diff --git a/lua/conform/formatters/swift_format.lua b/lua/conform/formatters/swift_format.lua
index 2b81297..e3e4365 100644
--- a/lua/conform/formatters/swift_format.lua
+++ b/lua/conform/formatters/swift_format.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/apple/swift-format",
diff --git a/lua/conform/formatters/swiftformat.lua b/lua/conform/formatters/swiftformat.lua
index 821a010..ed142ad 100644
--- a/lua/conform/formatters/swiftformat.lua
+++ b/lua/conform/formatters/swiftformat.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/nicklockwood/SwiftFormat",
diff --git a/lua/conform/formatters/terraform_fmt.lua b/lua/conform/formatters/terraform_fmt.lua
index 44edc55..fba8a12 100644
--- a/lua/conform/formatters/terraform_fmt.lua
+++ b/lua/conform/formatters/terraform_fmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://www.terraform.io/docs/cli/commands/fmt.html",
diff --git a/lua/conform/formatters/uncrustify.lua b/lua/conform/formatters/uncrustify.lua
index 3430063..2782e96 100644
--- a/lua/conform/formatters/uncrustify.lua
+++ b/lua/conform/formatters/uncrustify.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/uncrustify/uncrustify",
diff --git a/lua/conform/formatters/xmlformat.lua b/lua/conform/formatters/xmlformat.lua
index 25b48e2..d04c9cc 100644
--- a/lua/conform/formatters/xmlformat.lua
+++ b/lua/conform/formatters/xmlformat.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/pamoller/xmlformatter",
diff --git a/lua/conform/formatters/yamlfix.lua b/lua/conform/formatters/yamlfix.lua
index 1b00e01..7592340 100644
--- a/lua/conform/formatters/yamlfix.lua
+++ b/lua/conform/formatters/yamlfix.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/lyz-code/yamlfix",
diff --git a/lua/conform/formatters/yamlfmt.lua b/lua/conform/formatters/yamlfmt.lua
index 56c6cb6..8f188ab 100644
--- a/lua/conform/formatters/yamlfmt.lua
+++ b/lua/conform/formatters/yamlfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/google/yamlfmt",
diff --git a/lua/conform/formatters/yapf.lua b/lua/conform/formatters/yapf.lua
index 5d7e866..fc3cfeb 100644
--- a/lua/conform/formatters/yapf.lua
+++ b/lua/conform/formatters/yapf.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/google/yapf",
@@ -6,4 +6,7 @@ return {
},
command = "yapf",
args = { "--quiet" },
+ range_args = function(ctx)
+ return { "--quiet", "--lines", string.format("%d-%d", ctx.range.start[1], ctx.range["end"][1]) }
+ end,
}
diff --git a/lua/conform/formatters/zigfmt.lua b/lua/conform/formatters/zigfmt.lua
index 9c93c0b..8097d9c 100644
--- a/lua/conform/formatters/zigfmt.lua
+++ b/lua/conform/formatters/zigfmt.lua
@@ -1,4 +1,4 @@
----@type conform.FormatterConfig
+---@type conform.FileFormatterConfig
return {
meta = {
url = "https://github.com/ziglang/zig",