
A lightweight popup for writing Git commit messages directly within Neovim.
It facilitates a descriptive commit style (e.g. Mitchell Hashimoto) by providing a dedicated writing environment.
Note: CommitPad assumes you have staged your changes (
git add) before running. It also does not manage existing commits.
filetype=markdown buffer, enabling your formatters, linters, snippets, and LSP..git/commitpad/draft.md..gitmessage clutter or .gitignore pollution.doc: vs docs:) and structural breaks in the type[scope][!]: description format.fugitive: Preserves your window layout by using a floating overlay instead of disruptive splits.$EDITOR: Instantly summon and dismiss your draft with a dedicated toggle (<leader>gc).lazygit: Leverages your full Neovim setup (LSP, spell check), avoiding the overhead of a TUI context switch.git commit -m: Enables iterative drafting and multiline formatting, rather than hasty one-liners.Lazy.nvim
{
"Sengoku11/commitpad.nvim",
dependencies = { "MunifTanjim/nui.nvim" },
cmd = { "CommitPad" },
keys = {
{ "<leader>gc", "<cmd>CommitPad<cr>", desc = "CommitPad" },
{ "<leader>gac", "<cmd>CommitPadAmend<cr>", desc = "CommitPadAmend" },
},
opts = {
-- Defaults
footer = false, -- A dedicated buffer that provides a "sticky" area for repetitive tags
stage_files = true, -- Display staged files in UI
},
}
vim.system)MunifTanjim/nui.nvimFor the best experience writing prose in the popup, these settings are recommended.
-- Soft wrap lines at word boundaries, preserving indentation
vim.opt.wrap = true -- Enable soft wrap (required for the options below)
vim.opt.breakindent = true -- Visual indentation matches the code level
vim.opt.linebreak = true -- Wrap at words, not arbitrary characters
-- Builtin spell check
vim.opt.spell = true
vim.opt.spelllang = { "en_us" }
vim.opt.spelloptions = "camel"