magit-file-dispatch
Posted on Mon 14 December 2020 by alex in geek
magit-file-dispatch is my new favourite command since the recent removal of magit-file-mode. Rather than paper over the change and stick to the old way I tried the suggestions of launching with the dispatch commands. I discovered a few cool things including the ability to trace an individual functions changes over time which has completely replaced my old method of piping git log through less. In the end I found the fall-back of going to magit-dispatch a little too much friction given I've a lot of memory muscle to launch the status of git from various non-file backed yet still project orientated buffers. compilation-mode is one example but I also have my mail client set-up so I can quickly get to the code from the relevant mailing list. As everyone can have their own special snowflake settings in Emacs I finally went with:
(with-eval-after-load 'magit
(defun my-magit-file-bindings ()
"Setup my file bindings"
(local-set-key (kbd "<f5>") 'my-counsel-git-grep))
(add-hook 'magit-find-file-hook 'my-magit-file-bindings))
(defun my-magit-dispatch (&optional prefix)
"My personal preference for magit-dispatch.
While magit-file-dispatch is cool, falling back to magit-dispatch is
not, I'd rather just go to magit-status. Lets make it so."
(interactive "P")
(if (or prefix
(not (buffer-file-name))
(not (functionp 'magit-file-dispatch)))
(magit-status)
(magit-file-dispatch)))
(use-package magit
:bind (("C-x g" . my-magit-dispatch))