feat(ediff): add majutsu-ediff integration#26
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This pull request adds Ediff integration and conflict resolution support to Majutsu, an Emacs interface for the Jujutsu (jj) version control system. The changes replace the previous majutsu-diffedit functionality with a more comprehensive ediff-based solution and add native support for parsing and highlighting JJ-style conflict markers.
Changes:
- Adds
majutsu-ediff.elwith ediff integration for comparing revisions, resolving conflicts, and interactive diffedit - Adds
majutsu-conflict.elwith parser and minor mode for JJ-style conflict markers (diff, snapshot, and git styles) - Refactors selection clearing logic across multiple transient commands to use centralized
majutsu-selection-clear - Removes old diffedit implementations and updates transient menus
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| majutsu-ediff.el | New file providing ediff integration for revision comparison and conflict resolution |
| majutsu-conflict.el | New file with conflict marker parser, font-lock support, and minor mode for JJ conflicts |
| test/majutsu-ediff-test.el | Test suite for ediff diff range parsing |
| test/majutsu-conflict-test.el | Comprehensive tests for conflict parsing and font-lock |
| majutsu.el | Updates transient menu to use new ediff command, adds requires for new modules |
| majutsu-diff.el | Removes old diffedit functions, adds conflict resolution command, fixes section type bug |
| majutsu-evil.el | Adds evil keybindings for conflict mode |
| majutsu-file.el | Removes circular dependency, adds file reading utilities |
| majutsu-squash.el | Refactors to use centralized selection clearing, updates selection faces |
| majutsu-split.el | Refactors file selection to use transient-files, removes custom fileset logic |
| majutsu-restore.el | Refactors file selection similarly to split |
| majutsu-rebase.el | Updates selection faces for consistency |
| majutsu-new.el | Consolidates selection clearing |
| majutsu-duplicate.el | Consolidates selection clearing |
| majutsu-log.el | Refactors file path handling to use transient-files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| For conflicts with more than 2 sides, fall back to `majutsu-conflict'." | ||
| (interactive) | ||
| (let* ((file (or file | ||
| (majutsu-file-at-point) |
There was a problem hiding this comment.
Function majutsu-file-at-point is not defined anywhere in the codebase. This should likely be majutsu-section-file-at-point which is defined in majutsu-section.el.
| (defun majutsu-ediff-resolve-with-conflict () | ||
| "Resolve conflicts using `majutsu-conflict-mode'." | ||
| (interactive) | ||
| (let* ((file (or (majutsu-file-at-point) |
There was a problem hiding this comment.
Function majutsu-file-at-point is not defined anywhere in the codebase. This should likely be majutsu-section-file-at-point which is defined in majutsu-section.el.
| :class 'transient-files | ||
| :key "--" | ||
| :argument "--" | ||
| :prompt "Limit to file,s: " |
There was a problem hiding this comment.
Typo in prompt string: "file,s" should be "files"
| :prompt "Limit to file,s: " | |
| :prompt "Limit to files: " |
| :class 'transient-files | ||
| :key "--" | ||
| :argument "--" | ||
| :prompt "Limit to file,s: " |
There was a problem hiding this comment.
Typo in prompt string: "file,s" should be "files"
| :prompt "Limit to file,s: " | |
| :prompt "Limit to files: " |
| :class 'transient-files | ||
| :key "--" | ||
| :argument "--" | ||
| :prompt "Limit to file,s: " |
There was a problem hiding this comment.
Typo in prompt string: "file,s" should be "files"
| :prompt "Limit to file,s: " | |
| :prompt "Limit to files: " |
| (majutsu-ediff-show-revision (majutsu--normalize-id-value (oref it value)))) | ||
| (t | ||
| (let* ((range (majutsu-ediff--current-range)) | ||
| (file (majutsu-file-at-point))) |
There was a problem hiding this comment.
Function majutsu-file-at-point is not defined anywhere in the codebase. This should likely be majutsu-section-file-at-point which is defined in majutsu-section.el and handles file sections properly.
| (file (majutsu-file-at-point))) | |
| (file (majutsu-section-file-at-point))) |
85f042d to
db956a1
Compare
0e8d69b to
86d0e98
Compare
db956a1 to
dca9db8
Compare
dca9db8 to
389975a
Compare
65c2f16 to
e8a59a7
Compare
389975a to
5f0afa0
Compare
5f0afa0 to
f1a722f
Compare
f1a722f to
22205bd
Compare
07bcfaa to
d3c5664
Compare
d3c5664 to
7aef861
Compare
7aef861 to
e6e96e8
Compare
4c70f48 to
9523da8
Compare
e6e96e8 to
e290101
Compare
e290101 to
0d6a949
Compare
0d6a949 to
6566835
Compare
6566835 to
117b817
Compare
- Add transient-files argument for filesets in diff, log, restore, split - Unify clear-selections to majutsu-selection-clear - Add majutsu-read-files for file completion
- Add majutsu-conflict.el for parsing jj conflict markers - Support diff, snapshot, and git conflict styles - Add font-lock highlighting for conflict regions - Add smerge integration for conflict resolution - Add evil keybindings for conflict navigation - Add majutsu-conflict-test.el
- Add majutsu-ediff.el for ediff-based conflict resolution - Parse conflicted file list from jj status - Support ediff sessions for resolving conflicts
117b817 to
2b1885e
Compare
No description provided.