Skip to content

Write informative commits with persistent worktree-isolated drafts, visual 50/72 guides, and a Markdown buffer.

License

Notifications You must be signed in to change notification settings

Sengoku11/commitpad.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CommitPad

commitpad.nvim

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.

Features

  • Markdown Buffer: The input is a filetype=markdown buffer, enabling your formatters, linters, snippets, and LSP.
  • Persistent & Isolated Drafts: Stored in .git/commitpad/draft.md.
    • No .gitmessage clutter or .gitignore pollution.
    • Drafts are isolated per worktree and persist across sessions.
  • Visual Validation:
    • Real-time highlighting of title length to assist with 50/72 rule.
    • Flags non-conventional commit types (e.g., doc: vs docs:) and structural breaks in the type[scope][!]: description format.

Why CommitPad?

  • Vs fugitive: Preserves your window layout by using a floating overlay instead of disruptive splits.
  • Vs $EDITOR: Instantly summon and dismiss your draft with a dedicated toggle (<leader>gc).
  • Vs lazygit: Leverages your full Neovim setup (LSP, spell check), avoiding the overhead of a TUI context switch.
  • Vs git commit -m: Enables iterative drafting and multiline formatting, rather than hasty one-liners.

Installation

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
  },
}

Requirements

Recommended Configuration

For the best experience writing prose in the popup, these settings are recommended.

Neovim Options

-- 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"

Suggested Plugins

About

Write informative commits with persistent worktree-isolated drafts, visual 50/72 guides, and a Markdown buffer.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages