11

Magit displays the progression of multi-step commands with popup windows. For example, pressing c brings up the commit menu, whence pressing a will invoke magit-commit-amend.

I would like to include my own command magit-commit-snapshot, and invoke it with cn.
n: Snapshot should be displayed in the commit menu, after s: Squash.

How can I do this? I can see that the bindings exist in magit-key-mode.el, but I don't see an easy way to add to them from my .emacs.

Matthew Piziak
  • 5,958
  • 3
  • 29
  • 77

1 Answers1

16

Starting with v2.1.0 you can do so using this:

(magit-define-popup-action 'magit-commit-popup
  ?n "Snapshot" 'magit-commit-snapshot)

The next release of Magit will replace magit-popup with transient. (As of writing the current Magit release is v2.90.1.) Using transient, you can add a custom command with transient-append-suffix:

(transient-append-suffix 'magit-commit "c"
  '("n" "Snapshot" magit-commit-snapshot))

For more information, see the section on modifying existing transients in the manual.

Kyle Meyer
  • 6,914
  • 26
  • 22
  • 1
    @tarsius, I appreciate how you keep your answer up to date as Magit changes. – Matthew Piziak Jul 03 '15 at 20:45
  • @tarsius I think this no longer works with `transient.el`? Is there a more up-to-date answer? – Trey Oct 30 '19 at 21:07
  • For anyone wondering how to figure out what prefix command goes with a key (e.g. `'magit-commit` in this case): enter the magit transient (`C-x M-g`), then hit `C-x l`, then type the leader key: it will show the prefix command in the minibuffer. E.g. to find the prefix command for `"l"` (log): `C-x M-g C-x l l`, and you will see: `magit-log`. – hraban Apr 19 '21 at 09:53