IntelliJ IDEAをJujutsuのマージツールとして使用する時の挙動を修正するプラグインを作ったよ

2026/06/05 10:09公開
2026/06/05 11:27最終更新

本記事は以下の続編です。

Jujutsuのマージコンフリクト解決ツールとして IntelliJ IDEA を使用する方法(macOS)

上の記事で紹介した方法で、JujutsuのマージツールとしてIDEAを使用することができるようになりました。しかし、UIのボタンでマージ後のファイルが保存できない場合があったり、余計な警告ダイアログが出てきたりと、割と致命的な問題(端的に言えばバグ)が多いです。それらをなんとか解決しようとClaudeさんと話していたところ、「プラグインで解決できるのでは・・・?」 と思い至り、Claude Codeを駆使して作ってみました。

Table of Contents
  1. IDE(2026.1.2現在)側の問題点
  2. 作成したプラグイン

IDE(2026.1.2現在)側の問題点

まずは問題を整理します。

  • マージダイアログを開くたびに、プロジェクト外ファイル編集の確認ダイアログが表示される
    Non-Project Files Protection dialog
    ↑これ
  • 書き込み処理のスレッドの関係で、例外が発生する
    • どうやら、最近プラットフォーム側のスレッディングの方法が変更されたらしく、古い方法で処理を行うと例外が発生する場合があるようです。
  • --waitを位置引数と誤認識する
    • プロセス終了まで待機させるために、Toolboxが生成するスクリプトに渡す--waitオプションは、macOSではopenコマンドに渡されます。しかし、そのスクリプトはそのオプションも含めてIDE側に伝搬しているようで、mergeサブコマンドはそれをファイルパスと誤認識します。そのため、直接openコマンドを使用した場合には発生しません。

作成したプラグイン

というわけで、作って公開しました。

https://plugins.jetbrains.com/plugin/32006-merge-cli-fixer

こちらをインストールすると、idea mergexというサブコマンドが追加されます。Jujutsuでは~/.config/jj/config.tomlに以下のように設定することで、マージツールとして機能します。

[ui]
merge-editor = "idea"

[merge-tools.idea]
program = "idea"
merge-args = ["mergex", "--wait", "$left", "$right", "$base", "$output"]

Toolbox側の設定で、スクリプトの生成がONになっていることを確認してください。

この状態で、jj resolveを実行すると・・・

マージダイアログが表示されている

マージダイアログが表示されました🎉 解決してApplyすると・・・

ターミナルでコンフリクトが解決できた表示がある

正しく解決できたことが分かります。