This commit is contained in:
Christian Nieves
2025-04-11 09:34:43 -05:00
parent e588888143
commit e4efa6b209
7 changed files with 508 additions and 344 deletions

View File

@ -1,90 +1,90 @@
local use_google = require("utils").use_google
return {
{
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo", "FormatDisable", "FormatEnable" },
keys = {
{
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo", "FormatDisable", "FormatEnable" },
keys = {
-- stylua: ignore
{ "<leader>fmt", function() require("conform").format({ async = true, lsp_fallback = true }) end, mode = "", desc = "Format buffer", },
{ "<leader>fj", ":%!python -m json.tool" },
},
config = function()
vim.g.disable_autoformat = false
vim.api.nvim_create_user_command("FormatDisable", function(args)
if args.bang then
-- FormatDisable! will disable formatting just for this buffer
vim.b.disable_autoformat = true
else
vim.g.disable_autoformat = true
end
end, {
desc = "Disable autoformat-on-save",
bang = true,
})
vim.api.nvim_create_user_command("FormatEnable", function()
vim.b.disable_autoformat = false
vim.g.disable_autoformat = false
end, {
desc = "Re-enable autoformat-on-save",
})
{ "<leader>fj", ":%!python -m json.tool" },
},
config = function()
vim.g.disable_autoformat = false
vim.api.nvim_create_user_command("FormatDisable", function(args)
if args.bang then
-- FormatDisable! will disable formatting just for this buffer
vim.b.disable_autoformat = true
else
vim.g.disable_autoformat = true
end
end, {
desc = "Disable autoformat-on-save",
bang = true,
})
vim.api.nvim_create_user_command("FormatEnable", function()
vim.b.disable_autoformat = false
vim.g.disable_autoformat = false
end, {
desc = "Re-enable autoformat-on-save",
})
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*",
callback = function(args)
if vim.g.disable_autoformat or vim.b[args.buf].disable_autoformat then
return
end
require("conform").format({ bufnr = args.buf })
end,
})
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*",
callback = function(args)
if vim.g.disable_autoformat or vim.b[args.buf].disable_autoformat then
return
end
require("conform").format({ bufnr = args.buf })
end,
})
vim.api.nvim_create_user_command("Format", function(args)
local range = nil
if args.count ~= -1 then
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
range = {
start = { args.line1, 0 },
["end"] = { args.line2, end_line:len() },
}
end
require("conform").format({ async = true })
end, { range = true })
end,
-- This will provide type hinting with LuaLS
---@module "conform"
---@type conform.setupOpts
opts = {
log_level = vim.log.levels.DEBUG,
formatters_by_ft = {
rust = { "rustfmt" },
-- Conform will run multiple formatters sequentially
-- go = { "goimports", "gofmt" },
-- Use a sub-list to run only the first available formatter
lua = { "stylua" },
-- Conform will run multiple formatters sequentially
python = { "isort" },
-- Use a sub-list to run only the first available formatter
javascript = { "prettier" },
gdscript = { "gdformat" },
ron = { "ronfmt" },
dashboard = {},
-- Use the "*" filetype to run formatters on all filetypes.
-- ["*"] = { "codespell" },
-- Use the "_" filetype to run formatters on filetypes that don't
-- have other formatters configured.
["_"] = { "trim_whitespace" },
},
formatters = {
-- ronfmt = {
-- command = "ronfmt",
-- args = { "-d", "$FILENAME" },
-- },
gdformat = {
prepend_args = { "-l", "100" },
},
},
},
},
vim.api.nvim_create_user_command("Format", function(args)
local range = nil
if args.count ~= -1 then
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
range = {
start = { args.line1, 0 },
["end"] = { args.line2, end_line:len() },
}
end
require("conform").format({ async = true })
end, { range = true })
end,
-- This will provide type hinting with LuaLS
---@module "conform"
---@type conform.setupOpts
opts = {
log_level = vim.log.levels.DEBUG,
formatters_by_ft = {
rust = { "rustfmt" },
-- Conform will run multiple formatters sequentially
-- go = { "goimports", "gofmt" },
-- Use a sub-list to run only the first available formatter
lua = { "stylua" },
-- Conform will run multiple formatters sequentially
python = { "isort" },
-- Use a sub-list to run only the first available formatter
javascript = { "prettier" },
gdscript = { "gdformat" },
ron = { "ronfmt" },
dashboard = {},
-- Use the "*" filetype to run formatters on all filetypes.
-- ["*"] = { "codespell" },
-- Use the "_" filetype to run formatters on filetypes that don't
-- have other formatters configured.
["_"] = { "trim_whitespace" },
},
formatters = {
-- ronfmt = {
-- command = "ronfmt",
-- args = { "-d", "$FILENAME" },
-- },
gdformat = {
prepend_args = { "-l", "100" },
},
},
},
},
}