diff --git a/lua/mappings.lua b/lua/mappings.lua index 6f2c0d7..5ddc0b2 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -75,9 +75,7 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set('n', 'ra', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) vim.keymap.set('n', 'gr', telescope.lsp_references, opts) - vim.keymap.set('n', 'fm', function() - vim.lsp.buf.format { async = true } - end, opts) + vim.keymap.set({ 'n', 'v' }, 'fm', ":Format", opts) end, }) diff --git a/lua/plugins.lua b/lua/plugins.lua index cedea71..dc5edf1 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -530,6 +530,34 @@ local plugins = { }, { 'nvimtools/hydra.nvim', + }, + { + 'stevearc/conform.nvim', + config = function() + require("conform").setup({ + formatters = { + uncrustify = { + prepend_args = { "-c", "./scripts/uncrustify.cfg" }, + }, + }, + + formatters_by_ft = { + cpp = { "uncrustify" }, + typst = { "typstyle" } + } + }) + 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, lsp_format = "fallback", range = range }) + end, { range = true }) + end } }