dotfiles/neovim/.config/nvim/lua/plugins/formatter.lua
2024-06-25 10:18:09 -06:00

100 lines
3.3 KiB
Lua

return {{
"mhartington/formatter.nvim",
config = function()
local vim = vim
local formatter = require("formatter")
local prettierConfig = function()
return {
exe = "prettier",
args = {"--stdin-filepath", vim.fn.shellescape(vim.api.nvim_buf_get_name(0)), "--single-quote"},
stdin = true
}
end
local formatterConfig = {
lua = {
-- function()
-- return {
-- exe = "stylua",
-- args = { "-" },
-- stdin = true,
-- }
-- end,
-- function()
-- return {
-- exe = "luafmt",
-- args = {"--indent-count", 2, "--stdin"},
-- stdin = true
-- }
-- end
},
vue = {function()
return {
exe = "prettier",
args = {"--stdin-filepath", vim.fn.fnameescape(vim.api.nvim_buf_get_name(0)), "--single-quote",
"--parser", "vue"},
stdin = true
}
end},
rust = { -- Rustfmt
function()
return {
exe = "rustfmt",
args = {"--emit=stdout"},
stdin = true
}
end},
swift = { -- Swiftlint
function()
return {
exe = "swift-format",
args = {vim.api.nvim_buf_get_name(0)},
stdin = true
}
end},
r = {function()
return {
exe = "R",
args = {"--slave", "--no-restore", "--no-save", "-e",
'\'con <- file("stdin"); styler::style_text(readLines(con)); close(con)\'', "2>/dev/null"},
stdin = true
}
end},
dart = {function()
return {
exe = "dart",
args = {'format'},
stdin = true
}
end},
['*'] = {
-- require("formatter.filetypes.any").lsp_format,
-- require('formatter.filetypes.any').remove_trailing_whitespace
}
}
local commonFT = {"css", "scss", "html", "java", "javascript", "javascriptreact", "typescript",
"typescriptreact", "markdown", "markdown.mdx", "json", "yaml", "xml", "svg", "svelte"}
for _, ft in ipairs(commonFT) do
formatterConfig[ft] = {prettierConfig}
end
-- Setup functions
formatter.setup({
logging = true,
filetype = formatterConfig,
log_level = 2
})
end
}, {
"mfussenegger/nvim-lint",
config = function()
local lint = require("lint")
lint.linters_by_ft = {
javascript = {"eslint_d"},
typescript = {"eslint_d"},
javascriptreact = {"eslint_d"},
typescriptreact = {"eslint_d"},
markdown = {"vale"}
}
end
}}