Majutsu! Magit for jujutsu
See the code#+html: <p align="center"><a href="https://majutsu.org"><img src="docs/site/public/og.png" alt="Majutsu — Shape history without leaving Emacs" width="720"></a></p> Majutsu provides a Magit-style interface for [[https://github.com/jj-vcs/jj][Jujutsu (jj)]], offering an efficient way to interact with JJ repositories from within Emacs. [[file:docs/majutsu.org][Read the full manual]] for comprehensive documentation. * Quick Start ** Installation #+begin_src emacs-lisp ;; 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")) #+end_src ** Usage 1. Open a JJ repository: ~M-x majutsu~ (or ~majutsu-log~) 2. Navigate: vanilla bindings use ~n~ / ~p~ for next/previous revision; Evil uses ~C-j~ / ~C-k~ or ~gj~ / ~gk~ for section navigation. In log buffers, ~[~ / ~]~ jump to visible parents/children 3. Act: ~RET~ to visit, ~?~ for help 4. In blob buffers, press ~e~ to enter editable mode; save applies via =jj diffedit= (~i~ in Evil also enters editable mode) 5. In blob buffers, press ~b~ to annotate; ~C-c m~ opens the blob in Magit ** Optional Forge Integration If [[https://github.com/magit/forge][Forge]] is installed, enable Majutsu integration with: #+begin_src emacs-lisp (require 'majutsu-forge) (majutsu-forge-mode 1) #+end_src 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. ** Optional Embark Integration When [[https://github.com/oantolin/embark][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. ** Essential Keybindings | 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 | * Requirements - Emacs 29.1+ - [[https://github.com/jj-vcs/jj][Jujutsu (jj)]] v0.41.0+ - [[https://magit.vc/][magit]] 4.4.0+, [[https://github.com/magit/transient][transient]] 0.8.7+, [[https://github.com/emacs-compat/compat][compat]] - [[https://github.com/minad/consult][consult]] 1.0+ and [[https://github.com/alphapapa/plz.el][plz]] 0.9.1+ (Gerrit completion) - [[https://github.com/magit/with-editor][with-editor]] (pulled in via magit; message editing) * Documentation - [[file:docs/majutsu.org][User Manual]] - Complete guide to all features - [[file:NEWS.org][NEWS]] - Version history and changelog - [[file:THIRD_PARTY_NOTICES.org][Third-Party Notices]] - Upstream adaptation and attribution map - [[file:LICENSE-MIT][Legacy MIT Notice]] - Retained MIT attribution text for pre-GPL code * License - Current: [[file:LICENSE][GNU GPL v3 or later]] - Historical notice: [[file:LICENSE-MIT][MIT notice text]] retained for pre-GPL distributions * Credits Majutsu began as a fork of [[https://github.com/bolivier/jj-mode.el][jj-mode.el]] by Brandon Olivier. It depends on and draws inspiration from [[https://magit.vc/][Magit]] and wraps the [[https://github.com/jj-vcs/jj][Jujutsu]] VCS. * Contributing Issues and pull requests welcome at https://github.com/0WD0/majutsu
Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.
Emacs Lisp
100.0%
Majutsu! Magit for jujutsu
See the code#+html: <p align="center"><a href="https://majutsu.org"><img src="docs/site/public/og.png" alt="Majutsu — Shape history without leaving Emacs" width="720"></a></p> Majutsu provides a Magit-style interface for [[https://github.com/jj-vcs/jj][Jujutsu (jj)]], offering an efficient way to interact with JJ repositories from within Emacs. [[file:docs/majutsu.org][Read the full manual]] for comprehensive documentation. * Quick Start ** Installation #+begin_src emacs-lisp ;; 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")) #+end_src ** Usage 1. Open a JJ repository: ~M-x majutsu~ (or ~majutsu-log~) 2. Navigate: vanilla bindings use ~n~ / ~p~ for next/previous revision; Evil uses ~C-j~ / ~C-k~ or ~gj~ / ~gk~ for section navigation. In log buffers, ~[~ / ~]~ jump to visible parents/children 3. Act: ~RET~ to visit, ~?~ for help 4. In blob buffers, press ~e~ to enter editable mode; save applies via =jj diffedit= (~i~ in Evil also enters editable mode) 5. In blob buffers, press ~b~ to annotate; ~C-c m~ opens the blob in Magit ** Optional Forge Integration If [[https://github.com/magit/forge][Forge]] is installed, enable Majutsu integration with: #+begin_src emacs-lisp (require 'majutsu-forge) (majutsu-forge-mode 1) #+end_src 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. ** Optional Embark Integration When [[https://github.com/oantolin/embark][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. ** Essential Keybindings | 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 | * Requirements - Emacs 29.1+ - [[https://github.com/jj-vcs/jj][Jujutsu (jj)]] v0.41.0+ - [[https://magit.vc/][magit]] 4.4.0+, [[https://github.com/magit/transient][transient]] 0.8.7+, [[https://github.com/emacs-compat/compat][compat]] - [[https://github.com/minad/consult][consult]] 1.0+ and [[https://github.com/alphapapa/plz.el][plz]] 0.9.1+ (Gerrit completion) - [[https://github.com/magit/with-editor][with-editor]] (pulled in via magit; message editing) * Documentation - [[file:docs/majutsu.org][User Manual]] - Complete guide to all features - [[file:NEWS.org][NEWS]] - Version history and changelog - [[file:THIRD_PARTY_NOTICES.org][Third-Party Notices]] - Upstream adaptation and attribution map - [[file:LICENSE-MIT][Legacy MIT Notice]] - Retained MIT attribution text for pre-GPL code * License - Current: [[file:LICENSE][GNU GPL v3 or later]] - Historical notice: [[file:LICENSE-MIT][MIT notice text]] retained for pre-GPL distributions * Credits Majutsu began as a fork of [[https://github.com/bolivier/jj-mode.el][jj-mode.el]] by Brandon Olivier. It depends on and draws inspiration from [[https://magit.vc/][Magit]] and wraps the [[https://github.com/jj-vcs/jj][Jujutsu]] VCS. * Contributing Issues and pull requests welcome at https://github.com/0WD0/majutsu
Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.
Emacs Lisp
100.0%