local Formatters = {} Formatters.setup = function() local formatter = require('formatter') local util = require('formatter.util') local js = { function () return { exe = "npx", args = {"prettier", "--stdin-filepath", util.escape_path(util.get_current_buffer_file_name())}, stdin = true, } end } local ruby = { function () return { exe = "bundle", args = {"exec", "rufo", "-x", "--filename", util.escape_path(util.get_current_buffer_file_name())}, stdin = true, } end } formatter.setup { filetype = { javascript = js, typescript = js, javascriptreact = js, typescriptreact = js, svelte = js, ruby = ruby, haml = ruby, } } vim.api.nvim_create_autocmd("BufWritePost", { pattern = { "*.js", "*.ts", "*.jsx", "*.tsx", "*.svelte", "*.rb", "*.haml", "Gemfile", "*.rake" }, command = "FormatWrite", group = vim.api.nvim_create_augroup("FormatAutogroup", { clear = true }), }) end Formatters.setup()