Majutsu provides a Magit-style interface for Jujutsu (jj), offering an efficient way to interact with JJ repositories from within Emacs.
Read the full manual for comprehensive documentation.
;; Doom Emacs (packages.el)
(package! majutsu :recipe (:host github :repo "0WD0/majutsu"))
;; use-package + straight.el
(use-package majutsu
:straight (:host github :repo "0WD0/majutsu"))
;; use-package + package-vc (Emacs 29+)
(use-package majutsu
:vc (:url "https://github.com/0WD0/majutsu"))- Open a JJ repository:
M-x majutsu(ormajutsu-log) - Navigate: vanilla bindings use
n/pfor next/previous revision; Evil usesC-j/C-korgj/gkfor section navigation. In log buffers,[/]jump to visible parents/children - Act:
RETto visit,?for help - In blob buffers, press
eto enter editable mode; save applies viajj diffedit(iin Evil also enters editable mode) - In blob buffers, press
bto annotate;C-c mopens the blob in Magit
If Forge is installed, enable Majutsu integration with:
(require 'majutsu-forge)
(majutsu-forge-mode 1)This adds Forge issue, pull-request, and discussion sections to Majutsu log
buffers and binds N / ' in Majutsu buffers to forge-dispatch. The initial
integration is intended for colocated jj/Git repositories, where Forge can still
see a Git repository and remotes. Forge sections also depend on a configured,
tracked repository and populated Forge database. Pull-request commit lists shown
by Forge’s Git-oriented renderer are replaced by a placeholder in Majutsu buffers.
When Embark is loaded, Majutsu automatically adds actions for workspace and bookmark completion candidates. Workspace actions can visit, open in Dired, or copy the root. Bookmark actions can edit, diff, inspect evolution, move, rename, delete, or forget the selected bookmark.
| Key (Vanilla / Evil) | Action |
|---|---|
n / C-j | Next revision/section |
p / C-k | Previous revision/section |
[ | Go to parent |
] | Go to child |
RET | Visit thing at point |
? | Show all commands |
g / g r | Refresh |
a | Absorb |
b | Bookmarks |
c | Describe |
C | Commit |
d | Diff |
E | Ediff |
e | Edit change |
G / ? G | Git |
k / x | Abandon |
o | New |
r | Rebase |
V / _ | Revert |
R | Restore |
s | Squash |
S | Split |
? y | Duplicate |
Z / * | Workspaces |
C-/ / u | Undo |
C-? / C-r | Redo |
- Emacs 29.1+
- Jujutsu (jj) v0.41.0+
- magit 4.4.0+, transient 0.8.7+, compat
- consult 1.0+ and plz 0.9.1+ (Gerrit completion)
- with-editor (pulled in via magit; message editing)
- User Manual - Complete guide to all features
- NEWS - Version history and changelog
- Third-Party Notices - Upstream adaptation and attribution map
- Legacy MIT Notice - Retained MIT attribution text for pre-GPL code
- Current: GNU GPL v3 or later
- Historical notice: MIT notice text retained for pre-GPL distributions
Majutsu began as a fork of jj-mode.el by Brandon Olivier. It depends on and draws inspiration from Magit and wraps the Jujutsu VCS.
Issues and pull requests welcome at https://github.com/0WD0/majutsu
