renames, refactors, comment updates
This commit is contained in:
parent
967da5ad93
commit
215778e9c4
3 changed files with 31 additions and 36 deletions
86
lua/plugins/conform_formatter.lua
Normal file
86
lua/plugins/conform_formatter.lua
Normal file
|
@ -0,0 +1,86 @@
|
|||
local function formatCurrent(retry)
|
||||
require("conform").format({ async = true, lsp_fallback = true }, function(err, edited)
|
||||
if edited then
|
||||
print("Formatted!")
|
||||
elseif err then
|
||||
-- Sometimes I am too fast and vim is saving from my InsertExit and this fails so
|
||||
-- I give it one retry
|
||||
if not retry and string.find(err, "concurrent modification") then
|
||||
return formatCurrent(true)
|
||||
end
|
||||
print(err)
|
||||
else
|
||||
print("Nothing to format!")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
---@param bufnr integer
|
||||
---@param ... string
|
||||
---@return string
|
||||
local function first(bufnr, ...)
|
||||
local conform = require("conform")
|
||||
for i = 1, select("#", ...) do
|
||||
local formatter = select(i, ...)
|
||||
if conform.get_formatter_info(formatter, bufnr).available then
|
||||
return formatter
|
||||
end
|
||||
end
|
||||
return select(1, ...)
|
||||
end
|
||||
|
||||
-- Make function that converts { { "prettierd", "prettier" }, "rustywind" } to
|
||||
--function (bufnr)
|
||||
-- return { first(bufnr, "prettierd", "prettier"), "rustywind" }
|
||||
-- end,
|
||||
local function expandFormatters(formatters)
|
||||
return function(bufnr)
|
||||
local result = {}
|
||||
for i = 1, #formatters do
|
||||
local formatter = formatters[i]
|
||||
if type(formatter) == "table" then
|
||||
result[i] = first(bufnr, unpack(formatter))
|
||||
else
|
||||
result[i] = formatter
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
end
|
||||
|
||||
return {
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
-- https://github.com/stevearc/conform.nvim?tab=readme-ov-file#setup
|
||||
notify_on_error = true,
|
||||
formatters = {
|
||||
-- v_fmt = {
|
||||
-- command = "v",
|
||||
-- args = { "fmt" },
|
||||
-- },
|
||||
},
|
||||
-- Note that all these need to be available at runtime, add them to flake.nix#runtimeDependencies
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua", lsp_format = "first" },
|
||||
nix = { "nixfmt", lsp_format = "first" },
|
||||
typescript = expandFormatters({ { "prettierd", "prettier" }, "rustywind", lsp_format = "first" }),
|
||||
typescriptreact = expandFormatters({ { "prettierd", "prettier" }, "rustywind", lsp_format = "first" }),
|
||||
javascript = expandFormatters({ { "prettierd", "prettier" }, "rustywind", lsp_format = "first" }),
|
||||
javascriptreact = expandFormatters({ { "prettierd", "prettier" }, "rustywind", lsp_format = "first" }),
|
||||
|
||||
-- TODO revisit these I'd like to use them but they are not in nixpkgs yet
|
||||
-- https://nixos.org/guides/nix-pills/
|
||||
-- markdown = { "mdslw", "mdsf"},
|
||||
markdown = { "markdownlint-cli2", lsp_format = "first" },
|
||||
rust = { "rustfmt", lsp_format = "first" },
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{
|
||||
"<leader>l<leader>",
|
||||
formatCurrent,
|
||||
mode = { "n", "v", "x" },
|
||||
desc = "Format buffer",
|
||||
},
|
||||
},
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue